MCPcopy
hub / github.com/ddworken/hishtory / Run

Method Run

backend/server/internal/server/srv.go:89–143  ·  view source on GitHub ↗
(ctx context.Context, addr string)

Source from the content-addressed store, hash-verified

87}
88
89func (s *Server) Run(ctx context.Context, addr string) error {
90 mux := httptrace.NewServeMux()
91
92 if s.isProductionEnvironment {
93 defer configureObservability(mux, s.releaseVersion)()
94 go func() {
95 if err := s.db.DeepClean(ctx); err != nil {
96 fmt.Println("failed to deep clean: %w", err)
97 }
98 }()
99 }
100 middlewares := mergeMiddlewares(
101 withPanicGuard(s.statsd),
102 withLogging(s.statsd, os.Stdout),
103 )
104
105 mux.Handle("/api/v1/submit", middlewares(http.HandlerFunc(s.apiSubmitHandler)))
106 mux.Handle("/api/v1/get-dump-requests", middlewares(http.HandlerFunc(s.apiGetPendingDumpRequestsHandler)))
107 mux.Handle("/api/v1/submit-dump", middlewares(http.HandlerFunc(s.apiSubmitDumpHandler)))
108 mux.Handle("/api/v1/query", middlewares(http.HandlerFunc(s.apiQueryHandler)))
109 mux.Handle("/api/v1/bootstrap", middlewares(http.HandlerFunc(s.apiBootstrapHandler)))
110 mux.Handle("/api/v1/register", middlewares(http.HandlerFunc(s.apiRegisterHandler)))
111 mux.Handle("/api/v1/banner", middlewares(http.HandlerFunc(s.apiBannerHandler)))
112 mux.Handle("/api/v1/download", middlewares(http.HandlerFunc(s.apiDownloadHandler)))
113 mux.Handle("/api/v1/trigger-cron", middlewares(http.HandlerFunc(s.triggerCronHandler)))
114 mux.Handle("/api/v1/get-deletion-requests", middlewares(http.HandlerFunc(s.getDeletionRequestsHandler)))
115 mux.Handle("/api/v1/add-deletion-request", middlewares(http.HandlerFunc(s.addDeletionRequestHandler)))
116 mux.Handle("/api/v1/slsa-status", middlewares(http.HandlerFunc(s.slsaStatusHandler)))
117 mux.Handle("/api/v1/feedback", middlewares(http.HandlerFunc(s.feedbackHandler)))
118 mux.Handle("/api/v1/uninstall", middlewares(http.HandlerFunc(s.apiUninstallHandler)))
119 mux.Handle("/api/v1/ai-suggest", middlewares(http.HandlerFunc(s.aiSuggestionHandler)))
120 mux.Handle("/api/v1/ping", middlewares(http.HandlerFunc(s.pingHandler)))
121 mux.Handle("/healthcheck", middlewares(http.HandlerFunc(s.healthCheckHandler)))
122 mux.Handle("/internal/api/v1/usage-stats", middlewares(http.HandlerFunc(s.usageStatsHandler)))
123 mux.Handle("/internal/api/v1/stats", middlewares(http.HandlerFunc(s.statsHandler)))
124 if s.isTestEnvironment {
125 mux.Handle("/api/v1/ai-suggest-override", middlewares(http.HandlerFunc(s.testOnlyOverrideAiSuggestions)))
126 mux.Handle("/api/v1/wipe-db-entries", middlewares(http.HandlerFunc(s.wipeDbEntriesHandler)))
127 mux.Handle("/api/v1/get-num-connections", middlewares(http.HandlerFunc(s.getNumConnectionsHandler)))
128 }
129
130 httpServer := &http.Server{
131 Addr: addr,
132 Handler: mux,
133 }
134
135 fmt.Printf("Listening on %s\n", addr)
136 if err := httpServer.ListenAndServe(); err != nil {
137 if !errors.Is(err, http.ErrServerClosed) {
138 return fmt.Errorf("http.ListenAndServe: %w", err)
139 }
140 }
141
142 return nil
143}
144
145func (s *Server) UpdateReleaseVersion(v string, updateInfo shared.UpdateInfo) {
146 s.releaseVersion = v

Callers 13

mainFunction · 0.95
TestMainFunction · 0.80
TestParamFunction · 0.80
TuiQueryFunction · 0.80
TestMainFunction · 0.80
updateFunction · 0.80
stripCodeSignatureFunction · 0.80
TestMergeMiddlewaresFunction · 0.80
TestMainFunction · 0.80

Calls 5

configureObservabilityFunction · 0.85
mergeMiddlewaresFunction · 0.85
withPanicGuardFunction · 0.85
withLoggingFunction · 0.85
DeepCleanMethod · 0.80

Tested by 6

TestMainFunction · 0.64
TestParamFunction · 0.64
TestMainFunction · 0.64
TestMergeMiddlewaresFunction · 0.64
TestMainFunction · 0.64