Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(829)

Side by Side Diff: common/gcloud/googleoauth/info.go

Issue 2951393002: [errors] de-specialize Transient in favor of Tags. (Closed)
Patch Set: more refactor Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The LUCI Authors. All rights reserved. 1 // Copyright 2017 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package googleoauth 5 package googleoauth
6 6
7 import ( 7 import (
8 "encoding/json" 8 "encoding/json"
9 "net/http" 9 "net/http"
10 "net/url" 10 "net/url"
11 11
12 "github.com/luci/luci-go/common/errors" 12 "github.com/luci/luci-go/common/errors"
13 "github.com/luci/luci-go/common/logging" 13 "github.com/luci/luci-go/common/logging"
14 "github.com/luci/luci-go/common/retry/transient"
14 "google.golang.org/api/googleapi" 15 "google.golang.org/api/googleapi"
15 16
16 "golang.org/x/net/context" 17 "golang.org/x/net/context"
17 "golang.org/x/net/context/ctxhttp" 18 "golang.org/x/net/context/ctxhttp"
18 ) 19 )
19 20
20 const ( 21 const (
21 // TokeninfoEndpoint is Google's token info endpoint. 22 // TokeninfoEndpoint is Google's token info endpoint.
22 TokeninfoEndpoint = "https://www.googleapis.com/oauth2/v3/tokeninfo" 23 TokeninfoEndpoint = "https://www.googleapis.com/oauth2/v3/tokeninfo"
23 ) 24 )
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 logging.Debugf(c, "POST %s", params.Endpoint) 73 logging.Debugf(c, "POST %s", params.Endpoint)
73 v := url.Values{} 74 v := url.Values{}
74 if params.IDToken != "" { 75 if params.IDToken != "" {
75 v.Add("id_token", params.IDToken) 76 v.Add("id_token", params.IDToken)
76 } else { 77 } else {
77 v.Add("access_token", params.AccessToken) 78 v.Add("access_token", params.AccessToken)
78 } 79 }
79 resp, err := ctxhttp.Get(c, params.Client, params.Endpoint+"?"+v.Encode( )) 80 resp, err := ctxhttp.Get(c, params.Client, params.Endpoint+"?"+v.Encode( ))
80 if err != nil { 81 if err != nil {
81 logging.WithError(err).Errorf(c, "POST %s failed", params.Endpoi nt) 82 logging.WithError(err).Errorf(c, "POST %s failed", params.Endpoi nt)
82 » » return nil, errors.WrapTransient(err) 83 » » return nil, transient.Tag.Apply(err)
83 } 84 }
84 defer googleapi.CloseBody(resp) 85 defer googleapi.CloseBody(resp)
85 if err := googleapi.CheckResponse(resp); err != nil { 86 if err := googleapi.CheckResponse(resp); err != nil {
86 logging.WithError(err).Errorf(c, "POST %s failed", params.Endpoi nt) 87 logging.WithError(err).Errorf(c, "POST %s failed", params.Endpoi nt)
87 if apiErr, ok := err.(*googleapi.Error); ok && apiErr.Code < 500 { 88 if apiErr, ok := err.(*googleapi.Error); ok && apiErr.Code < 500 {
88 return nil, ErrBadToken 89 return nil, ErrBadToken
89 } 90 }
90 » » return nil, errors.WrapTransient(err) 91 » » return nil, transient.Tag.Apply(err)
91 } 92 }
92 93
93 info := &TokenInfo{} 94 info := &TokenInfo{}
94 if err := json.NewDecoder(resp.Body).Decode(info); err != nil { 95 if err := json.NewDecoder(resp.Body).Decode(info); err != nil {
95 // This should never happen. If it does, the token endpoint has gone mad, 96 // This should never happen. If it does, the token endpoint has gone mad,
96 // and maybe it will recover soon. So mark the error as transien t. 97 // and maybe it will recover soon. So mark the error as transien t.
97 logging.WithError(err).Errorf(c, "Bad token info endpoint respon se") 98 logging.WithError(err).Errorf(c, "Bad token info endpoint respon se")
98 » » return nil, errors.WrapTransient(err) 99 » » return nil, transient.Tag.Apply(err)
99 } 100 }
100 101
101 return info, nil 102 return info, nil
102 } 103 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698