drive_env 0.1.0 → 0.2.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 535703d25f647836939114b16807a889f37e7299
4
- data.tar.gz: 2d85523a0ac558537e504c6a31b0ac40d949c901
3
+ metadata.gz: af9d35322807cdaf7024bd6d465374fc082453ca
4
+ data.tar.gz: 13b1b82d99ba7cfdccd92ec859a688a256d8069e
5
5
  SHA512:
6
- metadata.gz: f5a292adf7028ae6d917ec25e5b711f71c118c86a0637b0822bb0448c265a26bf4cde4197115ae936bb1446c95c0767033d49549a216e4a7f1bc954c4a6cb9b1
7
- data.tar.gz: 1aca98931755a8934fb6a9ff3972971a966e786145211fd91b9f56a865480a0e3ad95bcde8b707c29871496ff9fa31298180021c8434c4ffd48c891be53f399a
6
+ metadata.gz: 4a0d27c5e673c0e1ef7e8ca21455087f78d48ce894337cc03e733516b7c1d31b412a5dbc88a3e0b2efc37a66b4e99efea4ddfa54d4be58c391239776fda9bdcb
7
+ data.tar.gz: c02b9decf2b9cb6d04724a8e435e9f07765e4b01fb2ae1ad29997fef074461043aed23caca42483eb786b93ab88ea607863fb6d0c0d8d8fcd380cfe56265707f
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
4
- - 2.1.6
5
- before_install: gem install bundler -v 1.10.5
3
+ - 2.3.1
4
+ - 2.2.5
5
+ - 2.1.10
data/README.md CHANGED
@@ -23,7 +23,7 @@ SMTP_PASSWORD=appuser
23
23
  Add this line to your application's Gemfile:
24
24
 
25
25
  ```ruby
26
- gem 'drive_env'
26
+ gem 'drive_env', '~> 0.2.pre1'
27
27
  ```
28
28
 
29
29
  And then execute:
@@ -32,7 +32,7 @@ And then execute:
32
32
 
33
33
  Or install it yourself as:
34
34
 
35
- $ gem install drive_env
35
+ $ gem install drive_env --pre
36
36
 
37
37
  ## Usage
38
38
 
data/drive_env.gemspec CHANGED
@@ -27,8 +27,9 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "google_drive", "~> 1.0.1"
31
- spec.add_dependency "google-api-client", "~> 0.8.6"
30
+ spec.add_dependency "google_drive", "~> 2.0.0.pre1"
31
+ spec.add_dependency "google-api-client", "~> 0.9.6"
32
+ spec.add_dependency "googleauth", "~> 0.5.1"
32
33
  spec.add_dependency "thor", "~> 0.19.1"
33
34
  spec.add_dependency "text-table", "~> 1.2.4"
34
35
 
@@ -4,6 +4,8 @@ require 'drive_env'
4
4
  module DriveEnv
5
5
  module Cli
6
6
  class Auth < Thor
7
+ OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
8
+
7
9
  desc 'login', ''
8
10
  def login
9
11
  if !config.client_id
@@ -12,14 +14,11 @@ module DriveEnv
12
14
  if !config.client_secret
13
15
  abort "please set client_secret: #{$0} config set client_secret YOUR_CLIENT_SECRET"
14
16
  end
15
- print("1. Open this page:\n%s\n\n" % auth.authorization_uri)
17
+ print("1. Open this page:\n%s\n\n" % authorizer.get_authorization_url(base_url: OOB_URI))
16
18
  print("2. Enter the authorization code shown in the page: ")
17
- auth.code = $stdin.gets.chomp
18
- auth.fetch_access_token!
19
- config.access_token = auth.access_token
20
- config.refresh_token = auth.refresh_token
21
- config.expires_at = auth.issued_at + auth.expires_in
22
- config.save
19
+
20
+ code = $stdin.gets.chomp
21
+ authorizer.get_and_store_credentials_from_code(user_id: DriveEnv::Config::DEFAULT_TOKEN_USER_ID, code: code, base_url: OOB_URI)
23
22
  end
24
23
 
25
24
  no_commands do
@@ -27,18 +26,8 @@ module DriveEnv
27
26
  @config ||= DriveEnv::Config.load(options[:config])
28
27
  end
29
28
 
30
- def auth
31
- unless @auth
32
- @auth = ::DriveEnv.client.authorization
33
- @auth.client_id = config.client_id
34
- @auth.client_secret = config.client_secret
35
- @auth.scope = %w[
36
- https://www.googleapis.com/auth/drive
37
- https://spreadsheets.google.com/feeds/
38
- ].join(' ')
39
- @auth.redirect_uri = 'urn:ietf:wg:oauth:2.0:oob'
40
- end
41
- @auth
29
+ def authorizer
30
+ DriveEnv.authorizer(config.client_id, config.client_secret, DriveEnv::Config::DEFAULT_TOKENS_STORE_FILE)
42
31
  end
43
32
  end
44
33
  end
@@ -69,34 +69,27 @@ module DriveEnv
69
69
  @config ||= DriveEnv::Config.load(options[:config])
70
70
  end
71
71
 
72
- def auth
73
- unless @auth
74
- @auth = ::DriveEnv.client.authorization
75
- @auth.client_id = config.client_id
76
- @auth.client_secret = config.client_secret
77
- end
78
- @auth
72
+ def authorizer
73
+ DriveEnv.authorizer(config.client_id, config.client_secret, DriveEnv::Config::DEFAULT_TOKENS_STORE_FILE)
79
74
  end
80
75
 
81
76
  def access_token
82
77
  unless @access_token
83
- auth.expires_at = config.expires_at
84
- if auth.expired?
85
- auth.refresh_token = config.refresh_token
86
- auth.fetch_access_token!
87
- config.access_token = auth.access_token
88
- config.expires_at = auth.issued_at + auth.expires_in
89
- config.save
78
+ credential = authorizer.get_credentials(DriveEnv::Config::DEFAULT_TOKEN_USER_ID)
79
+ case
80
+ when credential.nil?
81
+ abort "please set access_token: #{$0} auth login"
82
+ when credential.expired?
83
+ credential.fetch_access_token!
84
+ credential.expires_at = credential.issued_at + credential.expires_in
85
+ authorizer.store_credentials(DriveEnv::Config::DEFAULT_TOKEN_USER_ID, credential)
90
86
  end
91
- @access_token = config.access_token
87
+ @access_token = credential.access_token
92
88
  end
93
89
  @access_token
94
90
  end
95
91
 
96
92
  def session
97
- if !config.access_token
98
- abort "please set access_token: #{$0} auth login"
99
- end
100
93
  @session ||= GoogleDrive.login_with_oauth(access_token)
101
94
  end
102
95
 
@@ -4,12 +4,11 @@ require 'yaml'
4
4
  module DriveEnv
5
5
  class Config
6
6
  DEFAULT_CONFIG_FILE = File.expand_path('~/.config/drive_env/config')
7
+ DEFAULT_TOKENS_STORE_FILE = File.expand_path('~/.config/drive_env/tokens.yml')
8
+ DEFAULT_TOKEN_USER_ID = 'default'
7
9
 
8
10
  attr_accessor :client_id
9
11
  attr_accessor :client_secret
10
- attr_accessor :access_token
11
- attr_accessor :refresh_token
12
- attr_accessor :expires_at
13
12
 
14
13
  def initialize
15
14
  @spreadsheet_aliases = {}
@@ -39,10 +38,20 @@ module DriveEnv
39
38
  end
40
39
  end
41
40
 
41
+ def migrate
42
+ ## dropped variables in 0.2.pre1
43
+ %W[access_token refresh_token expires_at].each do |v|
44
+ if instance_variable_get("@#{v}")
45
+ remove_instance_variable("@#{v}")
46
+ end
47
+ end
48
+ end
49
+
42
50
  class << self
43
51
  def load(file)
44
52
  obj = File.exist?(file) ? YAML.load(File.read(file)) : self.new
45
53
  obj.instance_variable_set("@config_file", file)
54
+ obj.migrate
46
55
  obj
47
56
  end
48
57
  end
@@ -1,3 +1,3 @@
1
1
  module DriveEnv
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.pre1'
3
3
  end
data/lib/drive_env.rb CHANGED
@@ -1,13 +1,23 @@
1
1
  require 'drive_env/version'
2
- require 'google/api_client'
2
+ require 'googleauth'
3
+ require 'googleauth/stores/file_token_store'
3
4
 
4
5
  module DriveEnv
5
6
  autoload :Cli, 'drive_env/cli'
6
7
  autoload :Config, 'drive_env/config'
7
8
 
8
9
  class << self
9
- def client
10
- @client ||= Google::APIClient.new(:application_name => 'drive_env', :application_version => DriveEnv::VERSION)
10
+ def authorizer(client_id, client_secret, token_store_file)
11
+ unless @authorizer
12
+ client_id = Google::Auth::ClientId.new(client_id, client_secret)
13
+ scope = %w[
14
+ https://www.googleapis.com/auth/drive
15
+ https://spreadsheets.google.com/feeds/
16
+ ]
17
+ token_store = Google::Auth::Stores::FileTokenStore.new(file: token_store_file)
18
+ @authorizer = Google::Auth::UserAuthorizer.new(client_id, scope, token_store)
19
+ end
20
+ @authorizer
11
21
  end
12
22
  end
13
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drive_env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - YAMADA Tsuyoshi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-14 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google_drive
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.1
19
+ version: 2.0.0.pre1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.1
26
+ version: 2.0.0.pre1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: google-api-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.8.6
33
+ version: 0.9.6
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.8.6
40
+ version: 0.9.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: googleauth
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -165,12 +179,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
179
  version: '0'
166
180
  required_rubygems_version: !ruby/object:Gem::Requirement
167
181
  requirements:
168
- - - ">="
182
+ - - ">"
169
183
  - !ruby/object:Gem::Version
170
- version: '0'
184
+ version: 1.3.1
171
185
  requirements: []
172
186
  rubyforge_project:
173
- rubygems_version: 2.2.2
187
+ rubygems_version: 2.5.1
174
188
  signing_key:
175
189
  specification_version: 4
176
190
  summary: Generate `.env` file from Spreadsheet in Google Drive