MCPcopy Create free account
hub / github.com/ericls/imgdd / MakeServer

Function MakeServer

httpserver/make_server.go:56–165  ·  view source on GitHub ↗
(
	conf *HttpServerConfigDef,
	dbConf *db.DBConfigDef,
	storageConf *storage.StorageConfigDef,
	emailConf *email.EmailConfigDef,
	cleanupConf *storage.CleanupConfig,
)

Source from the content-addressed store, hash-verified

54}
55
56func MakeServer(
57 conf *HttpServerConfigDef,
58 dbConf *db.DBConfigDef,
59 storageConf *storage.StorageConfigDef,
60 emailConf *email.EmailConfigDef,
61 cleanupConf *storage.CleanupConfig,
62) *http.Server {
63
64 conn := db.GetConnection(dbConf)
65 db.PopulateBuiltInRoles(dbConf)
66
67 appRouter := mux.NewRouter()
68 appRouter.StrictSlash(true)
69 sessionHeaderName := "x-session-token"
70 sessionPersister := persister.NewSessionPersister(conf.RedisURIForSession, nil, nil, &sessionHeaderName)
71 appRouter.Use(sessionPersister.Middleware)
72 appRouter.Use(RWContextMiddleware) // This should come after SessionMiddleware
73
74 identityRepo := identity.NewDBIdentityRepo(conn)
75 storageDefRepo := storageConf.MakeStorageDefRepo()
76 storedImageRepo := storage.NewDBStoredImageRepo(conn)
77 imageRepo := image.NewDBImageRepo(conn)
78 imageRelRepo := image.NewDBImageRelationshipRepo(conn)
79 appRouter.Use(graph.NewLoadersMiddleware(identityRepo, storageDefRepo, storedImageRepo, imageRepo, imageRelRepo))
80 identityManager := NewIdentityManager(identityRepo, sessionPersister)
81
82 getEmailBackend := func(c context.Context) email.EmailBackend {
83 backend, err := email.GetEmailBackendFromConfig(emailConf)
84 if err != nil {
85 panic(err)
86 }
87 return backend
88 }
89
90 captchaClient := captcha.MakeClient(conf.CaptchaProvider, conf.RecaptchaServerKey, conf.TurnstileSecretKey)
91
92 gqlResolver := NewGqlResolver(
93 conn,
94 identityManager,
95 storageDefRepo,
96 storedImageRepo,
97 imageRepo,
98 imageRelRepo,
99 conf.ImageDomain,
100 conf.DefaultURLFormat,
101 getEmailBackend,
102 conf.SessionKey,
103 captchaClient,
104 conf.AllowNewUser,
105 conf.ImageMaxUploadBytes,
106 conf.GuestImageMaxUploadBytes,
107 )
108
109 uploadLimiter := ratelimit.NewRateLimiter(5, 5)
110 go uploadLimiter.Cleanup()
111
112 if cleanupConf != nil && cleanupConf.Enabled {
113 redisClient := redis.NewClient(&redis.Options{

Callers 1

mainFunction · 0.92

Calls 15

CleanupMethod · 0.95
GetConnectionFunction · 0.92
PopulateBuiltInRolesFunction · 0.92
NewSessionPersisterFunction · 0.92
NewDBIdentityRepoFunction · 0.92
NewDBStoredImageRepoFunction · 0.92
NewDBImageRepoFunction · 0.92
NewLoadersMiddlewareFunction · 0.92
MakeClientFunction · 0.92
NewRateLimiterFunction · 0.92

Tested by

no test coverage detected