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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8f37e3a731e1250525daa64cbba2676f05ca174068385681db03a87f9431b93
4
- data.tar.gz: 8b5c2cab19cc338acf549f3d560873752b330682c6c5baee34f694ae31e70410
3
+ metadata.gz: 34f7f3262bb3dc4802e1c98c85bd6fa14106684137d51c08b6af0aa1b52c336f
4
+ data.tar.gz: f278210ebd52cd945a61eda5659f4f21b02796ed23f4ac6797493963fe9e8e48
5
5
  SHA512:
6
- metadata.gz: 6e5d6c28c863609c85e0dc5cdf990a2ad833678d1e0eea24d735185b2d7d7385ffb4d8f3aa481325c0427a127b7b55468264071fae85c9541917bd02b261ca03
7
- data.tar.gz: d141c1b91aeb5fda18ed215af19d06346b47af34ced8369f822a45ca8df7a2f6cbf2c683fef7b8f25afdb6c71adfe5251520a7068ab9213068dfdac51695463a
6
+ metadata.gz: e94b68b8281d193a9dc58e672130b047f1ae41ba3a9e3f13bdcb575eac974bb2bfcd98c2d8275d08295c381cf4307df7c471f39334e8bda7547180983d35c454
7
+ data.tar.gz: f35e71a0cd42a65c431916ff69bc028e20345d506f6219010b5d50fe0e8ab2a123a23bd72cbbb0207bbcfe4cad12f29cd2d50408de9697a2b3ca722c354d62c6
@@ -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`
@@ -1,9 +1,5 @@
1
1
  # Silkey-SDK for Ruby
2
2
 
3
- [logo]
4
-
5
- [slogan]
6
-
7
3
  ## Development
8
4
 
9
5
  After checking out the repo, run `bin/setup` to install dependencies.
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"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- silkey-sdk (0.0.3)
4
+ silkey-sdk (0.0.4)
5
5
  activesupport (~> 6.0)
6
6
  eth (~> 0.4.12)
7
7
  ethereum.rb (~> 2.5)
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 = { :redirectUrl => 'https://your-website', :refId => '12ab' }
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
- str1_hex = 'address'.unpack('H*')[0]
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
- "#{str_hex}#{Silkey::Utils.int_to_hex(user_signature_timestamp.to_s)}"
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
- self.instance_variable_set("@#{var}", v)
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
 
@@ -26,7 +26,7 @@ module Silkey # :nodoc: all
26
26
  {
27
27
  name: CONTRACT_NAME,
28
28
  address: Configuration.registry_contract_address,
29
- abi: Configuration.registry_contract_abi,
29
+ abi: Configuration.registry_contract_abi
30
30
  }.freeze
31
31
  end
32
32
  end
@@ -12,7 +12,7 @@ module Silkey
12
12
  #
13
13
  # @example:
14
14
  #
15
- # Silkey::SDK.message_to_sign({ :redirectUrl => 'http://silkey.io', :refId => 1 });
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
- if Silkey::Utils.empty?(to_sign[k])
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 params [Hash] Hash object with parameters:
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 = { :redirectUrl => 'https://your-website', :refId => '12ab' }
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, params)
56
- raise "params[:redirectUrl] is empty" if Silkey::Utils.empty?(params[:redirectUrl])
54
+ def generate_sso_request_params(private_key, data_to_sign)
55
+ result = data_to_sign.clone
57
56
 
58
- raise "params[:cancelUrl] is empty" if Silkey::Utils.empty?(params[:cancelUrl])
57
+ raise '`private_key` is empty' if Silkey::Utils.empty?(private_key)
59
58
 
60
- keys = %w(redirectUrl redirectMethod cancelUrl ssoTimestamp refId scope)
59
+ assert_required_soo_params(result)
61
60
 
62
- data_to_sign = keys.reduce({}) do |acc, k|
63
- if Silkey::Utils.empty?(params[k.to_sym])
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
- puts data_to_sign
80
- message = message_to_sign(data_to_sign)
81
- data_to_sign['signature'] = Silkey::Utils.sign_message(private_key, message)
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
- data_to_sign
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 user_signature_valid?(payload)
143
- jwt_payload = Silkey::Models::JwtPayload.new.import(payload)
144
- utils = Silkey::Utils
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 utils.empty?(jwt_payload.address) ||
147
- utils.empty?(jwt_payload.user_signature) ||
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 silkey_signature_valid?(payload, silkey_public_key)
169
- jwt_payload = Silkey::Models::JwtPayload.new.import(payload)
170
- utils = Silkey::Utils
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
- if utils.empty?(jwt_payload.email) && utils.empty?(jwt_payload.silkey_signature)
173
- return nil
174
- end
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 utils.empty?(jwt_payload.email) ^ utils.empty?(jwt_payload.silkey_signature)
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 utils.empty?(jwt_payload.silkey_signature_timestamp)
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
  )
@@ -7,7 +7,7 @@ module Silkey # :nodoc: all
7
7
 
8
8
  def logger
9
9
  if @logger.nil?
10
- @logger = Logger.new(STDOUT)
10
+ @logger = Logger.new($stdout)
11
11
  @logger.level = Logger::INFO
12
12
  @logger.datetime_format = '%a %d-%m-%Y %H%M '
13
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Silkey
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
@@ -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 = ["lib/sdk.rb"]
19
+ # spec.files = ['lib/sdk.rb']
20
20
 
21
21
  spec.metadata = {
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"
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.3
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-25 00:00:00.000000000 Z
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: jwt
28
+ name: eth
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.2.2
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: 2.2.2
40
+ version: 0.4.12
41
41
  - !ruby/object:Gem::Dependency
42
- name: eth
42
+ name: ethereum.rb
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.12
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: 0.4.12
54
+ version: '2.5'
55
55
  - !ruby/object:Gem::Dependency
56
- name: ethereum.rb
56
+ name: jwt
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.5'
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: '2.5'
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: rdoc
98
+ name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '6.2'
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: '6.2'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 6.2.1
110
+ version: '2.0'
117
111
  - !ruby/object:Gem::Dependency
118
- name: yard
112
+ name: factory_bot
119
113
  requirement: !ruby/object:Gem::Requirement
120
114
  requirements:
121
115
  - - "~>"
122
116
  - !ruby/object:Gem::Version
123
- version: 0.9.25
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: 0.9.25
124
+ version: '6.1'
131
125
  - !ruby/object:Gem::Dependency
132
- name: bundler
126
+ name: pry
133
127
  requirement: !ruby/object:Gem::Requirement
134
128
  requirements:
135
129
  - - "~>"
136
130
  - !ruby/object:Gem::Version
137
- version: '2.0'
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: '2.0'
138
+ version: '0.13'
145
139
  - !ruby/object:Gem::Dependency
146
- name: factory_bot
140
+ name: rake
147
141
  requirement: !ruby/object:Gem::Requirement
148
142
  requirements:
149
143
  - - "~>"
150
144
  - !ruby/object:Gem::Version
151
- version: '6.1'
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: '6.1'
152
+ version: '13.0'
159
153
  - !ruby/object:Gem::Dependency
160
- name: pry
154
+ name: rdoc
161
155
  requirement: !ruby/object:Gem::Requirement
162
156
  requirements:
163
157
  - - "~>"
164
158
  - !ruby/object:Gem::Version
165
- version: '0.13'
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: '0.13'
169
+ version: '6.2'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 6.2.1
173
173
  - !ruby/object:Gem::Dependency
174
- name: rake
174
+ name: rspec
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '13.0'
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: '13.0'
186
+ version: '3.10'
187
187
  - !ruby/object:Gem::Dependency
188
- name: rspec
188
+ name: rubocop
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: '3.10'
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.10'
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.3'
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.3'
214
+ version: '1.8'
215
215
  - !ruby/object:Gem::Dependency
216
- name: rubocop-performance
216
+ name: yard
217
217
  requirement: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - "~>"
220
220
  - !ruby/object:Gem::Version
221
- version: '1.8'
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: '1.8'
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.3
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: