From 392e8366895e710cfdd659ed093a057f5714fe7b Mon Sep 17 00:00:00 2001 From: Alessio Date: Mon, 9 Oct 2023 19:40:34 -0700 Subject: [PATCH] Update URL parser to handle 'x.com' links --- internal/webserver/server_test.go | 2 +- pkg/scraper/url.go | 8 +++----- pkg/scraper/url_test.go | 6 ++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/internal/webserver/server_test.go b/internal/webserver/server_test.go index dc515f2..3cf37d5 100644 --- a/internal/webserver/server_test.go +++ b/internal/webserver/server_test.go @@ -257,7 +257,7 @@ func TestSearchRedirectOnUserFeedLink(t *testing.T) { assert.Equal(resp.Header.Get("Location"), "/agsdf") // "With Replies" page - resp = do_request(httptest.NewRequest("GET", fmt.Sprintf("/search/%s", url.PathEscape("https://twitter.com/agsdf/with_replies")), nil)) + resp = do_request(httptest.NewRequest("GET", fmt.Sprintf("/search/%s", url.PathEscape("https://x.com/agsdf/with_replies")), nil)) assert.Equal(resp.StatusCode, 302) assert.Equal(resp.Header.Get("Location"), "/agsdf") diff --git a/pkg/scraper/url.go b/pkg/scraper/url.go index fb32946..db1c505 100644 --- a/pkg/scraper/url.go +++ b/pkg/scraper/url.go @@ -97,17 +97,15 @@ func get_thumbnail_local_path(remote_url string) string { ) } -/** - * Given an URL, try to parse it as a tweet url. - * The bool is an `is_ok` value; true if the parse was successful, false if it didn't match - */ +// Given an URL, try to parse it as a tweet url. +// The bool is an `is_ok` value; true if the parse was successful, false if it didn't match func TryParseTweetUrl(s string) (UserHandle, TweetID, bool) { parsed_url, err := url.Parse(s) if err != nil { return UserHandle(""), TweetID(0), false } - if parsed_url.Host != "twitter.com" && parsed_url.Host != "mobile.twitter.com" { + if parsed_url.Host != "twitter.com" && parsed_url.Host != "mobile.twitter.com" && parsed_url.Host != "x.com" { return UserHandle(""), TweetID(0), false } diff --git a/pkg/scraper/url_test.go b/pkg/scraper/url_test.go index 1843081..3ed3300 100644 --- a/pkg/scraper/url_test.go +++ b/pkg/scraper/url_test.go @@ -123,6 +123,12 @@ func TestParseTweetUrl(t *testing.T) { assert.Equal(UserHandle("APhilosophae"), handle) assert.Equal(TweetID(1497720548540964864), id) + // Test a `x.com` url + handle, id, is_ok = TryParseTweetUrl("https://x.com/brutedeforce/status/1579695139425222657?s=46") + assert.True(is_ok) + assert.Equal(UserHandle("brutedeforce"), handle) + assert.Equal(TweetID(1579695139425222657), id) + // Test invalid url _, _, is_ok = TryParseTweetUrl("https://twitter.com/NerdNoticing/status/1263192389050654720s=20") assert.False(is_ok)