| OLD | NEW |
| 1 package auth | 1 package auth |
| 2 | 2 |
| 3 import ( | 3 import ( |
| 4 "fmt" | 4 "fmt" |
| 5 "net/http" | 5 "net/http" |
| 6 "time" | 6 "time" |
| 7 | 7 |
| 8 "code.google.com/p/goauth2/oauth" | 8 "code.google.com/p/goauth2/oauth" |
| 9 "github.com/oxtoacart/webbrowser" | 9 "github.com/oxtoacart/webbrowser" |
| 10 "skia.googlesource.com/buildbot.git/go/util" | 10 "skia.googlesource.com/buildbot.git/go/util" |
| 11 ) | 11 ) |
| 12 | 12 |
| 13 const ( | 13 const ( |
| 14 // TIMEOUT is the http timeout when making Google Storage requests. | 14 // TIMEOUT is the http timeout when making Google Storage requests. |
| 15 TIMEOUT = time.Duration(time.Minute) | 15 TIMEOUT = time.Duration(time.Minute) |
| 16 // Supported Cloud storage API OAuth scopes. |
| 17 SCOPE_READ_ONLY = "https://www.googleapis.com/auth/devstorage.read_on
ly" |
| 18 SCOPE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_wr
ite" |
| 19 SCOPE_FULL_CONTROL = "https://www.googleapis.com/auth/devstorage.full_co
ntrol" |
| 16 ) | 20 ) |
| 17 | 21 |
| 18 // DefaultOAuthConfig returns the default configuration for oauth. | 22 // DefaultOAuthConfig returns the default configuration for oauth. |
| 19 // If the given path for the cachefile is empty a default value is | 23 // If the given path for the cachefile is empty a default value is |
| 20 // used. | 24 // used. |
| 21 func DefaultOAuthConfig(cacheFilePath string) *oauth.Config { | 25 func DefaultOAuthConfig(cacheFilePath string) *oauth.Config { |
| 26 return OAuthConfig(cacheFilePath, SCOPE_READ_ONLY) |
| 27 } |
| 28 |
| 29 // OAuthConfig returns a configuration for oauth with the specified scope. |
| 30 // If the given path for the cachefile is empty a default value is used. |
| 31 func OAuthConfig(cacheFilePath, scope string) *oauth.Config { |
| 22 if cacheFilePath == "" { | 32 if cacheFilePath == "" { |
| 23 cacheFilePath = "google_storage_token.data" | 33 cacheFilePath = "google_storage_token.data" |
| 24 } | 34 } |
| 25 | |
| 26 return &oauth.Config{ | 35 return &oauth.Config{ |
| 27 ClientId: "470362608618-nlbqngfl87f4b3mhqqe9ojgaoe11vrld.app
s.googleusercontent.com", | 36 ClientId: "470362608618-nlbqngfl87f4b3mhqqe9ojgaoe11vrld.app
s.googleusercontent.com", |
| 28 ClientSecret: "J4YCkfMXFJISGyuBuVEiH60T", | 37 ClientSecret: "J4YCkfMXFJISGyuBuVEiH60T", |
| 29 » » Scope: "https://www.googleapis.com/auth/devstorage.read_o
nly", | 38 » » Scope: scope, |
| 30 AuthURL: "https://accounts.google.com/o/oauth2/auth", | 39 AuthURL: "https://accounts.google.com/o/oauth2/auth", |
| 31 TokenURL: "https://accounts.google.com/o/oauth2/token", | 40 TokenURL: "https://accounts.google.com/o/oauth2/token", |
| 32 RedirectURL: "urn:ietf:wg:oauth:2.0:oob", | 41 RedirectURL: "urn:ietf:wg:oauth:2.0:oob", |
| 33 TokenCache: oauth.CacheFile(cacheFilePath), | 42 TokenCache: oauth.CacheFile(cacheFilePath), |
| 34 } | 43 } |
| 35 } | 44 } |
| 36 | 45 |
| 37 // runFlow runs through a 3LO OAuth 2.0 flow to get credentials for Google Stora
ge. | 46 // runFlow runs through a 3LO OAuth 2.0 flow to get credentials for Google Stora
ge. |
| 38 func RunFlow(config *oauth.Config) (*http.Client, error) { | 47 func RunFlow(config *oauth.Config) (*http.Client, error) { |
| 39 if config == nil { | 48 if config == nil { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 55 webbrowser.Open(url) | 64 webbrowser.Open(url) |
| 56 var code string | 65 var code string |
| 57 fmt.Scan(&code) | 66 fmt.Scan(&code) |
| 58 if _, err := transport.Exchange(code); err != nil { | 67 if _, err := transport.Exchange(code); err != nil { |
| 59 return nil, err | 68 return nil, err |
| 60 } | 69 } |
| 61 } | 70 } |
| 62 | 71 |
| 63 return transport.Client(), nil | 72 return transport.Client(), nil |
| 64 } | 73 } |
| OLD | NEW |