diff --git a/internal/services/gateway/action/remotesource.go b/internal/services/gateway/action/remotesource.go index 251e520..167fffa 100644 --- a/internal/services/gateway/action/remotesource.go +++ b/internal/services/gateway/action/remotesource.go @@ -23,6 +23,28 @@ import ( "github.com/pkg/errors" ) +func (h *ActionHandler) GetRemoteSource(ctx context.Context, rsRef string) (*types.RemoteSource, error) { + rs, resp, err := h.configstoreClient.GetRemoteSource(ctx, rsRef) + if err != nil { + return nil, ErrFromRemote(resp, err) + } + return rs, nil +} + +type GetRemoteSourcesRequest struct { + Start string + Limit int + Asc bool +} + +func (h *ActionHandler) GetRemoteSources(ctx context.Context, req *GetRemoteSourcesRequest) ([]*types.RemoteSource, error) { + remoteSources, resp, err := h.configstoreClient.GetRemoteSources(ctx, req.Start, req.Limit, req.Asc) + if err != nil { + return nil, ErrFromRemote(resp, err) + } + return remoteSources, nil +} + type CreateRemoteSourceRequest struct { Name string APIURL string @@ -82,3 +104,11 @@ func (h *ActionHandler) CreateRemoteSource(ctx context.Context, req *CreateRemot return rs, nil } + +func (h *ActionHandler) DeleteRemoteSource(ctx context.Context, rsRef string) error { + resp, err := h.configstoreClient.DeleteRemoteSource(ctx, rsRef) + if err != nil { + return ErrFromRemote(resp, errors.Wrapf(err, "failed to delete remote source")) + } + return nil +} diff --git a/internal/services/gateway/api/remotesource.go b/internal/services/gateway/api/remotesource.go index 2033a87..9193d31 100644 --- a/internal/services/gateway/api/remotesource.go +++ b/internal/services/gateway/api/remotesource.go @@ -20,7 +20,6 @@ import ( "strconv" "github.com/pkg/errors" - csapi "github.com/sorintlab/agola/internal/services/configstore/api" "github.com/sorintlab/agola/internal/services/gateway/action" "github.com/sorintlab/agola/internal/services/types" "github.com/sorintlab/agola/internal/util" @@ -93,12 +92,12 @@ func createRemoteSourceResponse(r *types.RemoteSource) *RemoteSourceResponse { } type RemoteSourceHandler struct { - log *zap.SugaredLogger - configstoreClient *csapi.Client + log *zap.SugaredLogger + ah *action.ActionHandler } -func NewRemoteSourceHandler(logger *zap.Logger, configstoreClient *csapi.Client) *RemoteSourceHandler { - return &RemoteSourceHandler{log: logger.Sugar(), configstoreClient: configstoreClient} +func NewRemoteSourceHandler(logger *zap.Logger, ah *action.ActionHandler) *RemoteSourceHandler { + return &RemoteSourceHandler{log: logger.Sugar(), ah: ah} } func (h *RemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { @@ -106,8 +105,8 @@ func (h *RemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) vars := mux.Vars(r) rsRef := vars["remotesourceref"] - rs, resp, err := h.configstoreClient.GetRemoteSource(ctx, rsRef) - if httpErrorFromRemote(w, resp, err) { + rs, err := h.ah.GetRemoteSource(ctx, rsRef) + if httpError(w, err) { h.log.Errorf("err: %+v", err) return } @@ -119,17 +118,16 @@ func (h *RemoteSourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) } type RemoteSourcesHandler struct { - log *zap.SugaredLogger - configstoreClient *csapi.Client + log *zap.SugaredLogger + ah *action.ActionHandler } -func NewRemoteSourcesHandler(logger *zap.Logger, configstoreClient *csapi.Client) *RemoteSourcesHandler { - return &RemoteSourcesHandler{log: logger.Sugar(), configstoreClient: configstoreClient} +func NewRemoteSourcesHandler(logger *zap.Logger, ah *action.ActionHandler) *RemoteSourcesHandler { + return &RemoteSourcesHandler{log: logger.Sugar(), ah: ah} } func (h *RemoteSourcesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ctx := r.Context() - query := r.URL.Query() limitS := query.Get("limit") @@ -156,8 +154,13 @@ func (h *RemoteSourcesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) start := query.Get("start") - csRemoteSources, resp, err := h.configstoreClient.GetRemoteSources(ctx, start, limit, asc) - if httpErrorFromRemote(w, resp, err) { + areq := &action.GetRemoteSourcesRequest{ + Start: start, + Limit: limit, + Asc: asc, + } + csRemoteSources, err := h.ah.GetRemoteSources(ctx, areq) + if httpError(w, err) { h.log.Errorf("err: %+v", err) return } diff --git a/internal/services/gateway/gateway.go b/internal/services/gateway/gateway.go index 03a8286..1502f2b 100644 --- a/internal/services/gateway/gateway.go +++ b/internal/services/gateway/gateway.go @@ -177,9 +177,9 @@ func (g *Gateway) Run(ctx context.Context) error { createUserTokenHandler := api.NewCreateUserTokenHandler(logger, g.ah) deleteUserTokenHandler := api.NewDeleteUserTokenHandler(logger, g.ah) - remoteSourceHandler := api.NewRemoteSourceHandler(logger, g.configstoreClient) + remoteSourceHandler := api.NewRemoteSourceHandler(logger, g.ah) createRemoteSourceHandler := api.NewCreateRemoteSourceHandler(logger, g.ah) - remoteSourcesHandler := api.NewRemoteSourcesHandler(logger, g.configstoreClient) + remoteSourcesHandler := api.NewRemoteSourcesHandler(logger, g.ah) orgHandler := api.NewOrgHandler(logger, g.ah) orgsHandler := api.NewOrgsHandler(logger, g.ah)