From 0108cc20ab135f0e77127bf91abf719ad2d9dfef Mon Sep 17 00:00:00 2001 From: Chandler May Date: Tue, 25 Nov 2014 17:42:07 -0500 Subject: [PATCH 1/4] get client id, secret from environment --- init.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/init.go b/init.go index c254fb66..4f71d39a 100644 --- a/init.go +++ b/init.go @@ -14,11 +14,13 @@ package drive +import "os" + func (g *Commands) Init() (err error) { var refresh string // TODO: read from env variable. - g.context.ClientId = "354790962074-7rrlnuanmamgg1i4feed12dpuq871bvd.apps.googleusercontent.com" - g.context.ClientSecret = "RHjKdah8RrHFwu6fcc0uEVCw" + g.context.ClientId = os.Getenv("GOOGLE_API_CLIENT_ID") + g.context.ClientSecret = os.Getenv("GOOGLE_API_CLIENT_SECRET") if refresh, err = RetrieveRefreshToken(g.context); err != nil { return } From edfca221bcf7a42fd81f55fa9f5ec9a71a60b2b9 Mon Sep 17 00:00:00 2001 From: Chandler May Date: Tue, 25 Nov 2014 19:00:53 -0500 Subject: [PATCH 2/4] explain environment variable usage in readme, errors --- README.md | 2 ++ init.go | 26 ++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 94698312..4a09a62e 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ go get github.com/rakyll/drive/cmd/drive +You must set `GOOGLE_API_CLIENT_ID` and `GOOGLE_API_CLIENT_SECRET` appropriately in your environment before running `drive`. For more information, see [the Google API docs](https://developers.google.com/drive/web/quickstart/quickstart-go#step_1_enable_the_drive_api). + Use `drive help` for further reference. $ drive init [path] diff --git a/init.go b/init.go index 4f71d39a..61a168b5 100644 --- a/init.go +++ b/init.go @@ -14,13 +14,31 @@ package drive -import "os" +import ( + "os" + "errors" +) + +const ( + clientIdEnvKey = "GOOGLE_API_CLIENT_ID" + clientSecretEnvKey = "GOOGLE_API_CLIENT_SECRET" +) func (g *Commands) Init() (err error) { var refresh string - // TODO: read from env variable. - g.context.ClientId = os.Getenv("GOOGLE_API_CLIENT_ID") - g.context.ClientSecret = os.Getenv("GOOGLE_API_CLIENT_SECRET") + + g.context.ClientId = os.Getenv(clientIdEnvKey) + if len(g.context.ClientId) == 0 { + err = errors.New("environment variable " + clientIdEnvKey + " must be set") + return + } + + g.context.ClientSecret = os.Getenv(clientSecretEnvKey) + if len(g.context.ClientSecret) == 0 { + err = errors.New("environment variable " + clientSecretEnvKey + " must be set") + return + } + if refresh, err = RetrieveRefreshToken(g.context); err != nil { return } From 4412fe2eff2f853eafed64dc19f35ad846e2bee8 Mon Sep 17 00:00:00 2001 From: Chandler May Date: Tue, 25 Nov 2014 19:23:04 -0500 Subject: [PATCH 3/4] fix indentation --- init.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/init.go b/init.go index 61a168b5..df6e13b9 100644 --- a/init.go +++ b/init.go @@ -15,8 +15,8 @@ package drive import ( - "os" - "errors" + "os" + "errors" ) const ( @@ -28,16 +28,16 @@ func (g *Commands) Init() (err error) { var refresh string g.context.ClientId = os.Getenv(clientIdEnvKey) - if len(g.context.ClientId) == 0 { - err = errors.New("environment variable " + clientIdEnvKey + " must be set") - return - } + if len(g.context.ClientId) == 0 { + err = errors.New("environment variable " + clientIdEnvKey + " must be set") + return + } g.context.ClientSecret = os.Getenv(clientSecretEnvKey) - if len(g.context.ClientSecret) == 0 { - err = errors.New("environment variable " + clientSecretEnvKey + " must be set") - return - } + if len(g.context.ClientSecret) == 0 { + err = errors.New("environment variable " + clientSecretEnvKey + " must be set") + return + } if refresh, err = RetrieveRefreshToken(g.context); err != nil { return From b1353326aeb1037cc7662bdd5afa307de955b596 Mon Sep 17 00:00:00 2001 From: Chandler May Date: Sat, 29 Nov 2014 15:14:52 +0000 Subject: [PATCH 4/4] fall back to embedded credentials when custom ID and secret are not both set in the environment --- README.md | 4 ++-- init.go | 20 ++++++-------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 4a09a62e..f1190442 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ go get github.com/rakyll/drive/cmd/drive -You must set `GOOGLE_API_CLIENT_ID` and `GOOGLE_API_CLIENT_SECRET` appropriately in your environment before running `drive`. For more information, see [the Google API docs](https://developers.google.com/drive/web/quickstart/quickstart-go#step_1_enable_the_drive_api). - Use `drive help` for further reference. $ drive init [path] @@ -19,6 +17,8 @@ Use `drive help` for further reference. $ drive diff [path] # outputs a diff of local and remote $ drive publish [path] # publishes a file, outputs URL +To use your own Google Drive API credentials instead of the built-in credentials, set `GOOGLE_API_CLIENT_ID` and `GOOGLE_API_CLIENT_SECRET` appropriately in your environment before running `drive init`. See [the Google API docs](https://developers.google.com/drive/web/quickstart/quickstart-go#step_1_enable_the_drive_api) for more information. + ## Why another Google Drive client? Background sync is not just hard, it's stupid. My technical and philosophical rants about why it is not worth to implement: diff --git a/init.go b/init.go index df6e13b9..8a57865d 100644 --- a/init.go +++ b/init.go @@ -14,29 +14,21 @@ package drive -import ( - "os" - "errors" -) +import "os" const ( - clientIdEnvKey = "GOOGLE_API_CLIENT_ID" + clientIDEnvKey = "GOOGLE_API_CLIENT_ID" clientSecretEnvKey = "GOOGLE_API_CLIENT_SECRET" ) func (g *Commands) Init() (err error) { var refresh string - g.context.ClientId = os.Getenv(clientIdEnvKey) - if len(g.context.ClientId) == 0 { - err = errors.New("environment variable " + clientIdEnvKey + " must be set") - return - } - + g.context.ClientId = os.Getenv(clientIDEnvKey) g.context.ClientSecret = os.Getenv(clientSecretEnvKey) - if len(g.context.ClientSecret) == 0 { - err = errors.New("environment variable " + clientSecretEnvKey + " must be set") - return + if len(g.context.ClientId) == 0 || len(g.context.ClientSecret) == 0 { + g.context.ClientId = "354790962074-7rrlnuanmamgg1i4feed12dpuq871bvd.apps.googleusercontent.com" + g.context.ClientSecret = "RHjKdah8RrHFwu6fcc0uEVCw" } if refresh, err = RetrieveRefreshToken(g.context); err != nil {