feat: return open account

This commit is contained in:
Thalles 2023-10-08 21:58:48 -03:00
parent 87180a4cfc
commit c8ad9a0410
5 changed files with 29 additions and 22 deletions

View file

@ -82,7 +82,7 @@ scraper.IsLoggedIn()
If you don't want to use your account, you can try login as a Twitter app: If you don't want to use your account, you can try login as a Twitter app:
```golang ```golang
err := scraper.LoginOpenAccount() account, err := scraper.LoginOpenAccount()
``` ```
### Get user tweets ### Get user tweets
@ -98,7 +98,7 @@ import (
func main() { func main() {
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() account, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
panic(err) panic(err)
} }

31
auth.go
View file

@ -26,6 +26,11 @@ const (
) )
type ( type (
OpenAccount struct {
OAuthToken string `json:"oauth_token"`
OAuthTokenSecret string `json:"oauth_token_secret"`
}
flow struct { flow struct {
Errors []struct { Errors []struct {
Code int `json:"code"` Code int `json:"code"`
@ -34,11 +39,8 @@ type (
FlowToken string `json:"flow_token"` FlowToken string `json:"flow_token"`
Status string `json:"status"` Status string `json:"status"`
Subtasks []struct { Subtasks []struct {
SubtaskID string `json:"subtask_id"` SubtaskID string `json:"subtask_id"`
OpenAccount struct { OpenAccount OpenAccount `json:"open_account"`
OAuthToken string `json:"oauth_token"`
OAuthTokenSecret string `json:"oauth_token_secret"`
} `json:"open_account"`
} `json:"subtasks"` } `json:"subtasks"`
} }
@ -296,16 +298,16 @@ func (s *Scraper) Login(credentials ...string) error {
} }
// LoginOpenAccount as Twitter app // LoginOpenAccount as Twitter app
func (s *Scraper) LoginOpenAccount() error { func (s *Scraper) LoginOpenAccount() (OpenAccount, error) {
accessToken, err := s.getAccessToken(appConsumerKey, appConsumerSecret) accessToken, err := s.getAccessToken(appConsumerKey, appConsumerSecret)
if err != nil { if err != nil {
return err return OpenAccount{}, err
} }
s.setBearerToken(accessToken) s.setBearerToken(accessToken)
err = s.GetGuestToken() err = s.GetGuestToken()
if err != nil { if err != nil {
return err return OpenAccount{}, err
} }
// flow start // flow start
@ -320,7 +322,7 @@ func (s *Scraper) LoginOpenAccount() error {
} }
flowToken, err := s.getFlowToken(data) flowToken, err := s.getFlowToken(data)
if err != nil { if err != nil {
return err return OpenAccount{}, err
} }
// flow next link // flow next link
@ -334,7 +336,7 @@ func (s *Scraper) LoginOpenAccount() error {
} }
info, err := s.getFlow(data) info, err := s.getFlow(data)
if err != nil { if err != nil {
return err return OpenAccount{}, err
} }
if info.Subtasks != nil && len(info.Subtasks) > 0 { if info.Subtasks != nil && len(info.Subtasks) > 0 {
@ -342,14 +344,17 @@ func (s *Scraper) LoginOpenAccount() error {
s.oAuthToken = info.Subtasks[0].OpenAccount.OAuthToken s.oAuthToken = info.Subtasks[0].OpenAccount.OAuthToken
s.oAuthSecret = info.Subtasks[0].OpenAccount.OAuthTokenSecret s.oAuthSecret = info.Subtasks[0].OpenAccount.OAuthTokenSecret
if s.oAuthToken == "" || s.oAuthSecret == "" { if s.oAuthToken == "" || s.oAuthSecret == "" {
return fmt.Errorf("auth error: %v", "Token or Secret is empty") return OpenAccount{}, fmt.Errorf("auth error: %v", "Token or Secret is empty")
} }
s.isLogged = true s.isLogged = true
s.isOpenAccount = true s.isOpenAccount = true
return nil return OpenAccount{
OAuthToken: info.Subtasks[0].OpenAccount.OAuthToken,
OAuthTokenSecret: info.Subtasks[0].OpenAccount.OAuthTokenSecret,
}, nil
} }
} }
return fmt.Errorf("auth error: %v", "OpenAccount") return OpenAccount{}, fmt.Errorf("auth error: %v", "OpenAccount")
} }
// Logout is reset session // Logout is reset session

View file

@ -52,7 +52,9 @@ func TestAuth(t *testing.T) {
func TestLoginOpenAccount(t *testing.T) { func TestLoginOpenAccount(t *testing.T) {
scraper := twitterscraper.New() scraper := twitterscraper.New()
if err := scraper.LoginOpenAccount(); err != nil { _, err := scraper.LoginOpenAccount()
if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }
} }

View file

@ -31,7 +31,7 @@ func TestGetProfile(t *testing.T) {
} }
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }
@ -87,7 +87,7 @@ func TestGetProfilePrivate(t *testing.T) {
} }
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }
@ -122,7 +122,7 @@ func TestGetProfilePrivate(t *testing.T) {
func TestGetProfileErrorSuspended(t *testing.T) { func TestGetProfileErrorSuspended(t *testing.T) {
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }
@ -140,7 +140,7 @@ func TestGetProfileErrorNotFound(t *testing.T) {
neUser := "sample3123131" neUser := "sample3123131"
expectedError := fmt.Sprintf("User '%s' not found", neUser) expectedError := fmt.Sprintf("User '%s' not found", neUser)
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }
@ -156,7 +156,7 @@ func TestGetProfileErrorNotFound(t *testing.T) {
func TestGetUserIDByScreenName(t *testing.T) { func TestGetUserIDByScreenName(t *testing.T) {
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }

View file

@ -21,7 +21,7 @@ func TestGetTweets(t *testing.T) {
maxTweetsNbr := 300 maxTweetsNbr := 300
dupcheck := make(map[string]bool) dupcheck := make(map[string]bool)
scraper := twitterscraper.New() scraper := twitterscraper.New()
err := scraper.LoginOpenAccount() _, err := scraper.LoginOpenAccount()
if err != nil { if err != nil {
t.Fatalf("LoginOpenAccount() error = %v", err) t.Fatalf("LoginOpenAccount() error = %v", err)
} }