ga-shikomi 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWU4MzQ3ZDI4NDkxZjU5NjE3YmQxNjg3MTQzMWUxYjg3YWViYWVmYg==
5
- data.tar.gz: !binary |-
6
- Yjg2MDZlMjc5M2M3OTM3Y2YyZDEwY2VkMDYwZDA4NTc3ZmUyOWY2YQ==
2
+ SHA1:
3
+ metadata.gz: aefa66eed695aeebed4c52f2aa4fcfb2ea7ba535
4
+ data.tar.gz: f67aabae92c5059be40011dc4b7c778ce89134ec
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MjU2ZjEwMzgwM2VlMDllYjdlNjczNzE2YWUzY2E2NmVhZDRjMWZhYTFiOWE0
10
- MmJiNzY5MDYzNzRmMzk2MjY5NTAyZDEyNmM5YzhmNGJhMTA2YmZjMzBjZGI4
11
- ZjY4YzYxODUwODVmZGMxYjA5ZjBmN2MxMWQ3ZjYxMWQ5NDI1MWE=
12
- data.tar.gz: !binary |-
13
- NWYxOTA2ZWFhM2UyYzIwM2Q5NjUxODEzMDM1ZmZiY2NmMmEzYzhhODk0MDFh
14
- ODVkY2IwZTljZjc5NjkyN2E3YTJhMDgxMTYxOWY3YTAyOTZhZWJiMDU1OGJm
15
- OTBhYWMxOTNiNDNkNWUyZTMzY2NhMmI4NGEwNDA4MTZlOGU2MzQ=
6
+ metadata.gz: f442d95ccac518787f6b235fc30c8ca596be7368c0a743af5f863615b14da616682d3afe97b33be9d21cbcbfcee4152a785cda5c8a5aa19cf13fcde832111ba0
7
+ data.tar.gz: f27d1ecde593533849ed0ff3db2128f2c3608fc9d54056bae7f07010e5d78df68a3b6630154be307577bed4a212ae5c74add467f33da536ad72a5943283e7124
data/ga_shikomi.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency "google-api-client"
21
+ spec.add_runtime_dependency "google-api-client", ">= 0.8.6", "< 0.9"
22
22
  spec.add_runtime_dependency "thor"
23
23
  spec.add_runtime_dependency "hirb"
24
24
 
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'google/api_client'
2
3
  require 'google/api_client/client_secrets'
3
4
  require 'google/api_client/auth/installed_app'
@@ -8,6 +9,8 @@ module GAShikomi
8
9
  class Api
9
10
  class InexpectantResponse < StandardError; end
10
11
 
12
+ GOOGLE_API_KEYS = %w(GOOGLE_API_CREDENTIAL GOOGLE_API_SECRETS)
13
+
11
14
  #
12
15
  # [param] String store
13
16
  #
@@ -20,31 +23,59 @@ module GAShikomi
20
23
  end
21
24
  attr_reader :client, :analytics, :last_request
22
25
 
26
+ def init_and_auth_analytics(store)
27
+ init_client
28
+
29
+ if GOOGLE_API_KEYS.all? {|e| ENV.has_key? e}
30
+ init_and_auth_with_env
31
+ else
32
+ init_and_auth_with_file_storage(store)
33
+ end
34
+
35
+ @analytics = client.discovered_api('analytics', 'v3')
36
+ end
37
+
38
+ def init_and_auth_with_env
39
+ credential = ::Google::APIClient::Storage.new(EnvStore.new(ENV))
40
+ credential.authorize
41
+ secrets = ::Google::APIClient::ClientSecrets.new(JSON.parse(ENV['GOOGLE_API_SECRETS']))
42
+
43
+ client.authorization = credential.authorization
44
+ end
45
+
23
46
  #
24
47
  # [param] String store
25
48
  #
26
- def init_and_auth_analytics(store)
27
- @client = ::Google::APIClient.new(
28
- :application_name => :gacli,
29
- :application_version => VERSION)
30
-
49
+ def init_and_auth_with_file_storage(store)
31
50
  credential = ::Google::APIClient::FileStorage.new(store)
32
51
  secrets = ::Google::APIClient::ClientSecrets.load(File.dirname(store))
33
52
 
34
53
  if credential.authorization.nil?
35
- flow = ::Google::APIClient::InstalledAppFlow.new(
36
- :client_id => secrets.client_id,
37
- :client_secret => secrets.client_secret,
38
- :scope => ['https://www.googleapis.com/auth/analytics',
39
- 'https://www.googleapis.com/auth/analytics.edit'])
54
+ flow = flow(secrets)
40
55
 
41
56
  client.authorization = flow.authorize
42
57
  credential.write_credentials(client.authorization)
43
58
  else
44
59
  client.authorization = credential.authorization
45
60
  end
61
+ end
46
62
 
47
- @analytics = client.discovered_api('analytics', 'v3')
63
+ def init_client
64
+ @client = ::Google::APIClient.new(
65
+ :application_name => :gacli,
66
+ :application_version => VERSION)
67
+ end
68
+
69
+ #
70
+ # [param] Google::APIClient::ClientSecrets
71
+ # [return] Google::APIClient::InstalledAppFlow
72
+ #
73
+ def flow(secrets)
74
+ ::Google::APIClient::InstalledAppFlow.new(
75
+ :client_id => secrets.client_id,
76
+ :client_secret => secrets.client_secret,
77
+ :scope => ['https://www.googleapis.com/auth/analytics',
78
+ 'https://www.googleapis.com/auth/analytics.edit'])
48
79
  end
49
80
 
50
81
  #
@@ -0,0 +1,25 @@
1
+ require 'json'
2
+
3
+ class EnvStore
4
+ #
5
+ # [param] Hash env
6
+ #
7
+ def initialize(env)
8
+ @env = env
9
+ end
10
+
11
+ #
12
+ # [return] Hash
13
+ #
14
+ def load_credentials
15
+ JSON.parse(@env['GOOGLE_API_CREDENTIAL'])
16
+ end
17
+
18
+ #
19
+ # [param] Hash credentials_hash
20
+ # [return] Hash
21
+ #
22
+ def write_credentials(credentials_hash)
23
+ credentials_hash
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module GAShikomi
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,125 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ga-shikomi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - wtnabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-20 00:00:00.000000000 Z
11
+ date: 2015-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-api-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.8.6
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.9'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ! '>='
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 0.8.6
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.9'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: thor
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ! '>='
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
39
  version: '0'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - ! '>='
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: '0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hirb
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ! '>='
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ! '>='
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: bundler
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: '1.7'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ~>
72
+ - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '1.7'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - ~>
79
+ - - "~>"
74
80
  - !ruby/object:Gem::Version
75
81
  version: '10.0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - ~>
86
+ - - "~>"
81
87
  - !ruby/object:Gem::Version
82
88
  version: '10.0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: minitest
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ! '>'
93
+ - - ">"
88
94
  - !ruby/object:Gem::Version
89
95
  version: '5'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ! '>'
100
+ - - ">"
95
101
  - !ruby/object:Gem::Version
96
102
  version: '5'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: minitest-power_assert
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ! '>='
107
+ - - ">="
102
108
  - !ruby/object:Gem::Version
103
109
  version: '0'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ! '>='
114
+ - - ">="
109
115
  - !ruby/object:Gem::Version
110
116
  version: '0'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: minitest-reporters
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ! '>'
121
+ - - ">"
116
122
  - !ruby/object:Gem::Version
117
123
  version: '1'
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ! '>'
128
+ - - ">"
123
129
  - !ruby/object:Gem::Version
124
130
  version: '1'
125
131
  description: Now, You can fetch general ga data.
@@ -130,7 +136,7 @@ executables:
130
136
  extensions: []
131
137
  extra_rdoc_files: []
132
138
  files:
133
- - .gitignore
139
+ - ".gitignore"
134
140
  - Gemfile
135
141
  - README.md
136
142
  - Rakefile
@@ -140,6 +146,7 @@ files:
140
146
  - lib/ga_shikomi/api.rb
141
147
  - lib/ga_shikomi/command.rb
142
148
  - lib/ga_shikomi/config.rb
149
+ - lib/ga_shikomi/env_store.rb
143
150
  - lib/ga_shikomi/renderer.rb
144
151
  - lib/ga_shikomi/subcommand/accounts.rb
145
152
  - lib/ga_shikomi/subcommand/base.rb
@@ -165,17 +172,17 @@ require_paths:
165
172
  - lib
166
173
  required_ruby_version: !ruby/object:Gem::Requirement
167
174
  requirements:
168
- - - ! '>='
175
+ - - ">="
169
176
  - !ruby/object:Gem::Version
170
177
  version: '0'
171
178
  required_rubygems_version: !ruby/object:Gem::Requirement
172
179
  requirements:
173
- - - ! '>='
180
+ - - ">="
174
181
  - !ruby/object:Gem::Version
175
182
  version: '0'
176
183
  requirements: []
177
184
  rubyforge_project:
178
- rubygems_version: 2.4.6
185
+ rubygems_version: 2.2.2
179
186
  signing_key:
180
187
  specification_version: 4
181
188
  summary: Google Analytics API wrapper for CLI written in Ruby.