(w http.ResponseWriter, r *http.Request)
| 92 | } |
| 93 | |
| 94 | func (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), |
no test coverage detected