storedTokenFromResponse builds a StoredToken from an OAuth token response, including the user identity when the response carries a user object.
(resp *dashboard.OAuthTokenResponse)
| 42 | // storedTokenFromResponse builds a StoredToken from an OAuth token response, |
| 43 | // including the user identity when the response carries a user object. |
| 44 | func storedTokenFromResponse(resp *dashboard.OAuthTokenResponse) StoredToken { |
| 45 | expiresAt := resp.CreatedAt + int64(resp.ExpiresIn) |
| 46 | if expiresAt == 0 { |
| 47 | expiresAt = time.Now().Unix() + int64(resp.ExpiresIn) |
| 48 | } |
| 49 | |
| 50 | stored := StoredToken{ |
| 51 | AccessToken: resp.AccessToken, |
| 52 | RefreshToken: resp.RefreshToken, |
| 53 | ExpiresAt: expiresAt, |
| 54 | Scope: resp.Scope, |
| 55 | } |
| 56 | |
| 57 | if resp.User != nil && resp.User.ID != 0 { |
| 58 | stored.UserID = strconv.Itoa(resp.User.ID) |
| 59 | stored.Email = resp.User.Email |
| 60 | stored.Name = resp.User.Name |
| 61 | } |
| 62 | |
| 63 | return stored |
| 64 | } |
| 65 | |
| 66 | // persistToken marshals and writes a StoredToken to the OS keychain. |
| 67 | func persistToken(stored StoredToken) error { |
no outgoing calls
no test coverage detected