From 6c4a1cc054d6fae66600af92fafd8c16160a9167 Mon Sep 17 00:00:00 2001 From: Alexander Sheiko Date: Thu, 28 Jan 2021 11:12:20 +0200 Subject: [PATCH] Code optimization --- api.go | 31 ------------------------------- api_test.go | 11 ----------- profile.go | 17 +++++++++++++++++ profile_test.go | 11 +++++++++++ 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/api.go b/api.go index b8665fc..a5fa586 100644 --- a/api.go +++ b/api.go @@ -90,34 +90,3 @@ func (s *Scraper) GetGuestToken() error { return nil } - -// GetUserIDByScreenName from API -func (s *Scraper) GetUserIDByScreenName(screenName string) (string, error) { - id, ok := cacheIDs.Load(screenName) - if ok { - return id.(string), nil - } - - var jsn user - req, err := http.NewRequest("GET", "https://api.twitter.com/graphql/4S2ihIKfF3xhp-ENxvUAfQ/UserByScreenName?variables=%7B%22screen_name%22%3A%22"+screenName+"%22%2C%22withHighlightedLabel%22%3Atrue%7D", nil) - if err != nil { - return "", err - } - - err = s.RequestAPI(req, &jsn) - if err != nil { - return "", err - } - - if len(jsn.Errors) > 0 { - return "", fmt.Errorf("%s", jsn.Errors[0].Message) - } - - if jsn.Data.User.RestID == "" { - return "", fmt.Errorf("rest_id not found") - } - - cacheIDs.Store(screenName, jsn.Data.User.RestID) - - return jsn.Data.User.RestID, nil -} diff --git a/api_test.go b/api_test.go index d3c203b..2267a4c 100644 --- a/api_test.go +++ b/api_test.go @@ -13,14 +13,3 @@ func TestGetGuestToken(t *testing.T) { t.Error("Expected non-empty guestToken") } } - -func TestGetUserIDByScreenName(t *testing.T) { - scraper := New() - userID, err := scraper.GetUserIDByScreenName("Twitter") - if err != nil { - t.Errorf("getUserByScreenName() error = %v", err) - } - if userID == "" { - t.Error("Expected non-empty user ID") - } -} diff --git a/profile.go b/profile.go index 4b02273..36b7878 100644 --- a/profile.go +++ b/profile.go @@ -94,3 +94,20 @@ func (s *Scraper) GetProfile(username string) (Profile, error) { func GetProfile(username string) (Profile, error) { return defaultScraper.GetProfile(username) } + +// GetUserIDByScreenName from API +func (s *Scraper) GetUserIDByScreenName(screenName string) (string, error) { + id, ok := cacheIDs.Load(screenName) + if ok { + return id.(string), nil + } + + profile, err := s.GetProfile(screenName) + if err != nil { + return "", err + } + + cacheIDs.Store(screenName, profile.UserID) + + return profile.UserID, nil +} diff --git a/profile_test.go b/profile_test.go index c213fbc..fe63abf 100644 --- a/profile_test.go +++ b/profile_test.go @@ -129,3 +129,14 @@ func TestGetProfileErrorNotFound(t *testing.T) { } } } + +func TestGetUserIDByScreenName(t *testing.T) { + scraper := New() + userID, err := scraper.GetUserIDByScreenName("Twitter") + if err != nil { + t.Errorf("getUserByScreenName() error = %v", err) + } + if userID == "" { + t.Error("Expected non-empty user ID") + } +}