package api import ( "encoding/json" "net/http" "github.com/go-chi/chi/v5" ) type PatchImpl interface { Summary(*PatchSummaryReq) (*PatchSummaryResp, error) View(*PatchViewReq) (*PatchViewResp, error) List(*PatchListReq) (*PatchListResp, error) ListPrefix(*PatchListPrefixReq) (*PatchListPrefixResp, error) Status() *PingResp } type PatchSummaryReq struct{} type PatchSummaryResp struct{} type PatchViewReq struct{} type PatchViewResp struct{} type PatchSummaryBatchReq struct{} type PatchSummaryBatchResp struct{} type PatchListReq struct{} type PatchListResp struct{} type PatchListPrefixReq struct{} type PatchListPrefixResp struct{} func (a *ApiHandler) RoutePatch(r chi.Router) { //search r.Get("/file/{packagename}/{version}", func(w http.ResponseWriter, r *http.Request) { req := &PatchSummaryReq{} returnJson(w, req, a.patch.Summary) }) r.Get("/file/{packagename}/{version}/*", func(w http.ResponseWriter, r *http.Request) { req := &PatchViewReq{} returnJson(w, req, a.patch.View) }) //list r.Get("/list", func(w http.ResponseWriter, r *http.Request) { req := &PatchListReq{} returnJson(w, req, a.patch.List) }) r.Get("/prefix/{prefix}", func(w http.ResponseWriter, r *http.Request) { req := &PatchListPrefixReq{} returnJson(w, req, a.patch.ListPrefix) }) // status r.Get("/ping", func(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(a.patch.Status()) }) }