From 565b7eaf1ebea2f2898b21cf6917110fafa048c7 Mon Sep 17 00:00:00 2001 From: Alessio Date: Sat, 14 May 2022 14:34:36 -0700 Subject: [PATCH] Add Spaces type --- scraper/api_types.go | 5 ++++ scraper/api_types_v2_test.go | 2 +- scraper/space.go | 18 +++++++++++++ scraper/space_test.go | 27 +++++++++++++++++++ .../test_responses/tweet_content/space.json | 1 + 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 scraper/space.go create mode 100644 scraper/space_test.go create mode 100644 scraper/test_responses/tweet_content/space.json diff --git a/scraper/api_types.go b/scraper/api_types.go index 0c49a97..ff438f3 100644 --- a/scraper/api_types.go +++ b/scraper/api_types.go @@ -124,6 +124,11 @@ type APICard struct { LastUpdatedAt struct { StringValue string `json:"string_value"` } `json:"last_updated_datetime_utc"` + + // For Spaces + ID struct { + StringValue string `json:"string_value"` + } `json:"id"` } `json:"binding_values"` } diff --git a/scraper/api_types_v2_test.go b/scraper/api_types_v2_test.go index 3d633e5..f498351 100644 --- a/scraper/api_types_v2_test.go +++ b/scraper/api_types_v2_test.go @@ -13,7 +13,7 @@ import ( ) /** - * Parse an APIV2User + * Parse an APIV2User */ func TestAPIV2ParseUser(t *testing.T) { data, err := os.ReadFile("test_responses/api_v2/user_michael_malice.json") diff --git a/scraper/space.go b/scraper/space.go new file mode 100644 index 0000000..b41aab3 --- /dev/null +++ b/scraper/space.go @@ -0,0 +1,18 @@ +package scraper + +type SpaceID string + +type Space struct { + ID SpaceID + TweetID TweetID + + Url string +} + +func ParseAPISpace(apiCard APICard) Space { + ret := Space{} + ret.ID = SpaceID(apiCard.BindingValues.ID.StringValue) + ret.Url = apiCard.ShortenedUrl + + return ret +} diff --git a/scraper/space_test.go b/scraper/space_test.go new file mode 100644 index 0000000..b15208b --- /dev/null +++ b/scraper/space_test.go @@ -0,0 +1,27 @@ +package scraper_test + +import ( + "encoding/json" + "os" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + . "offline_twitter/scraper" +) + +func TestParseSpace(t *testing.T) { + assert := assert.New(t) + data, err := os.ReadFile("test_responses/tweet_content/space.json") + if err != nil { + panic(err) + } + var apiCard APICard + err = json.Unmarshal(data, &apiCard) + require.NoError(t, err) + + space := ParseAPISpace(apiCard) + assert.Equal(SpaceID("1YpKkZVyQjoxj"), space.ID) + assert.Equal("https://t.co/WBPAHNF8Om", space.Url) +} diff --git a/scraper/test_responses/tweet_content/space.json b/scraper/test_responses/tweet_content/space.json new file mode 100644 index 0000000..525b8a1 --- /dev/null +++ b/scraper/test_responses/tweet_content/space.json @@ -0,0 +1 @@ +{"name":"3691233323:audiospace","url":"https://t.co/WBPAHNF8Om","card_type_url":"http://card-type-url-is-deprecated.invalid","binding_values":{"id":{"type":"STRING","string_value":"1YpKkZVyQjoxj"},"narrow_cast_space_type":{"type":"STRING","string_value":"0"},"card_url":{"type":"STRING","string_value":"https://t.co/WBPAHNF8Om","scribe_key":"card_url"}},"card_platform":{"platform":{"device":{"name":"Swift","version":"12"},"audience":{"name":"production"}}}}