From e3928cc92f9c239eecd17e7692e1ccfd41945943 Mon Sep 17 00:00:00 2001 From: Alessio Date: Sat, 26 Aug 2023 16:50:15 -0300 Subject: [PATCH] Search bar redirects to user feed if you search '@somehandle' --- internal/webserver/handler_search.go | 5 +++++ internal/webserver/server_test.go | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/webserver/handler_search.go b/internal/webserver/handler_search.go index 7a0005f..a46a8b2 100644 --- a/internal/webserver/handler_search.go +++ b/internal/webserver/handler_search.go @@ -26,6 +26,11 @@ func (app *Application) Search(w http.ResponseWriter, r *http.Request) { return } + // Handle "@username" + if search_text[0] == '@' { + http.Redirect(w, r, fmt.Sprintf("/%s", search_text[1:]), 302) + } + c, err := persistence.NewCursorFromSearchQuery(search_text) if err != nil { app.error_400_with_message(w, err.Error()) diff --git a/internal/webserver/server_test.go b/internal/webserver/server_test.go index ae5f781..95651bc 100644 --- a/internal/webserver/server_test.go +++ b/internal/webserver/server_test.go @@ -168,7 +168,6 @@ func TestTimelineWithCursorBadNumber(t *testing.T) { func TestSearchQueryStringRedirect(t *testing.T) { assert := assert.New(t) - // With a cursor but it sucks resp := do_request(httptest.NewRequest("GET", "/search?q=asdf", nil)) assert.Equal(resp.StatusCode, 302) assert.Equal(resp.Header.Get("Location"), "/search/asdf") @@ -209,6 +208,14 @@ func TestSearchWithCursor(t *testing.T) { assert.Len(cascadia.QueryAll(root, selector(".timeline > .tweet")), 2) } +func TestSearchRedirectOnUserHandle(t *testing.T) { + assert := assert.New(t) + + resp := do_request(httptest.NewRequest("GET", fmt.Sprintf("/search/%s", url.PathEscape("@somebody")), nil)) + assert.Equal(resp.StatusCode, 302) + assert.Equal(resp.Header.Get("Location"), "/somebody") +} + // Tweet Detail page // -----------------