Skip to content

Commit 4aa4b86

Browse files
gateway: unescape projectRef in commit status and run webhook deliveries api
* The projectRef must be unescaped in commit status and run webhook deliveries api. * Add related tests.
1 parent 431c8d5 commit 4aa4b86

File tree

5 files changed

+225
-145
lines changed

5 files changed

+225
-145
lines changed

Diff for: internal/services/gateway/api/commitstatusdelivery.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package api
1616

1717
import (
1818
"net/http"
19+
"net/url"
1920

2021
"github.com/gorilla/mux"
2122
"github.com/rs/zerolog"
@@ -63,7 +64,10 @@ func (h *ProjectCommitStatusDeliveries) do(w http.ResponseWriter, r *http.Reques
6364
query := r.URL.Query()
6465

6566
vars := mux.Vars(r)
66-
projectRef := vars["projectref"]
67+
projectRef, err := url.PathUnescape(vars["projectref"])
68+
if err != nil {
69+
return nil, util.NewAPIErrorWrap(util.ErrBadRequest, err)
70+
}
6771

6872
ropts, err := parseRequestOptions(r)
6973
if err != nil {
@@ -120,14 +124,17 @@ func (h *ProjectCommitStatusRedelivery) do(r *http.Request) error {
120124
ctx := r.Context()
121125

122126
vars := mux.Vars(r)
123-
projectRef := vars["projectref"]
127+
projectRef, err := url.PathUnescape(vars["projectref"])
128+
if err != nil {
129+
return util.NewAPIErrorWrap(util.ErrBadRequest, err)
130+
}
124131
commitStatusDeliveryID := vars["commitstatusdeliveryid"]
125132

126133
areq := &action.ProjectCommitStatusRedeliveryRequest{
127134
ProjectRef: projectRef,
128135
CommitStatusDeliveryID: commitStatusDeliveryID,
129136
}
130-
err := h.ah.ProjectCommitStatusRedelivery(ctx, areq)
137+
err = h.ah.ProjectCommitStatusRedelivery(ctx, areq)
131138
if err != nil {
132139
return errors.WithStack(err)
133140
}

Diff for: internal/services/gateway/api/runwebhookdelivery.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package api
1616

1717
import (
1818
"net/http"
19+
"net/url"
1920

2021
"github.com/gorilla/mux"
2122
"github.com/rs/zerolog"
@@ -64,7 +65,10 @@ func (h *ProjectRunWebhookDeliveries) do(w http.ResponseWriter, r *http.Request)
6465
query := r.URL.Query()
6566

6667
vars := mux.Vars(r)
67-
projectRef := vars["projectref"]
68+
projectRef, err := url.PathUnescape(vars["projectref"])
69+
if err != nil {
70+
return nil, util.NewAPIErrorWrap(util.ErrBadRequest, err)
71+
}
6872

6973
ropts, err := parseRequestOptions(r)
7074
if err != nil {
@@ -121,14 +125,17 @@ func (h *ProjectRunWebhookRedelivery) do(r *http.Request) error {
121125
ctx := r.Context()
122126

123127
vars := mux.Vars(r)
124-
projectRef := vars["projectref"]
128+
projectRef, err := url.PathUnescape(vars["projectref"])
129+
if err != nil {
130+
return util.NewAPIErrorWrap(util.ErrBadRequest, err)
131+
}
125132
runWebhookDeliveryID := vars["runwebhookdeliveryid"]
126133

127134
areq := &action.ProjectRunWebhookRedeliveryRequest{
128135
ProjectRef: projectRef,
129136
RunWebhookDeliveryID: runWebhookDeliveryID,
130137
}
131-
err := h.ah.ProjectRunWebhookRedelivery(ctx, areq)
138+
err = h.ah.ProjectRunWebhookRedelivery(ctx, areq)
132139
if err != nil {
133140
return errors.WithStack(err)
134141
}

Diff for: services/gateway/client/client.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ func (c *Client) GetProjectRunWebhookDeliveries(ctx context.Context, projectRef
856856
}
857857

858858
func (c *Client) ProjectRunWebhookRedelivery(ctx context.Context, projectRef string, runWebhookDeliveryID string) (*Response, error) {
859-
return c.getResponse(ctx, "PUT", fmt.Sprintf("/projects/%s/runwebhookdeliveries/%s/redelivery", projectRef, runWebhookDeliveryID), nil, jsonContent, nil)
859+
return c.getResponse(ctx, "PUT", fmt.Sprintf("/projects/%s/runwebhookdeliveries/%s/redelivery", url.PathEscape(projectRef), runWebhookDeliveryID), nil, jsonContent, nil)
860860
}
861861

862862
func (c *Client) GetProjectCommitStatusDeliveries(ctx context.Context, projectRef string, opts *DeliveriesOptions) ([]*gwapitypes.CommitStatusDeliveryResponse, *Response, error) {
@@ -869,5 +869,5 @@ func (c *Client) GetProjectCommitStatusDeliveries(ctx context.Context, projectRe
869869
}
870870

871871
func (c *Client) ProjectCommitStatusRedelivery(ctx context.Context, projectRef string, commitStatusDeliveryID string) (*Response, error) {
872-
return c.getResponse(ctx, "PUT", fmt.Sprintf("/projects/%s/commitstatusdeliveries/%s/redelivery", projectRef, commitStatusDeliveryID), nil, jsonContent, nil)
872+
return c.getResponse(ctx, "PUT", fmt.Sprintf("/projects/%s/commitstatusdeliveries/%s/redelivery", url.PathEscape(projectRef), commitStatusDeliveryID), nil, jsonContent, nil)
873873
}

0 commit comments

Comments
 (0)