Skip to content

Commit 3beef2e

Browse files
authored
Merge pull request #8 from elatov/errorhandling
Adding Some Error Handling
2 parents d0ddf74 + 4b7d34e commit 3beef2e

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

internal/iap/token.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ type token struct {
3434
IDToken string `json:"id_token"`
3535
}
3636

37+
type httpError struct {
38+
Error string `json:"error"`
39+
ErrorDesc string `json:"error_description"`
40+
}
41+
3742
// getRefreshTokenFromBrowserFlow initialize an OAuth login workflow via the browser and returns a refresh token valid for a given url
3843
// see: https://github.com/int128/oauth2cli/blob/master/example/main.go
3944
func getRefreshTokenFromBrowserFlow(domain, helperID, helperSecret string) (string, error) {
@@ -106,6 +111,7 @@ func getRefreshTokenFromCache(key string) (string, error) {
106111
// It returns a raw IAP auth token and any error encountered.
107112
func GetIAPAuthToken(domain, helperID, helperSecret, IAPclientID string) (string, error) {
108113
var result token
114+
var errorMesg httpError
109115

110116
refreshToken, err := getRefreshTokenFromCache(domain)
111117
if err != nil {
@@ -133,9 +139,16 @@ func GetIAPAuthToken(domain, helperID, helperSecret, IAPclientID string) (string
133139
return "", fmt.Errorf("could not get exchange 'refresh_token' for IAP Auth Token: %s", err.Error())
134140
}
135141

142+
if resp.StatusCode != 200 {
143+
json.NewDecoder(resp.Body).Decode(&errorMesg)
144+
return "", fmt.Errorf("could not get exchange 'refresh_token' for IAP Auth Token: HTTP Error Code: %s .... Error Description: %s", errorMesg.ErrorDesc, errorMesg.Error)
145+
}
146+
136147
log.Debug().Msgf("GetIAPAuthToken - successfully used 'refresh_token' to claim IAP Auth Token")
137148

138-
json.NewDecoder(resp.Body).Decode(&result)
149+
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
150+
return "", fmt.Errorf("could not get exchange 'refresh_token' for IAP Auth Token: %s", err.Error())
151+
}
139152

140153
return result.IDToken, nil
141154
}

0 commit comments

Comments
 (0)