mirror of
https://github.com/sstent/go-garth.git
synced 2026-03-12 19:15:21 +00:00
porting - part 4 done
This commit is contained in:
37
garth/client/auth.go
Normal file
37
garth/client/auth.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// OAuth1Token represents OAuth 1.0a credentials
|
||||
type OAuth1Token struct {
|
||||
Token string
|
||||
TokenSecret string
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
||||
// Expired checks if token is expired (OAuth1 tokens typically don't expire but we'll implement for consistency)
|
||||
func (t *OAuth1Token) Expired() bool {
|
||||
return false // OAuth1 tokens don't typically expire
|
||||
}
|
||||
|
||||
// OAuth2Token represents OAuth 2.0 credentials
|
||||
type OAuth2Token struct {
|
||||
AccessToken string
|
||||
RefreshToken string
|
||||
TokenType string
|
||||
ExpiresIn int
|
||||
ExpiresAt time.Time
|
||||
}
|
||||
|
||||
// Expired checks if token is expired
|
||||
func (t *OAuth2Token) Expired() bool {
|
||||
return time.Now().After(t.ExpiresAt)
|
||||
}
|
||||
|
||||
// RefreshIfNeeded refreshes token if expired (implementation pending)
|
||||
func (t *OAuth2Token) RefreshIfNeeded(client *Client) error {
|
||||
// Placeholder for token refresh logic
|
||||
return nil
|
||||
}
|
||||
@@ -52,11 +52,16 @@ func NewClient(domain string) (*Client, error) {
|
||||
// Login authenticates to Garmin Connect using SSO
|
||||
func (c *Client) Login(email, password string) error {
|
||||
ssoClient := sso.NewClient(c.Domain)
|
||||
oauth2Token, err := ssoClient.Login(email, password)
|
||||
oauth2Token, mfaContext, err := ssoClient.Login(email, password)
|
||||
if err != nil {
|
||||
return fmt.Errorf("SSO login failed: %w", err)
|
||||
}
|
||||
|
||||
// Handle MFA required
|
||||
if mfaContext != nil {
|
||||
return fmt.Errorf("MFA required - not implemented yet")
|
||||
}
|
||||
|
||||
c.OAuth2Token = oauth2Token
|
||||
c.AuthToken = fmt.Sprintf("%s %s", oauth2Token.TokenType, oauth2Token.AccessToken)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user