apiphobic-authorization 1.4.0 → 1.7.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.txt +1 -1
- data/lib/apiphobic/authorization/authorizer.rb +6 -6
- data/lib/apiphobic/authorization/authorizers/parameters.rb +24 -32
- data/lib/apiphobic/authorization/authorizers/scope.rb +13 -11
- data/lib/apiphobic/authorization/resource.rb +19 -13
- data/lib/apiphobic/authorization/version.rb +1 -1
- data/lib/apiphobic/errors/unpermitted_inclusions.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +45 -39
- metadata.gz.sig +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6545946cd0dd43da1ee7ba9ad6c630c0f621219b50515a11e3e9458ec1c51fd4
|
4
|
+
data.tar.gz: 15192e3bde8064f9f5211512438700accbf8dbbb9b332321706c0e5ac3538c54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ad4d024ba604d3e8aa408f29526c976ea69a1382986225683bbd13033149125f20755566668230b760a52beb2cce0f0d6e13703d189509cf1ec7e7d9a419a4
|
7
|
+
data.tar.gz: d13c43e139feb1958ac9fd62b1cd8941a9a2b52e6c9108b522c04b4a1b6448519b019315396b79028270939645925bf44756b0e7bf528eb454b82918377cdd53
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/LICENSE.txt
CHANGED
@@ -7,21 +7,21 @@ class Authorizer
|
|
7
7
|
:parameters,
|
8
8
|
:resource,
|
9
9
|
:token,
|
10
|
-
:
|
10
|
+
:audience
|
11
11
|
|
12
|
-
# rubocop:disable Metrics/ParameterLists
|
13
|
-
def initialize(action:, token:, user:, issuer:, parameters:, resource:, **other)
|
12
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, resource:, **other) # rubocop:disable Metrics/ParameterLists
|
14
13
|
self.action = action
|
15
|
-
self.
|
16
|
-
self.user = user
|
14
|
+
self.audience = audience
|
17
15
|
self.parameters = parameters
|
18
16
|
self.resource = resource
|
17
|
+
self.token = token
|
19
18
|
|
20
19
|
other.each do |name, value|
|
21
20
|
public_send("#{name}=", value)
|
22
21
|
end
|
23
22
|
end
|
24
|
-
|
23
|
+
|
24
|
+
alias user audience
|
25
25
|
|
26
26
|
def able_to_index?
|
27
27
|
false
|
@@ -4,7 +4,6 @@ require 'apple_core/refinements/deep_dup'
|
|
4
4
|
require 'apiphobic/errors/unpermitted_inclusions'
|
5
5
|
require 'apiphobic/errors/unpermitted_sorts'
|
6
6
|
|
7
|
-
# rubocop:disable Metrics/ClassLength
|
8
7
|
module Apiphobic
|
9
8
|
module Authorization
|
10
9
|
module Authorizers
|
@@ -12,9 +11,9 @@ class Parameters
|
|
12
11
|
using ::AppleCore::Refinements::DeepDup
|
13
12
|
|
14
13
|
attr_accessor :action,
|
14
|
+
:audience,
|
15
15
|
:parameters,
|
16
|
-
:token
|
17
|
-
:user
|
16
|
+
:token
|
18
17
|
|
19
18
|
attr_writer :authorized_attributes,
|
20
19
|
:authorized_filters,
|
@@ -23,18 +22,18 @@ class Parameters
|
|
23
22
|
:authorized_sorts,
|
24
23
|
:ignored_attributes
|
25
24
|
|
26
|
-
# rubocop:disable Metrics/ParameterLists
|
27
|
-
def initialize(action:, token:, user:, issuer:, parameters:, **other)
|
25
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, **other) # rubocop:disable Metrics/ParameterLists
|
28
26
|
self.action = action
|
27
|
+
self.audience = audience
|
29
28
|
self.parameters = parameters.deep_dup
|
30
29
|
self.token = token
|
31
|
-
self.user = user
|
32
30
|
|
33
31
|
other.each do |name, value|
|
34
32
|
public_send("#{name}=", value)
|
35
33
|
end
|
36
34
|
end
|
37
|
-
|
35
|
+
|
36
|
+
alias user audience
|
38
37
|
|
39
38
|
def authorized_parameters
|
40
39
|
@authorized_parameters || [
|
@@ -92,8 +91,7 @@ class Parameters
|
|
92
91
|
@ignored_attributes || []
|
93
92
|
end
|
94
93
|
|
95
|
-
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
96
|
-
def call
|
94
|
+
def call # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
97
95
|
sliced_parameters = authorized_parameters.map { |v| v.is_a?(::Hash) ? v[:name] : v }
|
98
96
|
|
99
97
|
parameters.slice!(*sliced_parameters)
|
@@ -136,7 +134,6 @@ class Parameters
|
|
136
134
|
|
137
135
|
parameters.permit(*authorization)
|
138
136
|
end
|
139
|
-
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
140
137
|
|
141
138
|
private
|
142
139
|
|
@@ -195,10 +192,10 @@ class Parameters
|
|
195
192
|
def authorize_parameter(name:,
|
196
193
|
value:,
|
197
194
|
authorization_parameters:,
|
198
|
-
authorization_value: nil,
|
199
195
|
raw_parameters:,
|
200
|
-
|
201
|
-
|
196
|
+
authorization_value: nil,
|
197
|
+
allowed_values: nil,
|
198
|
+
override: {})
|
202
199
|
|
203
200
|
value = override_parameter(name: name,
|
204
201
|
value: value,
|
@@ -209,7 +206,7 @@ class Parameters
|
|
209
206
|
|
210
207
|
if authorization_value
|
211
208
|
authorization_parameters[0][name] = authorization_value
|
212
|
-
elsif value.
|
209
|
+
elsif value.instance_of?(::Array)
|
213
210
|
authorization_parameters[0][name] = []
|
214
211
|
else
|
215
212
|
authorization_parameters << name
|
@@ -252,21 +249,19 @@ class Parameters
|
|
252
249
|
parameters[:data][:relationships] = raw_parameter_relationships.delete_if(&key_match)
|
253
250
|
end
|
254
251
|
|
255
|
-
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
256
|
-
def override_parameter(name:, value:, hash:, override:)
|
252
|
+
def override_parameter(name:, value:, hash:, override:) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
257
253
|
override = { with: nil, if_admin: false, if_absent: true, if_blank: true }
|
258
254
|
.merge(override)
|
259
255
|
|
260
|
-
return value
|
261
|
-
|
262
|
-
|
263
|
-
|
256
|
+
return value if !override[:with] ||
|
257
|
+
(token.admin? && !override[:if_admin]) ||
|
258
|
+
(!hash.has_key?(name) && !override[:if_absent]) ||
|
259
|
+
(hash.has_key?(name) && value.nil? && !override[:if_blank])
|
264
260
|
|
265
261
|
hash[name] = override[:with]
|
266
262
|
|
267
263
|
override[:with]
|
268
264
|
end
|
269
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
270
265
|
|
271
266
|
def authorized_data_parameter
|
272
267
|
authorization[0][:data][2]
|
@@ -284,16 +279,14 @@ class Parameters
|
|
284
279
|
authorization[0][:filter] ||= [{}]
|
285
280
|
end
|
286
281
|
|
287
|
-
# rubocop:disable Layout/ExtraSpacing
|
288
282
|
def raw_parameter_attributes
|
289
283
|
@raw_parameter_attributes ||= begin
|
290
|
-
|
291
|
-
|
284
|
+
parameters[:data] ||= {}
|
285
|
+
parameters[:data][:attributes] ||= {}
|
292
286
|
|
293
|
-
|
294
|
-
|
287
|
+
parameters[:data][:attributes]
|
288
|
+
end
|
295
289
|
end
|
296
|
-
# rubocop:enable Layout/ExtraSpacing
|
297
290
|
|
298
291
|
def raw_parameter_filters
|
299
292
|
@raw_parameter_filters ||= parameters[:filter] ||= {}
|
@@ -305,11 +298,11 @@ class Parameters
|
|
305
298
|
|
306
299
|
def raw_parameter_relationships
|
307
300
|
@raw_parameter_relationships ||= begin
|
308
|
-
|
309
|
-
|
301
|
+
parameters[:data] ||= {}
|
302
|
+
parameters[:data][:relationships] ||= {}
|
310
303
|
|
311
|
-
|
312
|
-
|
304
|
+
parameters[:data][:relationships]
|
305
|
+
end
|
313
306
|
end
|
314
307
|
|
315
308
|
def raw_parameter_sorts
|
@@ -335,4 +328,3 @@ end
|
|
335
328
|
end
|
336
329
|
end
|
337
330
|
end
|
338
|
-
# rubocop:enable Metrics/ClassLength
|
@@ -9,24 +9,24 @@ class Scope
|
|
9
9
|
using ::AppleCore::Refinements::String
|
10
10
|
|
11
11
|
attr_accessor :action,
|
12
|
-
:
|
13
|
-
:user,
|
12
|
+
:audience,
|
14
13
|
:raw_parameters,
|
15
|
-
:scope_root
|
14
|
+
:scope_root,
|
15
|
+
:token
|
16
16
|
|
17
|
-
# rubocop:disable Metrics/ParameterLists
|
18
|
-
def initialize(action:, token:, user:, issuer:, parameters:, scope_root:, **other)
|
17
|
+
def initialize(action:, token:, audience:, issuer:, parameters:, scope_root:, **other) # rubocop:disable Metrics/ParameterLists
|
19
18
|
self.action = action
|
20
|
-
self.
|
21
|
-
self.user = user
|
19
|
+
self.audience = audience
|
22
20
|
self.raw_parameters = parameters
|
23
21
|
self.scope_root = scope_root
|
22
|
+
self.token = token
|
24
23
|
|
25
24
|
other.each do |name, value|
|
26
25
|
public_send("#{name}=", value)
|
27
26
|
end
|
28
27
|
end
|
29
|
-
|
28
|
+
|
29
|
+
alias user audience
|
30
30
|
|
31
31
|
def user_scope
|
32
32
|
scope_root.public_send("for_#{user_underscored_class_name}", scope_user_id)
|
@@ -52,10 +52,12 @@ class Scope
|
|
52
52
|
|
53
53
|
def user_underscored_class_name
|
54
54
|
@user_underscored_class_name ||= begin
|
55
|
-
|
55
|
+
base_user_class_name = user
|
56
|
+
.class
|
57
|
+
.name[/([^:]+)\z/, 1]
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
+
base_user_class_name.underscore.downcase
|
60
|
+
end
|
59
61
|
end
|
60
62
|
|
61
63
|
def authorized_scope_id(name:, default:)
|
@@ -32,7 +32,8 @@ module Resource
|
|
32
32
|
[
|
33
33
|
name_components['root_module'],
|
34
34
|
'Authorizers',
|
35
|
-
|
35
|
+
name_components['submodules'],
|
36
|
+
base_resource_name,
|
36
37
|
type,
|
37
38
|
]
|
38
39
|
.compact
|
@@ -68,10 +69,10 @@ module Resource
|
|
68
69
|
.class
|
69
70
|
.authorizer_parameters_class
|
70
71
|
.new(action: action_name,
|
71
|
-
|
72
|
-
user: authorized_user,
|
72
|
+
audience: authorized_audience,
|
73
73
|
issuer: authorized_issuer,
|
74
|
-
parameters: params
|
74
|
+
parameters: params,
|
75
|
+
token: token)
|
75
76
|
.call
|
76
77
|
end
|
77
78
|
|
@@ -84,11 +85,11 @@ module Resource
|
|
84
85
|
.class
|
85
86
|
.authorizer_scope_class
|
86
87
|
.new(action: action_name,
|
87
|
-
|
88
|
-
user: authorized_user,
|
88
|
+
audience: authorized_audience,
|
89
89
|
issuer: authorized_issuer,
|
90
90
|
parameters: authorized_parameters,
|
91
|
-
scope_root: self.class.authorized_scope_root_class
|
91
|
+
scope_root: self.class.authorized_scope_root_class,
|
92
|
+
token: token)
|
92
93
|
.call
|
93
94
|
end
|
94
95
|
|
@@ -103,11 +104,16 @@ module Resource
|
|
103
104
|
.class
|
104
105
|
.authorizer_class
|
105
106
|
.new(action: action_name,
|
106
|
-
|
107
|
-
user: authorized_user,
|
107
|
+
audience: authorized_audience,
|
108
108
|
issuer: authorized_issuer,
|
109
109
|
parameters: authorized_parameters,
|
110
|
-
resource: authorized_resource&.processed
|
110
|
+
resource: authorized_resource&.processed,
|
111
|
+
token: token)
|
112
|
+
end
|
113
|
+
|
114
|
+
def authorized_resource_class
|
115
|
+
@authorized_resource_class ||= Object
|
116
|
+
.const_get(self.class.singular_resource_class_name)
|
111
117
|
end
|
112
118
|
|
113
119
|
def authorized_resource
|
@@ -115,7 +121,7 @@ module Resource
|
|
115
121
|
|
116
122
|
@authorized_resource ||= \
|
117
123
|
::Apiphobic::Resource::Model
|
118
|
-
.new(resource:
|
124
|
+
.new(resource: authorized_resource_class,
|
119
125
|
id: params[:id],
|
120
126
|
parameters: authorized_parameters)
|
121
127
|
end
|
@@ -129,8 +135,8 @@ module Resource
|
|
129
135
|
parameters: authorized_parameters)
|
130
136
|
end
|
131
137
|
|
132
|
-
def
|
133
|
-
|
138
|
+
def authorized_audience
|
139
|
+
current_audience
|
134
140
|
end
|
135
141
|
|
136
142
|
def authorized_issuer
|
@@ -19,7 +19,7 @@ class UnpermittedInclusions < RuntimeError
|
|
19
19
|
|
20
20
|
def detail
|
21
21
|
'One or more of the inclusions you attempted to pass via the "include" parameter ' \
|
22
|
-
|
22
|
+
'are either not available or not authorized.'
|
23
23
|
end
|
24
24
|
|
25
25
|
def source
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apiphobic-authorization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thegranddesign
|
@@ -10,28 +10,34 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
|
14
|
+
bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
|
15
|
+
bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
|
16
|
+
NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
|
17
|
+
BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
|
18
|
+
ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
|
19
|
+
5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
|
20
|
+
Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
|
21
|
+
nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
|
22
|
+
7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
|
23
|
+
8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
|
24
|
+
c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
|
25
|
+
IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
|
26
|
+
KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
|
27
|
+
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
|
28
|
+
MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
|
29
|
+
bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
|
30
|
+
b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
|
31
|
+
rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
|
32
|
+
SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
|
33
|
+
jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
|
34
|
+
KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
|
35
|
+
/ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
|
36
|
+
rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
|
37
|
+
3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
|
38
|
+
TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
|
33
39
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
40
|
+
date: 2022-07-17 00:00:00.000000000 Z
|
35
41
|
dependencies:
|
36
42
|
- !ruby/object:Gem::Dependency
|
37
43
|
name: apiphobic-resource
|
@@ -39,14 +45,14 @@ dependencies:
|
|
39
45
|
requirements:
|
40
46
|
- - "~>"
|
41
47
|
- !ruby/object:Gem::Version
|
42
|
-
version: '1.
|
48
|
+
version: '1.2'
|
43
49
|
type: :runtime
|
44
50
|
prerelease: false
|
45
51
|
version_requirements: !ruby/object:Gem::Requirement
|
46
52
|
requirements:
|
47
53
|
- - "~>"
|
48
54
|
- !ruby/object:Gem::Version
|
49
|
-
version: '1.
|
55
|
+
version: '1.2'
|
50
56
|
- !ruby/object:Gem::Dependency
|
51
57
|
name: apple_core
|
52
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,50 +71,44 @@ dependencies:
|
|
65
71
|
name: erratum
|
66
72
|
requirement: !ruby/object:Gem::Requirement
|
67
73
|
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 3.1.1
|
71
74
|
- - "~>"
|
72
75
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
76
|
+
version: '4.0'
|
74
77
|
type: :runtime
|
75
78
|
prerelease: false
|
76
79
|
version_requirements: !ruby/object:Gem::Requirement
|
77
80
|
requirements:
|
78
|
-
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: 3.1.1
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '4.0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: actionpack
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
90
|
+
version: '7.0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '7.0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: rspec
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '3.
|
104
|
+
version: '3.11'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '3.
|
111
|
+
version: '3.11'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: rspeckled
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,11 +158,18 @@ files:
|
|
158
158
|
- lib/apiphobic/json_api/relationship.rb
|
159
159
|
- lib/apiphobic/rails/api_controller_compatibility.rb
|
160
160
|
- lib/apiphobic/rails/controller.rb
|
161
|
-
homepage:
|
161
|
+
homepage: https://github.com/thekompanee/apiphobic-authorization
|
162
162
|
licenses:
|
163
163
|
- MIT
|
164
164
|
metadata:
|
165
165
|
allowed_push_host: https://rubygems.org
|
166
|
+
bug_tracker_uri: https://github.com/thekompanee/apiphobic-authorization/issues
|
167
|
+
changelog_uri: https://github.com/thekompanee/apiphobic-authorization/blob/master/CHANGELOG.md
|
168
|
+
documentation_uri: https://github.com/thekompanee/apiphobic-authorization/tree/releases/v1.7.0
|
169
|
+
homepage_uri: https://github.com/thekompanee/apiphobic-authorization
|
170
|
+
source_code_uri: https://github.com/thekompanee/apiphobic-authorization
|
171
|
+
wiki_uri: https://github.com/thekompanee/apiphobic-authorization/wiki
|
172
|
+
rubygems_mfa_required: 'true'
|
166
173
|
post_install_message:
|
167
174
|
rdoc_options: []
|
168
175
|
require_paths:
|
@@ -178,8 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
185
|
- !ruby/object:Gem::Version
|
179
186
|
version: '0'
|
180
187
|
requirements: []
|
181
|
-
|
182
|
-
rubygems_version: 2.7.7
|
188
|
+
rubygems_version: 3.3.7
|
183
189
|
signing_key:
|
184
190
|
specification_version: 4
|
185
191
|
summary: Authorization for API Requests
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
:��#�
|
2
|
+
��;��K�g�v#r+Z:�8,Ś%�wTK~x*�m�!@�a�s��Nz#�"1R��
|