googleauth-extras 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +7 -0
- data/googleauth-extras.gemspec +5 -5
- data/lib/google/auth/extras/impersonated_credential.rb +11 -0
- data/lib/google/auth/extras/static_credential.rb +14 -2
- data/lib/google/auth/extras/version.rb +1 -1
- data/lib/google/auth/extras.rb +25 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29ad90b986d4915e183e4592f58eedff84badd6ee70900337981d3173f0c64b2
|
4
|
+
data.tar.gz: 0c69256ea700526a9891d9434338954fec778d99b6f3c927654739dd690f03dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b3de1122f1a208f337134b30023fef63eb171c5ad3c888a8cc0cb81bc72aa5ae0d476f1c22ff659d4ce4637795ffff5ae1a5e07eee64dd68f9a5f887e9f02bb
|
7
|
+
data.tar.gz: 7eb79ba62b30a7b7a5cc2bab1d00f1079d19f57fd99df98ad52fec2d46d5e77eae781ddb50960c1832e77462e6b2e9d4c729e860db25610b2014432df6505f0d
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
0.4.0
|
4
|
+
----------
|
5
|
+
|
6
|
+
- Support setting a quota project. ([#11](https://github.com/persona-id/googleauth-extras/pull/11))
|
7
|
+
|
8
|
+
- Update gemspec for new RuboCop settings. ([#12](https://github.com/persona-id/googleauth-extras/pull/12))
|
9
|
+
|
3
10
|
0.3.0
|
4
11
|
-----
|
5
12
|
|
data/googleauth-extras.gemspec
CHANGED
@@ -30,9 +30,9 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ['lib']
|
32
32
|
|
33
|
-
spec.
|
34
|
-
spec.
|
35
|
-
spec.
|
36
|
-
spec.
|
37
|
-
spec.
|
33
|
+
spec.add_dependency 'addressable', '~> 2.8'
|
34
|
+
spec.add_dependency 'faraday', '>= 1.0', '< 3.0'
|
35
|
+
spec.add_dependency 'google-apis-iamcredentials_v1'
|
36
|
+
spec.add_dependency 'googleauth', '~> 1.3'
|
37
|
+
spec.add_dependency 'signet', '>= 0.17.0', '< 0.19.0'
|
38
38
|
end
|
@@ -7,6 +7,8 @@ module Google
|
|
7
7
|
class ImpersonatedCredential < Signet::OAuth2::Client
|
8
8
|
include IdentityCredentialRefreshPatch
|
9
9
|
|
10
|
+
attr_reader :quota_project_id
|
11
|
+
|
10
12
|
# A credential that impersonates a service account.
|
11
13
|
#
|
12
14
|
# The `email_address` of the service account to impersonate may be the exact
|
@@ -36,6 +38,10 @@ module Google
|
|
36
38
|
# additional API call.
|
37
39
|
# Only supported when not using a target_audience.
|
38
40
|
#
|
41
|
+
# @param quota_project_id [String]
|
42
|
+
# The project ID used for quota and billing. This project may be different from
|
43
|
+
# the project used to create the credentials.
|
44
|
+
#
|
39
45
|
# @param scope [String, Array<String>]
|
40
46
|
# The OAuth 2 scopes to request. Can either be formatted as a comma seperated string or array.
|
41
47
|
# Only supported when not using a target_audience.
|
@@ -54,6 +60,7 @@ module Google
|
|
54
60
|
delegate_email_addresses: nil,
|
55
61
|
include_email: nil,
|
56
62
|
lifetime: nil,
|
63
|
+
quota_project_id: nil,
|
57
64
|
scope: nil,
|
58
65
|
target_audience: nil
|
59
66
|
)
|
@@ -90,6 +97,8 @@ module Google
|
|
90
97
|
end
|
91
98
|
|
92
99
|
@impersonate_name = transform_email_to_name(email_address)
|
100
|
+
|
101
|
+
@quota_project_id = quota_project_id
|
93
102
|
end
|
94
103
|
|
95
104
|
def fetch_access_token(*)
|
@@ -135,6 +144,7 @@ module Google
|
|
135
144
|
" @impersonate_delegates=#{@impersonate_delegates.inspect}" \
|
136
145
|
" @impersonate_include_email=#{@impersonate_include_email.inspect}" \
|
137
146
|
" @impersonate_name=#{@impersonate_name.inspect}" \
|
147
|
+
" @quota_project_id=#{@quota_project_id.inspect}" \
|
138
148
|
" @target_audience=#{@target_audience.inspect}" \
|
139
149
|
'>'
|
140
150
|
else
|
@@ -144,6 +154,7 @@ module Google
|
|
144
154
|
" @impersonate_delegates=#{@impersonate_delegates.inspect}" \
|
145
155
|
" @impersonate_lifetime=#{@impersonate_lifetime.inspect}" \
|
146
156
|
" @impersonate_name=#{@impersonate_name.inspect}" \
|
157
|
+
" @quota_project_id=#{@quota_project_id.inspect}" \
|
147
158
|
'>'
|
148
159
|
end
|
149
160
|
end
|
@@ -7,17 +7,25 @@ module Google
|
|
7
7
|
class StaticCredential < Signet::OAuth2::Client
|
8
8
|
class AuthorizationExpired < StandardError; end
|
9
9
|
|
10
|
+
attr_reader :quota_project_id
|
11
|
+
|
10
12
|
# A credential using a static access token.
|
11
13
|
#
|
12
14
|
# @param access_token [String]
|
13
15
|
# The access token to use.
|
14
16
|
#
|
15
|
-
|
17
|
+
# @param quota_project_id [String]
|
18
|
+
# The project ID used for quota and billing. This project may be different from
|
19
|
+
# the project used to create the credentials.
|
20
|
+
#
|
21
|
+
def initialize(access_token:, quota_project_id: nil)
|
16
22
|
super(
|
17
23
|
access_token: access_token,
|
18
24
|
expires_at: TokenInfo.lookup_access_token(access_token).fetch('exp'),
|
19
25
|
issued_at: nil,
|
20
26
|
)
|
27
|
+
|
28
|
+
@quota_project_id = quota_project_id
|
21
29
|
end
|
22
30
|
|
23
31
|
def fetch_access_token(*)
|
@@ -28,7 +36,11 @@ module Google
|
|
28
36
|
end
|
29
37
|
|
30
38
|
def inspect
|
31
|
-
"#<#{self.class.name}
|
39
|
+
"#<#{self.class.name}" \
|
40
|
+
' @access_token=[REDACTED]' \
|
41
|
+
" @expires_at=#{expires_at.inspect}" \
|
42
|
+
" @quota_project_id=#{@quota_project_id.inspect}" \
|
43
|
+
'>'
|
32
44
|
end
|
33
45
|
end
|
34
46
|
end
|
data/lib/google/auth/extras.rb
CHANGED
@@ -50,6 +50,10 @@ module Google
|
|
50
50
|
# additional API call.
|
51
51
|
# Only supported when not using a target_audience.
|
52
52
|
#
|
53
|
+
# @param quota_project_id [String]
|
54
|
+
# The project ID used for quota and billing. This project may be different from
|
55
|
+
# the project used to create the credentials.
|
56
|
+
#
|
53
57
|
# @param scope [String, Array<String>]
|
54
58
|
# The OAuth 2 scopes to request. Can either be formatted as a comma seperated string or array.
|
55
59
|
# Only supported when not using a target_audience.
|
@@ -67,6 +71,7 @@ module Google
|
|
67
71
|
delegate_email_addresses: nil,
|
68
72
|
include_email: nil,
|
69
73
|
lifetime: nil,
|
74
|
+
quota_project_id: nil,
|
70
75
|
scope: nil,
|
71
76
|
target_audience: nil
|
72
77
|
)
|
@@ -76,6 +81,7 @@ module Google
|
|
76
81
|
email_address: email_address,
|
77
82
|
include_email: include_email,
|
78
83
|
lifetime: lifetime,
|
84
|
+
quota_project_id: quota_project_id,
|
79
85
|
scope: scope,
|
80
86
|
target_audience: target_audience,
|
81
87
|
)
|
@@ -106,6 +112,10 @@ module Google
|
|
106
112
|
# additional API call.
|
107
113
|
# Only supported when not using a target_audience.
|
108
114
|
#
|
115
|
+
# @param quota_project_id [String]
|
116
|
+
# The project ID used for quota and billing. This project may be different from
|
117
|
+
# the project used to create the credentials.
|
118
|
+
#
|
109
119
|
# @param scope [String, Array<String>]
|
110
120
|
# The OAuth 2 scopes to request. Can either be formatted as a comma seperated string or array.
|
111
121
|
# Only supported when not using a target_audience.
|
@@ -123,6 +133,7 @@ module Google
|
|
123
133
|
delegate_email_addresses: nil,
|
124
134
|
include_email: nil,
|
125
135
|
lifetime: nil,
|
136
|
+
quota_project_id: nil,
|
126
137
|
scope: nil,
|
127
138
|
target_audience: nil
|
128
139
|
)
|
@@ -133,6 +144,7 @@ module Google
|
|
133
144
|
email_address: email_address,
|
134
145
|
include_email: include_email,
|
135
146
|
lifetime: lifetime,
|
147
|
+
quota_project_id: quota_project_id,
|
136
148
|
scope: scope,
|
137
149
|
target_audience: target_audience,
|
138
150
|
),
|
@@ -145,10 +157,15 @@ module Google
|
|
145
157
|
# @param token [String]
|
146
158
|
# The access token to use.
|
147
159
|
#
|
160
|
+
# @param quota_project_id [String]
|
161
|
+
# The project ID used for quota and billing. This project may be different from
|
162
|
+
# the project used to create the credentials.
|
163
|
+
#
|
164
|
+
#
|
148
165
|
# @return [Google::Auth::Extras::StaticCredential]
|
149
166
|
#
|
150
|
-
def static_authorization(token)
|
151
|
-
StaticCredential.new(access_token: token)
|
167
|
+
def static_authorization(token, quota_project_id: nil)
|
168
|
+
StaticCredential.new(access_token: token, quota_project_id: quota_project_id)
|
152
169
|
end
|
153
170
|
|
154
171
|
# A credential using a static access token. For usage with the newer
|
@@ -157,10 +174,14 @@ module Google
|
|
157
174
|
# @param token [String]
|
158
175
|
# The access token to use.
|
159
176
|
#
|
177
|
+
# @param quota_project_id [String]
|
178
|
+
# The project ID used for quota and billing. This project may be different from
|
179
|
+
# the project used to create the credentials.
|
180
|
+
#
|
160
181
|
# @return [Google::Auth::Credential<Google::Auth::Extras::StaticCredential>]
|
161
182
|
#
|
162
|
-
def static_credential(token)
|
163
|
-
wrap_authorization(static_authorization(token))
|
183
|
+
def static_credential(token, quota_project_id: nil)
|
184
|
+
wrap_authorization(static_authorization(token, quota_project_id: quota_project_id))
|
164
185
|
end
|
165
186
|
|
166
187
|
# Take an authorization and turn it into a credential, primarily used
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: googleauth-extras
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Persona Identities
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|