silkey-sdk 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
![Silkey Logo](https://raw.githubusercontent.com/Silkey-Team/brand/master/silkey-word-black.png)
|
2
|
-
|
3
1
|
# Silkey SDK for Ruby
|
4
2
|
|
3
|
+
![Silkey Logo](https://raw.githubusercontent.com/Silkey-Team/brand/master/silkey-word-black.png)
|
4
|
+
|
5
5
|
[![GitHub version](https://badge.fury.io/gh/Silkey-Team%2Fsilkey-sdk.svg)](https://badge.fury.io/gh/Silkey-Team%2Fsilkey-sdk)
|
6
6
|
[![Gem Version](https://badge.fury.io/rb/silkey-sdk.svg)](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:
|