silkey-sdk 0.0.3 → 0.0.4
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
- data/CHANGELOG.md +17 -0
- data/DEVELOPMENT.md +0 -4
- data/Gemfile +1 -9
- data/Gemfile.lock +1 -1
- data/README.md +4 -4
- data/lib/silkey/models/jwt_payload.rb +16 -15
- data/lib/silkey/registry_contract/registry_contract.rb +1 -1
- data/lib/silkey/sdk.rb +68 -50
- data/lib/silkey/services/logger_service.rb +1 -1
- data/lib/silkey/version.rb +1 -1
- data/silkey-sdk.gemspec +10 -10
- metadata +45 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34f7f3262bb3dc4802e1c98c85bd6fa14106684137d51c08b6af0aa1b52c336f
|
4
|
+
data.tar.gz: f278210ebd52cd945a61eda5659f4f21b02796ed23f4ac6797493963fe9e8e48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e94b68b8281d193a9dc58e672130b047f1ae41ba3a9e3f13bdcb575eac974bb2bfcd98c2d8275d08295c381cf4307df7c471f39334e8bda7547180983d35c454
|
7
|
+
data.tar.gz: f35e71a0cd42a65c431916ff69bc028e20345d506f6219010b5d50fe0e8ab2a123a23bd72cbbb0207bbcfe4cad12f29cd2d50408de9697a2b3ca722c354d62c6
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [0.0.4] - 2020-11-26
|
8
|
+
### Added
|
9
|
+
- Logo and badges to README
|
10
|
+
- `generate_sso_request_params` throws on empty PK
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- join operator for `message_to_sign` is now `&`
|
14
|
+
- `message_to_sign` ignores data that are not set
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
- ensure testing `throws` is working correctly
|
18
|
+
- rubocop offences
|
19
|
+
|
20
|
+
## [0.0.3] - 2020-11-25
|
21
|
+
### Added
|
22
|
+
- Logo and badges to README
|
23
|
+
|
7
24
|
## [0.0.2] 2020-11-23
|
8
25
|
### Added
|
9
26
|
- add support for `redirectMethod`
|
data/DEVELOPMENT.md
CHANGED
data/Gemfile
CHANGED
@@ -1,13 +1,5 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
# git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
|
-
|
5
|
-
# Specify your gem's dependencies in andromeda.gemspec
|
6
|
-
|
7
|
-
#source 'https://hwGZD769AGZu5Wyzp87F@repo.fury.io/silkey/' do
|
8
|
-
# gem 'ethereum.rb', '~> 2.2.3'
|
9
|
-
#end
|
10
|
-
|
11
3
|
gemspec
|
12
4
|
|
13
|
-
gem "rspec"
|
5
|
+
gem "rspec"
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-

|
2
|
-
|
3
1
|
# Silkey SDK for Ruby
|
4
2
|
|
3
|
+

|
4
|
+
|
5
5
|
[](https://badge.fury.io/gh/Silkey-Team%2Fsilkey-sdk)
|
6
6
|
[](https://badge.fury.io/rb/silkey-sdk)
|
7
7
|
|
@@ -32,14 +32,14 @@ end
|
|
32
32
|
| signature | yes | string | Domain owner signature
|
33
33
|
| ssoTimestamp | yes | number | Time of signing SSO request
|
34
34
|
| redirectUrl | yes | string | Where to redirect user with token after sign in
|
35
|
-
| redirectMethod | no | GET/POST | How to redirect user after sign in, default is POST
|
36
35
|
| cancelUrl | yes | string | Where to redirect user on error
|
36
|
+
| redirectMethod | no | GET/POST | How to redirect user after sign in, default is POST
|
37
37
|
| refId | no | string | It will be return with user token, you may use it to identify request
|
38
38
|
| scope | no | string | Scope of data to return in a token payload: `id` (default) returns only user address, `email` returns address + email
|
39
39
|
|
40
40
|
|
41
41
|
```rb
|
42
|
-
params = { :
|
42
|
+
params = { redirectUrl: 'https://your-website', refId: '12ab' }
|
43
43
|
sso_params = Silkey::SDK.generate_sso_request_params(private_key, params)
|
44
44
|
```
|
45
45
|
|
@@ -68,7 +68,6 @@ module Silkey
|
|
68
68
|
self.silkey_signature_timestamp = timestamp
|
69
69
|
self
|
70
70
|
end
|
71
|
-
|
72
71
|
# rubocop:enable Naming/AccessorMethodName
|
73
72
|
|
74
73
|
##
|
@@ -78,20 +77,9 @@ module Silkey
|
|
78
77
|
self.user_signature_timestamp = Silkey::Utils.current_timestamp
|
79
78
|
end
|
80
79
|
|
81
|
-
|
82
|
-
adr_hex = Silkey::Utils.remove0x(address).downcase
|
83
|
-
|
84
|
-
str2_hex = [
|
85
|
-
'refId', ref_id.to_s,
|
86
|
-
'scope', scope,
|
87
|
-
'userSignatureTimestamp'
|
88
|
-
].map { |str| str.to_s.unpack('H*') }.join('')
|
89
|
-
|
90
|
-
str_hex = "#{str1_hex}#{adr_hex}#{str2_hex}"
|
91
|
-
|
92
|
-
return str_hex if Silkey::Utils.empty?(user_signature_timestamp)
|
80
|
+
return pack_payload_to_hex if Silkey::Utils.empty?(user_signature_timestamp)
|
93
81
|
|
94
|
-
"#{
|
82
|
+
"#{pack_payload_to_hex}#{Silkey::Utils.int_to_hex(user_signature_timestamp.to_s)}"
|
95
83
|
end
|
96
84
|
|
97
85
|
def message_to_sign_by_silkey
|
@@ -130,7 +118,7 @@ module Silkey
|
|
130
118
|
if k == 'scope'
|
131
119
|
set_scope(v)
|
132
120
|
else
|
133
|
-
|
121
|
+
instance_variable_set("@#{var}", v)
|
134
122
|
end
|
135
123
|
end
|
136
124
|
|
@@ -139,6 +127,19 @@ module Silkey
|
|
139
127
|
|
140
128
|
private
|
141
129
|
|
130
|
+
def pack_payload_to_hex
|
131
|
+
str1_hex = 'address'.unpack('H*')[0]
|
132
|
+
adr_hex = Silkey::Utils.remove0x(address).downcase
|
133
|
+
|
134
|
+
str2_hex = [
|
135
|
+
'refId', ref_id.to_s,
|
136
|
+
'scope', scope,
|
137
|
+
'userSignatureTimestamp'
|
138
|
+
].map { |str| str.to_s.unpack('H*') }.join('')
|
139
|
+
|
140
|
+
"#{str1_hex}#{adr_hex}#{str2_hex}"
|
141
|
+
end
|
142
|
+
|
142
143
|
def validate_scope_email
|
143
144
|
raise 'email is empty' if Silkey::Utils.empty?(email)
|
144
145
|
|
data/lib/silkey/sdk.rb
CHANGED
@@ -12,7 +12,7 @@ module Silkey
|
|
12
12
|
#
|
13
13
|
# @example:
|
14
14
|
#
|
15
|
-
# Silkey::SDK.message_to_sign({ :
|
15
|
+
# Silkey::SDK.message_to_sign({ redirectUrl: 'http://silkey.io', refId: 1 });
|
16
16
|
#
|
17
17
|
# returns
|
18
18
|
#
|
@@ -20,15 +20,12 @@ module Silkey
|
|
20
20
|
#
|
21
21
|
def message_to_sign(to_sign = {})
|
22
22
|
msg = []
|
23
|
+
|
23
24
|
to_sign.keys.sort.each do |k|
|
24
|
-
|
25
|
-
msg.push("#{k}=")
|
26
|
-
else
|
27
|
-
msg.push("#{k}=#{to_sign[k]}")
|
28
|
-
end
|
25
|
+
msg.push("#{k}=#{to_sign[k]}") unless to_sign[k].nil?
|
29
26
|
end
|
30
27
|
|
31
|
-
msg.join('
|
28
|
+
msg.join('&')
|
32
29
|
end
|
33
30
|
|
34
31
|
##
|
@@ -36,51 +33,40 @@ module Silkey
|
|
36
33
|
#
|
37
34
|
# @param private_key [string] secret private key of domain owner
|
38
35
|
#
|
39
|
-
# @param
|
36
|
+
# @param result [Hash] Hash object with parameters:
|
40
37
|
# - redirectUrl*,
|
41
|
-
# - redirectMethod*,
|
42
38
|
# - cancelUrl*,
|
39
|
+
# - redirectMethod,
|
43
40
|
# - refId,
|
44
41
|
# - scope,
|
45
|
-
# - ssoTimestamp
|
42
|
+
# - ssoTimestamp
|
46
43
|
# marked with * are required by Silkey
|
47
44
|
#
|
48
45
|
# @return [Hash] parameters for SSO as key -> value, they all need to be set in URL
|
49
46
|
#
|
47
|
+
# @throws on missing required data
|
48
|
+
#
|
50
49
|
# @example
|
51
50
|
#
|
52
|
-
# data = { :
|
51
|
+
# data = { redirectUrl: 'https://your-website', refId: '12ab' }
|
53
52
|
# Silkey::SDK.generate_sso_request_params(private_key, data)
|
54
53
|
#
|
55
|
-
def generate_sso_request_params(private_key,
|
56
|
-
|
54
|
+
def generate_sso_request_params(private_key, data_to_sign)
|
55
|
+
result = data_to_sign.clone
|
57
56
|
|
58
|
-
raise
|
57
|
+
raise '`private_key` is empty' if Silkey::Utils.empty?(private_key)
|
59
58
|
|
60
|
-
|
59
|
+
assert_required_soo_params(result)
|
61
60
|
|
62
|
-
|
63
|
-
|
64
|
-
case k
|
65
|
-
when 'ssoTimestamp'
|
66
|
-
acc[k.to_sym] = Silkey::Utils.current_timestamp
|
67
|
-
when 'scope'
|
68
|
-
acc[k.to_sym] = 'id'
|
69
|
-
else
|
70
|
-
# type code here
|
71
|
-
end
|
72
|
-
else
|
73
|
-
acc[k.to_sym] = params[k.to_sym]
|
74
|
-
end
|
75
|
-
|
76
|
-
acc
|
61
|
+
if Silkey::Utils.empty?(result[:ssoTimestamp])
|
62
|
+
result[:ssoTimestamp] = Silkey::Utils.current_timestamp
|
77
63
|
end
|
78
64
|
|
79
|
-
|
80
|
-
message = message_to_sign(
|
81
|
-
|
65
|
+
result[:scope] = 'id' if Silkey::Utils.empty?(result[:scope])
|
66
|
+
message = message_to_sign(result)
|
67
|
+
result[:signature] = Silkey::Utils.sign_message(private_key, message)
|
82
68
|
|
83
|
-
|
69
|
+
result
|
84
70
|
end
|
85
71
|
|
86
72
|
##
|
@@ -113,7 +99,7 @@ module Silkey
|
|
113
99
|
end
|
114
100
|
|
115
101
|
nil
|
116
|
-
rescue
|
102
|
+
rescue # rubocop:disable Style/RescueStandardError
|
117
103
|
nil
|
118
104
|
end
|
119
105
|
|
@@ -133,23 +119,42 @@ module Silkey
|
|
133
119
|
|
134
120
|
private
|
135
121
|
|
122
|
+
def assert_required_soo_params(data)
|
123
|
+
raise '`redirectUrl` is empty' if Silkey::Utils.empty?(data[:redirectUrl])
|
124
|
+
|
125
|
+
raise '`cancelUrl` is empty' if Silkey::Utils.empty?(data[:cancelUrl])
|
126
|
+
end
|
127
|
+
|
136
128
|
def token_payload(token)
|
137
129
|
# Set password to nil and validation to false otherwise this won't work
|
138
130
|
decoded = JWT.decode token, nil, false
|
139
131
|
decoded[0]
|
140
132
|
end
|
141
133
|
|
142
|
-
def
|
143
|
-
|
144
|
-
|
134
|
+
def can_validate_user_signature?(jwt_payload)
|
135
|
+
if Silkey::Utils.empty?(jwt_payload.address)
|
136
|
+
logger.warn('Verification failed, missing user address')
|
137
|
+
return false
|
138
|
+
end
|
139
|
+
|
140
|
+
if Silkey::Utils.empty?(jwt_payload.user_signature)
|
141
|
+
logger.warn('Verification failed, missing user signature')
|
142
|
+
return false
|
143
|
+
end
|
145
144
|
|
146
|
-
if
|
147
|
-
|
148
|
-
utils.empty?(jwt_payload.user_signature_timestamp)
|
149
|
-
logger.warn('Verification failed, missing user signature/timestamp and/or address')
|
145
|
+
if Silkey::Utils.empty?(jwt_payload.user_signature_timestamp)
|
146
|
+
logger.warn('Verification failed, missing user signature timestamp ')
|
150
147
|
return false
|
151
148
|
end
|
152
149
|
|
150
|
+
true
|
151
|
+
end
|
152
|
+
|
153
|
+
def user_signature_valid?(payload)
|
154
|
+
jwt_payload = Silkey::Models::JwtPayload.new.import(payload)
|
155
|
+
|
156
|
+
return false unless can_validate_user_signature?(jwt_payload)
|
157
|
+
|
153
158
|
signer = Silkey::Utils
|
154
159
|
.verify_message(jwt_payload.message_to_sign_by_user, jwt_payload.user_signature)
|
155
160
|
|
@@ -165,24 +170,37 @@ module Silkey
|
|
165
170
|
false
|
166
171
|
end
|
167
172
|
|
168
|
-
def
|
169
|
-
|
170
|
-
|
173
|
+
def cant_validate_silky_signature?(jwt_payload)
|
174
|
+
empty_email = Silkey::Utils.empty?(jwt_payload.email)
|
175
|
+
empty_sig = Silkey::Utils.empty?(jwt_payload.silkey_signature)
|
171
176
|
|
172
|
-
|
173
|
-
|
174
|
-
|
177
|
+
empty_email && empty_sig
|
178
|
+
end
|
179
|
+
|
180
|
+
def silkey_sig_check_requirements?(jwt_payload)
|
181
|
+
empty_email = Silkey::Utils.empty?(jwt_payload.email)
|
182
|
+
empty_sig = Silkey::Utils.empty?(jwt_payload.silkey_signature)
|
175
183
|
|
176
|
-
if
|
184
|
+
if empty_email ^ empty_sig
|
177
185
|
logger.warn('Verification failed, missing silkey signature or email')
|
178
186
|
return false
|
179
187
|
end
|
180
188
|
|
181
|
-
if
|
189
|
+
if Silkey::Utils.empty?(jwt_payload.silkey_signature_timestamp)
|
182
190
|
logger.warn('Verification failed, missing silkey signature timestamp')
|
183
191
|
return false
|
184
192
|
end
|
185
193
|
|
194
|
+
true
|
195
|
+
end
|
196
|
+
|
197
|
+
def silkey_signature_valid?(payload, silkey_public_key)
|
198
|
+
jwt_payload = Silkey::Models::JwtPayload.new.import(payload)
|
199
|
+
|
200
|
+
return nil if cant_validate_silky_signature?(jwt_payload)
|
201
|
+
|
202
|
+
return false unless silkey_sig_check_requirements?(jwt_payload)
|
203
|
+
|
186
204
|
signer = Silkey::Utils.verify_message(
|
187
205
|
jwt_payload.message_to_sign_by_silkey, jwt_payload.silkey_signature
|
188
206
|
)
|
data/lib/silkey/version.rb
CHANGED
data/silkey-sdk.gemspec
CHANGED
@@ -16,15 +16,15 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.homepage = 'https://github.com/Silkey-Team/ruby-sdk'
|
17
17
|
spec.licenses = ['MIT']
|
18
18
|
|
19
|
-
# spec.files = [
|
19
|
+
# spec.files = ['lib/sdk.rb']
|
20
20
|
|
21
21
|
spec.metadata = {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
'bug_tracker_uri' => 'https://github.com/Silkey-Team/ruby-sdk/issues',
|
23
|
+
'changelog_uri' => 'https://github.com/Silkey-Team/ruby-sdk/blob/master/CHANGELOG.md',
|
24
|
+
'documentation_uri' => "https://www.rubydoc.info/gems/silkey-sdk/#{Silkey::VERSION}",
|
25
|
+
'homepage_uri' => 'https://silkey.io',
|
26
|
+
'source_code_uri' => 'https://github.com/Silkey-Team/ruby-sdk'
|
27
|
+
# 'wiki_uri' => 'https://example.com/user/bestgemever/wiki'
|
28
28
|
}
|
29
29
|
|
30
30
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
@@ -44,18 +44,18 @@ Gem::Specification.new do |spec|
|
|
44
44
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
45
45
|
spec.require_paths = ['lib']
|
46
46
|
spec.add_dependency 'activesupport', '~> 6.0'
|
47
|
-
spec.add_dependency 'jwt', '~> 2.2.2'
|
48
47
|
spec.add_dependency 'eth', '~> 0.4.12'
|
49
48
|
spec.add_dependency 'ethereum.rb', '~> 2.5'
|
49
|
+
spec.add_dependency 'jwt', '~> 2.2.2'
|
50
50
|
spec.add_dependency 'virtus', '~> 1.0'
|
51
51
|
spec.add_dependency 'virtus_convert', '~> 0.1'
|
52
|
-
spec.add_development_dependency 'rdoc', '~> 6.2', '>= 6.2.1'
|
53
|
-
spec.add_development_dependency 'yard', '~> 0.9.25'
|
54
52
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
55
53
|
spec.add_development_dependency 'factory_bot', '~> 6.1'
|
56
54
|
spec.add_development_dependency 'pry', '~> 0.13'
|
57
55
|
spec.add_development_dependency 'rake', '~> 13.0'
|
56
|
+
spec.add_development_dependency 'rdoc', '~> 6.2', '>= 6.2.1'
|
58
57
|
spec.add_development_dependency 'rspec', '~> 3.10'
|
59
58
|
spec.add_development_dependency 'rubocop', '~> 1.3'
|
60
59
|
spec.add_development_dependency 'rubocop-performance', '~> 1.8'
|
60
|
+
spec.add_development_dependency 'yard', '~> 0.9.25'
|
61
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: silkey-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- silkey.io
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -25,47 +25,47 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '6.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: eth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.4.12
|
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:
|
40
|
+
version: 0.4.12
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ethereum.rb
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '2.5'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '2.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: jwt
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.2.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.2.2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: virtus
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,137 +95,137 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.1'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
104
|
-
- - ">="
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: 6.2.1
|
103
|
+
version: '2.0'
|
107
104
|
type: :development
|
108
105
|
prerelease: false
|
109
106
|
version_requirements: !ruby/object:Gem::Requirement
|
110
107
|
requirements:
|
111
108
|
- - "~>"
|
112
109
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: 6.2.1
|
110
|
+
version: '2.0'
|
117
111
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
112
|
+
name: factory_bot
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
115
|
- - "~>"
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
117
|
+
version: '6.1'
|
124
118
|
type: :development
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
122
|
- - "~>"
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
124
|
+
version: '6.1'
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
126
|
+
name: pry
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
134
128
|
requirements:
|
135
129
|
- - "~>"
|
136
130
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
131
|
+
version: '0.13'
|
138
132
|
type: :development
|
139
133
|
prerelease: false
|
140
134
|
version_requirements: !ruby/object:Gem::Requirement
|
141
135
|
requirements:
|
142
136
|
- - "~>"
|
143
137
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
138
|
+
version: '0.13'
|
145
139
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
140
|
+
name: rake
|
147
141
|
requirement: !ruby/object:Gem::Requirement
|
148
142
|
requirements:
|
149
143
|
- - "~>"
|
150
144
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
145
|
+
version: '13.0'
|
152
146
|
type: :development
|
153
147
|
prerelease: false
|
154
148
|
version_requirements: !ruby/object:Gem::Requirement
|
155
149
|
requirements:
|
156
150
|
- - "~>"
|
157
151
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
152
|
+
version: '13.0'
|
159
153
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
154
|
+
name: rdoc
|
161
155
|
requirement: !ruby/object:Gem::Requirement
|
162
156
|
requirements:
|
163
157
|
- - "~>"
|
164
158
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
159
|
+
version: '6.2'
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 6.2.1
|
166
163
|
type: :development
|
167
164
|
prerelease: false
|
168
165
|
version_requirements: !ruby/object:Gem::Requirement
|
169
166
|
requirements:
|
170
167
|
- - "~>"
|
171
168
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
169
|
+
version: '6.2'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 6.2.1
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
174
|
+
name: rspec
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '
|
179
|
+
version: '3.10'
|
180
180
|
type: :development
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
186
|
+
version: '3.10'
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
188
|
+
name: rubocop
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
190
190
|
requirements:
|
191
191
|
- - "~>"
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '3
|
193
|
+
version: '1.3'
|
194
194
|
type: :development
|
195
195
|
prerelease: false
|
196
196
|
version_requirements: !ruby/object:Gem::Requirement
|
197
197
|
requirements:
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: '3
|
200
|
+
version: '1.3'
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
|
-
name: rubocop
|
202
|
+
name: rubocop-performance
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '1.
|
207
|
+
version: '1.8'
|
208
208
|
type: :development
|
209
209
|
prerelease: false
|
210
210
|
version_requirements: !ruby/object:Gem::Requirement
|
211
211
|
requirements:
|
212
212
|
- - "~>"
|
213
213
|
- !ruby/object:Gem::Version
|
214
|
-
version: '1.
|
214
|
+
version: '1.8'
|
215
215
|
- !ruby/object:Gem::Dependency
|
216
|
-
name:
|
216
|
+
name: yard
|
217
217
|
requirement: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
219
|
- - "~>"
|
220
220
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
221
|
+
version: 0.9.25
|
222
222
|
type: :development
|
223
223
|
prerelease: false
|
224
224
|
version_requirements: !ruby/object:Gem::Requirement
|
225
225
|
requirements:
|
226
226
|
- - "~>"
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
228
|
+
version: 0.9.25
|
229
229
|
description: Silkey SDK for Ruby.
|
230
230
|
email:
|
231
231
|
- dariusz@silkey.io
|
@@ -267,7 +267,7 @@ licenses:
|
|
267
267
|
metadata:
|
268
268
|
bug_tracker_uri: https://github.com/Silkey-Team/ruby-sdk/issues
|
269
269
|
changelog_uri: https://github.com/Silkey-Team/ruby-sdk/blob/master/CHANGELOG.md
|
270
|
-
documentation_uri: https://www.rubydoc.info/gems/silkey-sdk/0.0.
|
270
|
+
documentation_uri: https://www.rubydoc.info/gems/silkey-sdk/0.0.4
|
271
271
|
homepage_uri: https://silkey.io
|
272
272
|
source_code_uri: https://github.com/Silkey-Team/ruby-sdk
|
273
273
|
post_install_message:
|