activeresource-google_spreadsheets 0.0.9 → 0.1.0
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 +7 -7
- data/activeresource-google_spreadsheets.gemspec +1 -0
- data/lib/google_spreadsheets/auth/service_accounts_access_token.rb +35 -0
- data/lib/google_spreadsheets/auth.rb +5 -0
- data/lib/google_spreadsheets/base.rb +34 -1
- data/lib/google_spreadsheets/connection.rb +22 -5
- data/lib/google_spreadsheets/version.rb +1 -1
- data/lib/google_spreadsheets.rb +1 -0
- metadata +83 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 59691c2bd7817f25d8065105e5b357aee2506080
|
4
|
+
data.tar.gz: 4d3ae79b0a0bb0e9f6120de3507ce1cd2d82eb3b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b47e0295e67c174828bb4bffbf66bd3623d89cd650c89f04bbca2596522065ada1f5ab18375f69f84e95b75b2a46b8e0101f1ec8549ed939c565be81f07a5f1f
|
7
|
+
data.tar.gz: 587b14efafcc01ebcff5cfdc88e290b025407598ddab283a7303bfa00a25aa04ad73daee92bda425ce5343dbde49ca330f216d3a60ca674a484364314eb540fb
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'google/api_client'
|
2
|
+
require 'openssl'
|
3
|
+
|
4
|
+
module GoogleSpreadsheets
|
5
|
+
module Auth
|
6
|
+
class ServiceAccountsAccessToken
|
7
|
+
def initialize(options = {})
|
8
|
+
@options = options.reverse_merge(
|
9
|
+
application_name: 'Ruby',
|
10
|
+
token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
|
11
|
+
audience: 'https://accounts.google.com/o/oauth2/token',
|
12
|
+
scope: 'https://spreadsheets.google.com/feeds/'
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(connection)
|
17
|
+
# cf. http://d.hatena.ne.jp/sugyan/20130112/1357996092
|
18
|
+
@client ||= Google::APIClient.new(application_name: @options[:application_name]).tap do |c|
|
19
|
+
c.authorization = Signet::OAuth2::Client.new(
|
20
|
+
token_credential_uri: @options[:token_credential_uri],
|
21
|
+
audience: @options[:audience],
|
22
|
+
scope: @options[:scope],
|
23
|
+
issuer: @options[:client_email],
|
24
|
+
signing_key: OpenSSL::PKey::RSA.new(@options[:private_key_pem])
|
25
|
+
)
|
26
|
+
c.authorization.fetch_access_token!
|
27
|
+
end
|
28
|
+
if @client.authorization.expired?
|
29
|
+
@client.authorization.refresh!
|
30
|
+
end
|
31
|
+
@client.authorization.access_token
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,20 +1,53 @@
|
|
1
1
|
module GoogleSpreadsheets
|
2
2
|
class Base < ActiveResource::Base
|
3
|
-
self.site = '
|
3
|
+
self.site = 'https://spreadsheets.google.com/'
|
4
4
|
self.format = GDataFormat.new
|
5
5
|
|
6
6
|
class << self
|
7
|
+
# Avoid dup & freeze
|
8
|
+
def password
|
9
|
+
if defined?(@password)
|
10
|
+
@password
|
11
|
+
elsif superclass != Object && superclass.password
|
12
|
+
superclass.password
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Inherit from superclass
|
17
|
+
def auth_type
|
18
|
+
if defined?(@auth_type)
|
19
|
+
@auth_type
|
20
|
+
elsif superclass != Object && superclass.auth_type
|
21
|
+
superclass.auth_type
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def access_token=(access_token)
|
26
|
+
self.password = access_token
|
27
|
+
end
|
28
|
+
|
29
|
+
def access_token(&block)
|
30
|
+
if block_given?
|
31
|
+
self.password = block
|
32
|
+
else
|
33
|
+
password
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
7
37
|
def connection(refresh = false)
|
8
38
|
if defined?(@connection) || self == Base
|
9
39
|
@connection = Connection.new(site, format) if refresh || @connection.nil?
|
40
|
+
@connection.proxy = proxy if proxy
|
10
41
|
@connection.user = user if user
|
11
42
|
@connection.password = password if password
|
43
|
+
@connection.auth_type = auth_type if auth_type
|
12
44
|
@connection.timeout = timeout if timeout
|
13
45
|
@connection
|
14
46
|
else
|
15
47
|
superclass.connection
|
16
48
|
end
|
17
49
|
end
|
50
|
+
|
18
51
|
def element_path(id, prefix_options = {}, query_options = nil)
|
19
52
|
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
|
20
53
|
"/feeds/#{collection_name}#{prefix(prefix_options)}#{id}#{query_string(query_options)}"
|
@@ -1,8 +1,20 @@
|
|
1
1
|
module GoogleSpreadsheets
|
2
2
|
class Connection < ActiveResource::Connection
|
3
|
-
DEBUG = false
|
4
3
|
def authorization_header(http_method, uri)
|
5
|
-
if
|
4
|
+
if auth_type == :bearer
|
5
|
+
{ 'Authorization' => "Bearer #{access_token}" }
|
6
|
+
else
|
7
|
+
client_login_authorization_header(http_method, uri)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def access_token
|
12
|
+
@password.respond_to?(:call) ? @password.call(self) : @password
|
13
|
+
end
|
14
|
+
|
15
|
+
# Deprecated and Not recommended
|
16
|
+
def client_login_authorization_header(http_method, uri)
|
17
|
+
if @user && @password && !@auth_token
|
6
18
|
email = CGI.escape(@user)
|
7
19
|
password = CGI.escape(@password)
|
8
20
|
http = Net::HTTP.new('www.google.com', 443)
|
@@ -12,10 +24,15 @@ module GoogleSpreadsheets
|
|
12
24
|
"accountType=HOSTED_OR_GOOGLE&Email=#{email}&Passwd=#{password}&service=wise",
|
13
25
|
{ 'Content-Type' => 'application/x-www-form-urlencoded' })
|
14
26
|
handle_response(resp)
|
15
|
-
@
|
27
|
+
@auth_token = (data || resp.body)[/Auth=(.*)/n, 1]
|
16
28
|
end
|
17
|
-
@
|
29
|
+
@auth_token ? { 'Authorization' => "GoogleLogin auth=#{@auth_token}" } : {}
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def legitimize_auth_type(auth_type)
|
34
|
+
auth_type = auth_type.to_sym
|
35
|
+
auth_type.in?([:basic, :digest, :bearer]) ? auth_type : :basic
|
18
36
|
end
|
19
|
-
def http() http = super; http.set_debug_output($stderr) if DEBUG; http end
|
20
37
|
end
|
21
38
|
end
|
data/lib/google_spreadsheets.rb
CHANGED
metadata
CHANGED
@@ -1,64 +1,93 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeresource-google_spreadsheets
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Chihiro Ito
|
8
8
|
- Toru KAWAMURA
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: activeresource
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
24
21
|
type: :runtime
|
25
|
-
|
26
|
-
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
27
29
|
name: activesupport
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
28
36
|
prerelease: false
|
29
|
-
|
30
|
-
requirements:
|
31
|
-
-
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: google-api-client
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
32
49
|
type: :runtime
|
33
|
-
version_requirements: *id003
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: bundler
|
36
50
|
prerelease: false
|
37
|
-
|
38
|
-
requirements:
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: bundler
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
39
60
|
- - ~>
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version:
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.3'
|
42
63
|
type: :development
|
43
|
-
version_requirements: *id004
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: rake
|
46
64
|
prerelease: false
|
47
|
-
|
48
|
-
requirements:
|
49
|
-
-
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.3'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
50
77
|
type: :development
|
51
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
52
84
|
description: Google Spreadsheets accessor with ActiveResource
|
53
|
-
email:
|
85
|
+
email:
|
54
86
|
- tkawa@4bit.net
|
55
87
|
executables: []
|
56
|
-
|
57
88
|
extensions: []
|
58
|
-
|
59
89
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
files:
|
90
|
+
files:
|
62
91
|
- .gitignore
|
63
92
|
- Gemfile
|
64
93
|
- LICENSE.txt
|
@@ -67,6 +96,8 @@ files:
|
|
67
96
|
- activeresource-google_spreadsheets.gemspec
|
68
97
|
- lib/activeresource-google_spreadsheets.rb
|
69
98
|
- lib/google_spreadsheets.rb
|
99
|
+
- lib/google_spreadsheets/auth.rb
|
100
|
+
- lib/google_spreadsheets/auth/service_accounts_access_token.rb
|
70
101
|
- lib/google_spreadsheets/base.rb
|
71
102
|
- lib/google_spreadsheets/connection.rb
|
72
103
|
- lib/google_spreadsheets/enhanced.rb
|
@@ -85,27 +116,27 @@ files:
|
|
85
116
|
- lib/google_spreadsheets/version.rb
|
86
117
|
- lib/google_spreadsheets/worksheet.rb
|
87
118
|
homepage: https://github.com/tkawa/activeresource-google_spreadsheets
|
88
|
-
licenses:
|
119
|
+
licenses:
|
89
120
|
- MIT
|
90
121
|
metadata: {}
|
91
|
-
|
92
122
|
post_install_message:
|
93
123
|
rdoc_options: []
|
94
|
-
|
95
|
-
require_paths:
|
124
|
+
require_paths:
|
96
125
|
- lib
|
97
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
-
|
100
|
-
|
101
|
-
|
102
|
-
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
103
136
|
requirements: []
|
104
|
-
|
105
137
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
138
|
+
rubygems_version: 2.4.3
|
107
139
|
signing_key:
|
108
140
|
specification_version: 4
|
109
141
|
summary: Google Spreadsheets accessor with ActiveResource
|
110
142
|
test_files: []
|
111
|
-
|