From c5d0b215698d0283e9359126ceab712f114fa7be Mon Sep 17 00:00:00 2001 From: Nikolai S <116316784+ns4plabs@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:06:07 +0200 Subject: [PATCH] fix(route): handle /api/v0/name/resolve/arg (#63) * legacy rpc: handle /api/v0/name/resolve/ * refactor: test arg in path alone Co-authored-by: Marcin Rataj --- handler_test.go | 1 + handlers.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/handler_test.go b/handler_test.go index 2db09ac..959bc31 100644 --- a/handler_test.go +++ b/handler_test.go @@ -54,6 +54,7 @@ func TestRPCRedirectsToKubo(t *testing.T) { tests := []rpcRedirectTest{ {"/api/v0/name/resolve?arg=some-arg", "http://example.com/api/v0/name/resolve?arg=some-arg", http.StatusTemporaryRedirect}, + {"/api/v0/name/resolve/some-arg", "http://example.com/api/v0/name/resolve/some-arg", http.StatusTemporaryRedirect}, {"/api/v0/resolve?arg=some-arg", "http://example.com/api/v0/resolve?arg=some-arg", http.StatusTemporaryRedirect}, {"/api/v0/dag/resolve?arg=some-arg", "http://example.com/api/v0/dag/resolve?arg=some-arg", http.StatusTemporaryRedirect}, {"/api/v0/dns?arg=some-arg", "http://example.com/api/v0/dns?arg=some-arg", http.StatusTemporaryRedirect}, diff --git a/handlers.go b/handlers.go index d422636..5834aa1 100644 --- a/handlers.go +++ b/handlers.go @@ -253,12 +253,16 @@ func newKuboRPCHandler(endpoints []string) http.Handler { redirectToKubo := func(w http.ResponseWriter, r *http.Request) { // Naively choose one of the Kubo RPC clients. endpoint := endpoints[rand.Intn(len(endpoints))] - url := endpoint + r.URL.Path + "?" + r.URL.RawQuery + url := endpoint + r.URL.Path + if r.URL.RawQuery != "" { + url += "?" + r.URL.RawQuery + } goLog.Debugw("api request redirected to kubo", "url", r.URL, "redirect", url) http.Redirect(w, r, url, http.StatusTemporaryRedirect) } mux.HandleFunc("/api/v0/name/resolve", redirectToKubo) + mux.HandleFunc("/api/v0/name/resolve/", redirectToKubo) mux.HandleFunc("/api/v0/resolve", redirectToKubo) mux.HandleFunc("/api/v0/dag/resolve", redirectToKubo) mux.HandleFunc("/api/v0/dns", redirectToKubo)