MCPcopy Create free account
hub / github.com/easyp-tech/server / ServeHTTP

Method ServeHTTP

internal/connect/commits.go:94–243  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

92}
93
94func (h *commitServiceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
95 if r.Method != http.MethodPost {
96 h.logHandlerError(r, w, "method not allowed", http.StatusMethodNotAllowed)
97 return
98 }
99
100 body, err := io.ReadAll(r.Body)
101 if err != nil {
102 h.badRequest(r, w, "reading body", slog.String("read_error", err.Error()))
103 return
104 }
105
106 refs := parseResourceRefs(body)
107 isV1 := !strings.Contains(r.URL.Path, "v1beta1")
108 h.hlog(r).LogAttrs(r.Context(), slog.LevelInfo, "handler decision",
109 slog.String("handler", "ServeHTTP"),
110 slog.String("procedure", "CommitService/GetCommits"),
111 slog.String("protocol", protocolLabel(isV1)),
112 slog.Int("refs", len(refs)),
113 slog.Int("body_bytes", len(body)),
114 )
115 if len(refs) == 0 {
116 h.badRequest(r, w, "no resource refs", slog.Int("body_bytes", len(body)))
117 return
118 }
119
120 type commitInfo struct {
121 ownerID string
122 moduleID string
123 commitID string
124 digest []byte
125 }
126 commits := make([]commitInfo, 0, len(refs))
127 for _, ref := range refs {
128 h.hlog(r).LogAttrs(r.Context(), slog.LevelInfo, "handler decision",
129 slog.String("handler", "ServeHTTP"),
130 slog.String("procedure", "CommitService/GetCommits"),
131 slog.String("branch", "resolve_meta"),
132 slog.String("owner", ref.owner),
133 slog.String("module", ref.module),
134 slog.String("repo", ref.module),
135 )
136 meta, err := h.api.repo.GetMeta(r.Context(), ref.owner, ref.module, "")
137 if err != nil {
138 h.upstreamError(r, w, fmt.Sprintf("resolving %s/%s", ref.owner, ref.module),
139 slog.String("owner", ref.owner), slog.String("module", ref.module),
140 slog.String("repo", ref.module),
141 slog.String("upstream_error", err.Error()))
142 return
143 }
144 cid := commitUUID(meta.Commit)
145 h.hlog(r).LogAttrs(r.Context(), slog.LevelInfo, "handler decision",
146 slog.String("handler", "ServeHTTP"),
147 slog.String("procedure", "CommitService/GetCommits"),
148 slog.String("branch", "compute_digest"),
149 slog.String("owner", ref.owner),
150 slog.String("module", ref.module),
151 slog.String("repo", ref.module),

Calls 15

logHandlerErrorMethod · 0.95
badRequestMethod · 0.95
hlogMethod · 0.95
upstreamErrorMethod · 0.95
computeB4DigestMethod · 0.95
parseResourceRefsFunction · 0.85
protocolLabelFunction · 0.85
commitUUIDFunction · 0.85
toB5DigestFunction · 0.85
ErrorMethod · 0.80
UnlockMethod · 0.80
WriteMethod · 0.80

Tested by

no test coverage detected