aboutsummaryrefslogtreecommitdiffstats
path: root/auth
diff options
context:
space:
mode:
authorPetter Rasmussen2016-02-21 21:03:26 +0100
committerPetter Rasmussen2016-02-21 21:03:26 +0100
commit1973512dd8edca24df4124fb3dfac4a432a0d481 (patch)
treec61daefa5cf24eb2211ac816862697f9e0676d86 /auth
parent701c7f1991ae765a51b0b7404d1edbb2dc523055 (diff)
downloadgdrive-1973512dd8edca24df4124fb3dfac4a432a0d481.tar.bz2
go fmt
Diffstat (limited to 'auth')
-rw-r--r--auth/file_source.go85
-rw-r--r--auth/oauth.go106
-rw-r--r--auth/util.go24
3 files changed, 107 insertions, 108 deletions
diff --git a/auth/file_source.go b/auth/file_source.go
index 1c1150b..5200203 100644
--- a/auth/file_source.go
+++ b/auth/file_source.go
@@ -1,68 +1,67 @@
package auth
import (
- "golang.org/x/oauth2"
- "encoding/json"
- "os"
- "io/ioutil"
+ "encoding/json"
+ "golang.org/x/oauth2"
+ "io/ioutil"
+ "os"
)
-
func FileSource(path string, token *oauth2.Token, conf *oauth2.Config) oauth2.TokenSource {
- return &fileSource{
- tokenPath: path,
- tokenSource: conf.TokenSource(oauth2.NoContext, token),
- }
+ return &fileSource{
+ tokenPath: path,
+ tokenSource: conf.TokenSource(oauth2.NoContext, token),
+ }
}
type fileSource struct {
- tokenPath string
- tokenSource oauth2.TokenSource
+ tokenPath string
+ tokenSource oauth2.TokenSource
}
func (self *fileSource) Token() (*oauth2.Token, error) {
- token, err := self.tokenSource.Token()
- if err != nil {
- return token, err
- }
+ token, err := self.tokenSource.Token()
+ if err != nil {
+ return token, err
+ }
- // Save token to file
- SaveToken(self.tokenPath, token)
+ // Save token to file
+ SaveToken(self.tokenPath, token)
- return token, nil
+ return token, nil
}
func ReadToken(path string) (*oauth2.Token, bool, error) {
- if !fileExists(path) {
- return nil, false, nil
- }
+ if !fileExists(path) {
+ return nil, false, nil
+ }
- content, err := ioutil.ReadFile(path)
- if err != nil {
- return nil, true, err
- }
- token := &oauth2.Token{}
- return token, true, json.Unmarshal(content, token)
+ content, err := ioutil.ReadFile(path)
+ if err != nil {
+ return nil, true, err
+ }
+ token := &oauth2.Token{}
+ return token, true, json.Unmarshal(content, token)
}
func SaveToken(path string, token *oauth2.Token) error {
- data, err := json.MarshalIndent(token, "", " ")
- if err != nil {
- return err
- }
+ data, err := json.MarshalIndent(token, "", " ")
+ if err != nil {
+ return err
+ }
- if err = mkdir(path); err != nil {
- return err
- }
+ if err = mkdir(path); err != nil {
+ return err
+ }
- // Write to temp file first
- tmpFile := path + ".tmp"
- err = ioutil.WriteFile(tmpFile, data, 0600)
- if err != nil {
- os.Remove(tmpFile)
- return err
- }
+ // Write to temp file first
+ tmpFile := path + ".tmp"
+ err = ioutil.WriteFile(tmpFile, data, 0600)
+ if err != nil {
+ os.Remove(tmpFile)
+ return err
+ }
- // Move file to correct path
- return os.Rename(tmpFile, path)
+ // Move file to correct path
+ return os.Rename(tmpFile, path)
}
diff --git a/auth/oauth.go b/auth/oauth.go
index 965c7cc..150642c 100644
--- a/auth/oauth.go
+++ b/auth/oauth.go
@@ -1,78 +1,78 @@
package auth
import (
- "fmt"
- "time"
- "net/http"
- "golang.org/x/oauth2"
+ "fmt"
+ "golang.org/x/oauth2"
+ "net/http"
+ "time"
)
type authCodeFn func(string) func() string
func NewFileSourceClient(clientId, clientSecret, tokenFile string, authFn authCodeFn) (*http.Client, error) {
- conf := getConfig(clientId, clientSecret)
+ conf := getConfig(clientId, clientSecret)
- // Read cached token
- token, exists, err := ReadToken(tokenFile)
- if err != nil {
- return nil, fmt.Errorf("Failed to read token: %s", err)
- }
+ // Read cached token
+ token, exists, err := ReadToken(tokenFile)
+ if err != nil {
+ return nil, fmt.Errorf("Failed to read token: %s", err)
+ }
- // Require auth code if token file does not exist
- // or refresh token is missing
- if !exists || token.RefreshToken == "" {
- authUrl := conf.AuthCodeURL("state", oauth2.AccessTypeOffline)
- authCode := authFn(authUrl)()
- token, err = conf.Exchange(oauth2.NoContext, authCode)
- if err != nil {
- return nil, fmt.Errorf("Failed to exchange auth code for token: %s", err)
- }
- }
+ // Require auth code if token file does not exist
+ // or refresh token is missing
+ if !exists || token.RefreshToken == "" {
+ authUrl := conf.AuthCodeURL("state", oauth2.AccessTypeOffline)
+ authCode := authFn(authUrl)()
+ token, err = conf.Exchange(oauth2.NoContext, authCode)
+ if err != nil {
+ return nil, fmt.Errorf("Failed to exchange auth code for token: %s", err)
+ }
+ }
- return oauth2.NewClient(
- oauth2.NoContext,
- FileSource(tokenFile, token, conf),
- ), nil
+ return oauth2.NewClient(
+ oauth2.NoContext,
+ FileSource(tokenFile, token, conf),
+ ), nil
}
func NewRefreshTokenClient(clientId, clientSecret, refreshToken string) *http.Client {
- conf := getConfig(clientId, clientSecret)
+ conf := getConfig(clientId, clientSecret)
- token := &oauth2.Token{
- TokenType: "Bearer",
- RefreshToken: refreshToken,
- Expiry: time.Now(),
- }
+ token := &oauth2.Token{
+ TokenType: "Bearer",
+ RefreshToken: refreshToken,
+ Expiry: time.Now(),
+ }
- return oauth2.NewClient(
- oauth2.NoContext,
- conf.TokenSource(oauth2.NoContext, token),
- )
+ return oauth2.NewClient(
+ oauth2.NoContext,
+ conf.TokenSource(oauth2.NoContext, token),
+ )
}
func NewAccessTokenClient(clientId, clientSecret, accessToken string) *http.Client {
- conf := getConfig(clientId, clientSecret)
+ conf := getConfig(clientId, clientSecret)
- token := &oauth2.Token{
- TokenType: "Bearer",
- AccessToken: accessToken,
- }
+ token := &oauth2.Token{
+ TokenType: "Bearer",
+ AccessToken: accessToken,
+ }
- return oauth2.NewClient(
- oauth2.NoContext,
- conf.TokenSource(oauth2.NoContext, token),
- )
+ return oauth2.NewClient(
+ oauth2.NoContext,
+ conf.TokenSource(oauth2.NoContext, token),
+ )
}
func getConfig(clientId, clientSecret string) *oauth2.Config {
- return &oauth2.Config{
- ClientID: clientId,
- ClientSecret: clientSecret,
- Scopes: []string{"https://www.googleapis.com/auth/drive"},
- RedirectURL: "urn:ietf:wg:oauth:2.0:oob",
- Endpoint: oauth2.Endpoint{
- AuthURL: "https://accounts.google.com/o/oauth2/auth",
- TokenURL: "https://accounts.google.com/o/oauth2/token",
- },
- }
+ return &oauth2.Config{
+ ClientID: clientId,
+ ClientSecret: clientSecret,
+ Scopes: []string{"https://www.googleapis.com/auth/drive"},
+ RedirectURL: "urn:ietf:wg:oauth:2.0:oob",
+ Endpoint: oauth2.Endpoint{
+ AuthURL: "https://accounts.google.com/o/oauth2/auth",
+ TokenURL: "https://accounts.google.com/o/oauth2/token",
+ },
+ }
}
diff --git a/auth/util.go b/auth/util.go
index b053c1f..dfa4adf 100644
--- a/auth/util.go
+++ b/auth/util.go
@@ -1,22 +1,22 @@
package auth
import (
- "os"
- "path/filepath"
+ "os"
+ "path/filepath"
)
func mkdir(path string) error {
- dir := filepath.Dir(path)
- if fileExists(dir) {
- return nil
- }
- return os.Mkdir(dir, 0700)
+ dir := filepath.Dir(path)
+ if fileExists(dir) {
+ return nil
+ }
+ return os.Mkdir(dir, 0700)
}
func fileExists(path string) bool {
- _, err := os.Stat(path)
- if err == nil {
- return true
- }
- return false
+ _, err := os.Stat(path)
+ if err == nil {
+ return true
+ }
+ return false
}