selfsdk 0.0.196 → 0.0.199

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,13 +1,13 @@
1
1
  # Copyright 2020 Self Group Ltd. All Rights Reserved.
2
2
 
3
3
  # frozen_string_literal: true
4
+ require_relative '../messages/fact_issue.rb'
4
5
 
5
6
  # Namespace for classes and modules that handle SelfSDK gem
6
7
  module SelfSDK
7
8
  # Namespace for classes and modules that handle selfsdk-gem public ui
8
9
  module Services
9
10
  # Self provides this self-hosted verified intermediary.
10
- DEFAULT_INTERMEDIARY = "self_intermediary"
11
11
  # Input class to handle fact requests on self network.
12
12
  class Facts
13
13
  # Creates a new facts service.
@@ -18,10 +18,8 @@ module SelfSDK
18
18
  # @param client [SelfSDK::Client] http client object.
19
19
  #
20
20
  # @return [SelfSDK::Services::Facts] facts service.
21
- def initialize(messaging, client)
22
- @messaging = messaging.client
23
- @messaging_service = messaging
24
- @client = client
21
+ def initialize(requester)
22
+ @requester = requester
25
23
  end
26
24
 
27
25
  # Sends a fact request to the specified selfid.
@@ -29,45 +27,24 @@ module SelfSDK
29
27
  # permission.
30
28
  #
31
29
  # @overload request(selfid, facts, opts = {}, &block)
32
- # @param selfid [string] the receiver of the authentication request.
33
- # @param [Hash] opts the options to authenticate.
34
- # @option opts [String] :cid The unique identifier of the authentication request.
30
+ # @param selfid [string] the receiver of the fact request.
31
+ # @param facts [Array] array of facts to be requested
32
+ # @param [Hash] opts the options to process the request.
33
+ # @option opts [String] :cid The unique identifier of the fact request.
35
34
  # @yield [request] Invokes the given block when a response is received.
36
35
  # @return [Object] SelfSDK:::Messages::FactRequest
37
36
  #
38
37
  # @overload request(selfid, facts, opts = {})
39
- # @param selfid [string] the receiver of the authentication request.
40
- # @param [Hash] opts the options to authenticate.
41
- # @option opts [String] :cid The unique identifier of the authentication request.
38
+ # @param selfid [string] the receiver of the fact request.
39
+ # @param facts [Array] array of facts to be requested
40
+ # @param [Hash] opts the options to request.
41
+ # @option opts [String] :cid The unique identifier of the fact request.
42
42
  # @option opts [Integer] :exp_timeout timeout in seconds to expire the request.
43
43
  # @option opts [Integer] :allowed_for number of seconds for enabling recurrent requests.
44
- # @option opts [Boolean] :auth allows displaying the request as anuthentication request with facts.
45
44
  # @return [Object] SelfSDK:::Messages::FactRequest
46
45
  def request(selfid, facts, opts = {}, &block)
47
- SelfSDK.logger.info "authenticating #{selfid}"
48
- rq = opts.fetch(:request, true)
49
- if rq
50
- raise "You're not permitting connections from #{selfid}" unless @messaging_service.is_permitted?(selfid)
51
- end
52
-
53
- req = SelfSDK::Messages::FactRequest.new(@messaging)
54
- req.populate(selfid, prepare_facts(facts), opts)
55
-
56
- body = @client.jwt.prepare(req.body)
57
- return body unless rq
58
-
59
- # when a block is given the request will always be asynchronous.
60
- if block_given?
61
- @messaging.set_observer(req, timeout: req.exp_timeout, &block)
62
- return req.send_message
63
- end
64
-
65
- if opts[:async] == true
66
- return req.send_message
67
- end
68
-
69
- # Otherwise the request is synchronous
70
- req.request
46
+ opts[:auth] = false # force auth to false as you have auth service to make auth requests
47
+ @requester.request(selfid, facts, opts, &block)
71
48
  end
72
49
 
73
50
  # Sends a request through an intermediary.
@@ -81,8 +58,7 @@ module SelfSDK
81
58
  # @option opts [String] intermediary an intermediary identity to be used.
82
59
  # @return [Object] SelfSDK:::Messages::FactRequest
83
60
  def request_via_intermediary(selfid, facts, opts = {}, &block)
84
- opts[:intermediary] = opts.fetch(:intermediary, DEFAULT_INTERMEDIARY)
85
- request(selfid, facts, opts, &block)
61
+ @requester.request_via_intermediary(selfid, facts, opts, &block)
86
62
  end
87
63
 
88
64
  # Adds an observer for a fact response
@@ -90,7 +66,7 @@ module SelfSDK
90
66
  #
91
67
  # @yield [request] Invokes the block with a fact response message.
92
68
  def subscribe(&block)
93
- @messaging.subscribe(:fact_response, &block)
69
+ @requester.subscribe(false, &block)
94
70
  end
95
71
 
96
72
  # Generates a QR code so users can send facts to your app.
@@ -101,10 +77,8 @@ module SelfSDK
101
77
  #
102
78
  # @return [String, String] conversation id or encoded body.
103
79
  def generate_qr(facts, opts = {})
104
- opts[:request] = false
105
- selfid = opts.fetch(:selfid, "-")
106
- req = request(selfid, facts, opts)
107
- ::RQRCode::QRCode.new(req, level: 'l')
80
+ opts[:auth] = false
81
+ @requester.generate_qr(facts, opts)
108
82
  end
109
83
 
110
84
  # Generates a deep link to authenticate with self app.
@@ -116,113 +90,58 @@ module SelfSDK
116
90
  #
117
91
  # @return [String, String] conversation id or encoded body.
118
92
  def generate_deep_link(facts, callback, opts = {})
119
- opts[:request] = false
120
- selfid = opts.fetch(:selfid, "-")
121
- body = @client.jwt.encode(request(selfid, facts, opts))
122
-
123
- if @client.env.empty?
124
- return "https://links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app"
125
- elsif @client.env == 'development'
126
- return "https://links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app.dev"
127
- end
128
- "https://#{@client.env}.links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app.#{@client.env}"
93
+ opts[:auth] = false
94
+ @requester.generate_deep_link(facts, callback, opts)
129
95
  end
130
96
 
131
- private
132
-
133
- # As request facts can accept an array of strings this populates with necessary
134
- # structure this short fact definitions.
97
+ # Issues a custom fact and sends it to the user.
135
98
  #
136
- # @param facts [Array] an array of strings or hashes.
137
- # @return [Array] a list of hashed facts.
138
- def prepare_facts(facts)
139
- fs = []
99
+ # @param selfid [String] self identifier for the message recipient.
100
+ # @param facts [Array<Fact>] facts to be sent to the user
101
+ # @option opts [String] :viewers list of self identifiers for the user that will have access to this facts.
102
+ def issue(selfid, facts, opts = {})
103
+ hased_facts = []
140
104
  facts.each do |f|
141
- fact = if f.is_a?(Hash)
142
- f
143
- else
144
- { fact: f }
145
- end
146
- # validate_fact!(fact)
147
- fs << fact
105
+ hased_facts << f.to_hash
106
+ end
107
+
108
+ SelfSDK.logger.info "issuing facts for #{selfid}"
109
+ msg = SelfSDK::Messages::FactIssue.new(@requester.messaging)
110
+ msg.populate(selfid, hased_facts, opts)
111
+
112
+ msg.send_message
113
+ end
114
+
115
+ # Facts to be issued
116
+ class Fact
117
+ attr_accessor :key, :value, :group
118
+
119
+ def initialize(key, value, source, group = nil)
120
+ @key = key
121
+ @value = value
122
+ @source = source
123
+ @group = group
124
+ end
125
+
126
+ def to_hash
127
+ b = { key: @key, value: @value, source: @source }
128
+ b[:group] = @group.to_hash unless @group.nil?
129
+ b
148
130
  end
149
- fs
150
131
  end
151
132
 
152
- def validate_fact!(f)
153
- errInvalidFactToSource = 'provided source does not support given fact'
154
- errInvalidSource = 'provided fact does not specify a valid source'
155
-
156
- raise 'provided fact does not specify a name' if f[:fact].empty?
157
- return unless f.has_key? :sources
158
-
159
- valid_sources = [SOURCE_USER_SPECIFIED,
160
- SOURCE_PASSPORT,
161
- SOURCE_DRIVING_LICENSE,
162
- SOURCE_IDENTITY_CARD,
163
- SOURCE_TWITTER,
164
- SOURCE_LINKEDIN,
165
- SOURCE_FACEBOK]
166
- fact_for_passport = [FACT_DOCUMENT_NUMBER,
167
- FACT_SURNAME,
168
- FACT_GIVEN_NAMES,
169
- FACT_DATE_OF_BIRTH,
170
- FACT_DATE_OF_EXPIRATION,
171
- FACT_SEX,
172
- FACT_NATIONALITY,
173
- FACT_COUNTRY_OF_ISSUANCE]
174
-
175
- facts_for_dl = [FACT_DOCUMENT_NUMBER,
176
- FACT_SURNAME,
177
- FACT_GIVEN_NAMES,
178
- FACT_DATE_OF_BIRTH,
179
- FACT_DATE_OF_ISSUANCE,
180
- FACT_DATE_OF_EXPIRATION,
181
- FACT_ADDRESS,
182
- FACT_ISSUING_AUTHORITY,
183
- FACT_PLACE_OF_BIRTH,
184
- FACT_COUNTRY_OF_ISSUANCE]
185
-
186
- facts_for_user = [FACT_DOCUMENT_NUMBER,
187
- FACT_DISPLAY_NAME,
188
- FACT_EMAIL,
189
- FACT_PHONE]
190
-
191
- facts_for_twitter = [FACT_ACCOUNT_ID, FACT_NICKNAME]
192
- facts_for_linkedin = [FACT_ACCOUNT_ID, FACT_NICKNAME]
193
- facts_for_facebook = [FACT_ACCOUNT_ID, FACT_NICKNAME]
194
- facts_for_live = [FACT_SELFIE]
195
-
196
- f[:sources].each do |s|
197
- raise errInvalidSource unless valid_sources.include? s.to_s
198
-
199
- if s.to_s == SOURCE_PASSPORT || s.to_s == SOURCE_IDENTITY_CARD
200
- raise errInvalidFactToSource unless fact_for_passport.include? f[:fact]
201
- end
202
-
203
- if s.to_s == SOURCE_DRIVING_LICENSE
204
- raise errInvalidFactToSource unless facts_for_dl.include? f[:fact]
205
- end
206
-
207
- if s.to_s == SOURCE_USER_SPECIFIED
208
- raise errInvalidFactToSource unless facts_for_user.include? f[:fact].to_s
209
- end
210
-
211
- if s.to_s == SOURCE_TWITTER
212
- raise errInvalidFactToSource unless facts_for_twitter.include? f[:fact].to_s
213
- end
214
-
215
- if s.to_s == SOURCE_LINKEDIN
216
- raise errInvalidFactToSource unless facts_for_linkedin.include? f[:fact].to_s
217
- end
218
-
219
- if s.to_s == SOURCE_FACEBOOK
220
- raise errInvalidFactToSource unless facts_for_facebook.include? f[:fact].to_s
221
- end
222
-
223
- if s.to_s == SOURCE_LIVE
224
- raise errInvalidFactToSource unless facts_for_live.include? f[:fact].to_s
225
- end
133
+ class Group
134
+ attr_accessor :name, :icon
135
+
136
+ def initialize(name, icon = "")
137
+ @name = name
138
+ @icon = icon
139
+ end
140
+
141
+ def to_hash
142
+ b = { name: @name }
143
+ b[:icon] = @icon unless @icon.empty?
144
+ b
226
145
  end
227
146
  end
228
147
  end
@@ -26,7 +26,7 @@ module SelfSDK
26
26
  # Subscribes to a specific message type and attaches the given observer
27
27
  # which will be executed when a meeting criteria message is received.
28
28
  #
29
- # @param [String] type message type (ex: SelfSDK::Messages::AuthenticationResp.MSG_TYPE
29
+ # @param [String] type message type (ex: SelfSDK::Messages::FactRequest.MSG_TYPE
30
30
  # @yield [SelfSDK::Messages::Message] receives incoming message.
31
31
  def subscribe(type, &block)
32
32
  @client.subscribe(type, &block)
@@ -0,0 +1,184 @@
1
+ # Copyright 2020 Self Group Ltd. All Rights Reserved.
2
+
3
+ # frozen_string_literal: true
4
+
5
+ # Namespace for classes and modules that handle SelfSDK gem
6
+ module SelfSDK
7
+ # Namespace for classes and modules that handle selfsdk-gem public ui
8
+ module Services
9
+ # Self provides this self-hosted verified intermediary.
10
+ DEFAULT_INTERMEDIARY = "self_intermediary"
11
+ # Input class to handle fact requests on self network.
12
+ class Requester
13
+ attr_reader :messaging
14
+
15
+ # Creates a new facts service.
16
+ # Facts service mainly manages fact requests against self users wanting
17
+ # to share their verified facts with your app.
18
+ #
19
+ # @param messaging [SelfSDK::Messaging] messaging object.
20
+ # @param client [SelfSDK::Client] http client object.
21
+ #
22
+ # @return [SelfSDK::Services::Facts] facts service.
23
+ def initialize(messaging, client)
24
+ @messaging = messaging.client
25
+ @messaging_service = messaging
26
+ @client = client
27
+ end
28
+
29
+ # Sends a fact request to the specified selfid.
30
+ # An fact request allows your app to access trusted facts of your user with its
31
+ # permission.
32
+ #
33
+ # @overload request(selfid, facts, opts = {}, &block)
34
+ # @param selfid [string] the receiver of the authentication request.
35
+ # @param [Hash] opts the options to authenticate.
36
+ # @option opts [String] :cid The unique identifier of the authentication request.
37
+ # @yield [request] Invokes the given block when a response is received.
38
+ # @return [Object] SelfSDK:::Messages::FactRequest
39
+ #
40
+ # @overload request(selfid, facts, opts = {})
41
+ # @param selfid [string] the receiver of the authentication request.
42
+ # @param [Hash] opts the options to authenticate.
43
+ # @option opts [String] :cid The unique identifier of the authentication request.
44
+ # @option opts [Integer] :exp_timeout timeout in seconds to expire the request.
45
+ # @option opts [Integer] :allowed_for number of seconds for enabling recurrent requests.
46
+ # @option opts [Boolean] :auth allows displaying the request as anuthentication request with facts.
47
+ # @return [Object] SelfSDK:::Messages::FactRequest
48
+ def request(selfid, facts, opts = {}, &block)
49
+ SelfSDK.logger.info "authenticating #{selfid}"
50
+ rq = opts.fetch(:request, true)
51
+ if rq
52
+ raise "You're not permitting connections from #{selfid}" unless @messaging_service.is_permitted?(selfid)
53
+ end
54
+
55
+ req = SelfSDK::Messages::FactRequest.new(@messaging)
56
+ req.populate(selfid, prepare_facts(facts), opts)
57
+
58
+ body = @client.jwt.prepare(req.body)
59
+ return body unless rq
60
+
61
+ # when a block is given the request will always be asynchronous.
62
+ if block_given?
63
+ @messaging.set_observer(req, timeout: req.exp_timeout, &block)
64
+ return req.send_message
65
+ end
66
+
67
+ if opts[:async] == true
68
+ return req.send_message
69
+ end
70
+
71
+ # Otherwise the request is synchronous
72
+ req.request
73
+ end
74
+
75
+ # Sends a request through an intermediary.
76
+ # An intermediary is an entity trusted by the user and acting as a proxy between you
77
+ # and the recipient of your fact request.
78
+ # Intermediaries usually do not provide the original user facts, but they create its
79
+ # own assertions based on your request and the user's facts.
80
+ #
81
+ # @param selfid [string] the receiver of the authentication request.
82
+ # @param [Hash] opts the options to authenticate.
83
+ # @option opts [String] intermediary an intermediary identity to be used.
84
+ # @return [Object] SelfSDK:::Messages::FactRequest
85
+ def request_via_intermediary(selfid, facts, opts = {}, &block)
86
+ opts[:intermediary] = opts.fetch(:intermediary, DEFAULT_INTERMEDIARY)
87
+ request(selfid, facts, opts, &block)
88
+ end
89
+
90
+ # Adds an observer for a fact response
91
+ # Whenever you receive a fact response registered observers will receive a notification.
92
+ #
93
+ # @yield [request] Invokes the block with a fact response message.
94
+ def subscribe(auth, &block)
95
+ if auth == true
96
+ @auth_subscription = block
97
+ else
98
+ @fact_subscription = block
99
+ end
100
+
101
+ @messaging.subscribe :fact_response do |res|
102
+ if res.auth_response?
103
+ @auth_subscription&.call(res)
104
+ else
105
+ @fact_subscription&.call(res)
106
+ end
107
+ end
108
+ end
109
+
110
+ # Generates a QR code so users can send facts to your app.
111
+ #
112
+ # @param facts [Array] a list of facts to be requested.
113
+ # @option opts [String] :cid The unique identifier of the authentication request.
114
+ # @option opts [String] :options Options you want to share with the identity.
115
+ #
116
+ # @return [String, String] conversation id or encoded body.
117
+ def generate_qr(facts, opts = {})
118
+ opts[:request] = false
119
+ selfid = opts.fetch(:selfid, "-")
120
+ req = request(selfid, facts, opts)
121
+ ::RQRCode::QRCode.new(req, level: 'l')
122
+ end
123
+
124
+ # Generates a deep link to authenticate with self app.
125
+ #
126
+ # @param facts [Array] a list of facts to be requested.
127
+ # @param callback [String] the url you'll be redirected if the app is not installed.
128
+ # @option opts [String] :selfid the user selfid you want to authenticate.
129
+ # @option opts [String] :cid The unique identifier of the authentication request.
130
+ #
131
+ # @return [String, String] conversation id or encoded body.
132
+ def generate_deep_link(facts, callback, opts = {})
133
+ opts[:request] = false
134
+ selfid = opts.fetch(:selfid, "-")
135
+ body = @client.jwt.encode(request(selfid, facts, opts))
136
+
137
+ if @client.env.empty?
138
+ return "https://links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app"
139
+ elsif @client.env == 'development'
140
+ return "https://links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app.dev"
141
+ end
142
+ "https://#{@client.env}.links.joinself.com/?link=#{callback}%3Fqr=#{body}&apn=com.joinself.app.#{@client.env}"
143
+ end
144
+
145
+ private
146
+
147
+ # As request facts can accept an array of strings this populates with necessary
148
+ # structure this short fact definitions.
149
+ #
150
+ # @param facts [Array] an array of strings or hashes.
151
+ # @return [Array] a list of hashed facts.
152
+ def prepare_facts(facts)
153
+ fs = []
154
+ facts.each do |f|
155
+ fact = if f.is_a?(Hash)
156
+ f
157
+ else
158
+ { fact: f }
159
+ end
160
+ validate_fact!(fact) unless fact.key?('issuers')
161
+ fs << fact
162
+ end
163
+ fs
164
+ end
165
+
166
+ def validate_fact!(f)
167
+ errInvalidFactToSource = 'provided source does not support given fact'
168
+ errInvalidSource = 'provided fact does not specify a valid source'
169
+
170
+ raise 'provided fact does not specify a name' if f[:fact].empty?
171
+ return unless f.has_key? :sources
172
+ return if f.has_key? :issuers # skip the validation if is a custom fact
173
+
174
+ raise "invalid fact '#{f[:fact]}'" unless @messaging.facts.include?(f[:fact])
175
+
176
+ spec = @messaging.sources
177
+ f[:sources].each do |s|
178
+ raise errInvalidSource unless spec.key?(s)
179
+ raise errInvalidFactToSource unless spec[s].include? f[:fact]
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Do not edit this file, autogenerate it with "rake sources:generate" instead
4
+ module SelfSDK
5
+ SOURCE_DATA = {
6
+ "sources" => {
7
+ "user_specified" => [
8
+ "document_number",
9
+ "display_name",
10
+ "email_address",
11
+ "phone_number"
12
+ ],
13
+ "passport" => [
14
+ "document_number",
15
+ "surname",
16
+ "given_names",
17
+ "date_of_birth",
18
+ "date_of_expiration",
19
+ "sex",
20
+ "nationality",
21
+ "country_of_issuance"
22
+ ],
23
+ "driving_license" => [
24
+ "document_number",
25
+ "surname",
26
+ "given_names",
27
+ "date_of_birth",
28
+ "date_of_issuance",
29
+ "date_of_expiration",
30
+ "address",
31
+ "issuing_authority",
32
+ "place_of_birth"
33
+ ],
34
+ "identity_card" => [
35
+ "document_number",
36
+ "surname",
37
+ "given_names",
38
+ "date_of_birth",
39
+ "date_of_expiration",
40
+ "sex",
41
+ "nationality",
42
+ "country_of_issuance"
43
+ ],
44
+ "twitter" => [
45
+ "account_id",
46
+ "nickname"
47
+ ],
48
+ "linkedin" => [
49
+ "account_id",
50
+ "nickname"
51
+ ],
52
+ "facebook" => [
53
+ "account_id",
54
+ "nickname"
55
+ ],
56
+ "live" => [
57
+ "selfie_verification"
58
+ ]
59
+ }
60
+ }
61
+ end
data/lib/sources.rb CHANGED
@@ -3,76 +3,25 @@
3
3
  # frozen_string_literal: true
4
4
 
5
5
  require "json"
6
+ require_relative "source_definition.rb"
7
+
6
8
  module SelfSDK
9
+ attr_reader :sources, :facts
7
10
  class Sources
8
11
  def initialize(sources_file)
9
- data = JSON.parse('{
10
- "sources": {
11
- "user_specified": [
12
- "document_number",
13
- "display_name",
14
- "email_address",
15
- "phone_number"
16
- ],
17
- "passport": [
18
- "document_number",
19
- "surname",
20
- "given_names",
21
- "date_of_birth",
22
- "date_of_expiration",
23
- "sex",
24
- "nationality",
25
- "country_of_issuance"
26
- ],
27
- "driving_license": [
28
- "document_number",
29
- "surname",
30
- "given_names",
31
- "date_of_birth",
32
- "date_of_issuance",
33
- "date_of_expiration",
34
- "address",
35
- "issuing_authority",
36
- "place_of_birth"
37
- ],
38
- "identity_card": [
39
- "document_number",
40
- "surname",
41
- "given_names",
42
- "date_of_birth",
43
- "date_of_expiration",
44
- "sex",
45
- "nationality",
46
- "country_of_issuance"
47
- ],
48
- "twitter": [
49
- "account_id",
50
- "nickname"
51
- ],
52
- "linkedin": [
53
- "account_id",
54
- "nickname"
55
- ],
56
- "facebook": [
57
- "account_id",
58
- "nickname"
59
- ],
60
- "live": [
61
- "selfie_verification"
62
- ]
63
- }
64
- }')
65
- @sources = data["sources"]
12
+ @sources = SOURCE_DATA["sources"]
66
13
  @facts = []
67
14
  @sources.each do |source, facts|
68
15
  @facts.push(*facts)
69
16
  end
70
17
  end
71
18
 
72
- def normalize_fact_name!(fact)
73
- fact = fact.to_s
74
- raise "invalid fact '#{fact}'" unless @facts.include?(fact)
75
- fact
19
+ def normalize_fact_name(fact)
20
+ fact.to_s
21
+ end
22
+
23
+ def normalize_source(source)
24
+ source.to_s
76
25
  end
77
26
 
78
27
  def validate_source!(source)
@@ -92,9 +41,7 @@ module SelfSDK
92
41
  end
93
42
 
94
43
  def message_type(s)
95
- types = { authentication_request: SelfSDK::Messages::AuthenticationReq::MSG_TYPE,
96
- authentication_response: SelfSDK::Messages::AuthenticationResp::MSG_TYPE,
97
- fact_request: SelfSDK::Messages::FactRequest::MSG_TYPE,
44
+ types = { fact_request: SelfSDK::Messages::FactRequest::MSG_TYPE,
98
45
  fact_response: SelfSDK::Messages::FactResponse::MSG_TYPE,
99
46
  chat_message: SelfSDK::Messages::ChatMessage::MSG_TYPE,
100
47
  chat_message_deivered: SelfSDK::Messages::ChatMessageDelivered::MSG_TYPE,
@@ -103,11 +50,13 @@ module SelfSDK
103
50
  chat_join: SelfSDK::Messages::ChatJoin::MSG_TYPE,
104
51
  chat_remove: SelfSDK::Messages::ChatRemove::MSG_TYPE,
105
52
  document_sign_response: SelfSDK::Messages::DocumentSignResponse::MSG_TYPE,
53
+ connection_response: SelfSDK::Messages::ConnectionResponse::MSG_TYPE,
106
54
  }
107
55
  raise "invalid message type '#{s}'" unless types.key? s
108
56
  return types[s]
109
57
  end
110
58
 
59
+
111
60
  private
112
61
 
113
62
  def get(options, input, option_type)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selfsdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.196
4
+ version: 0.0.199
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures
@@ -334,9 +334,6 @@ files:
334
334
  - lib/jwt_service.rb
335
335
  - lib/log.rb
336
336
  - lib/messages/attestation.rb
337
- - lib/messages/authentication_message.rb
338
- - lib/messages/authentication_req.rb
339
- - lib/messages/authentication_resp.rb
340
337
  - lib/messages/base.rb
341
338
  - lib/messages/chat.rb
342
339
  - lib/messages/chat_invite.rb
@@ -345,8 +342,11 @@ files:
345
342
  - lib/messages/chat_message_delivered.rb
346
343
  - lib/messages/chat_message_read.rb
347
344
  - lib/messages/chat_remove.rb
345
+ - lib/messages/connection_request.rb
346
+ - lib/messages/connection_response.rb
348
347
  - lib/messages/document_sign_resp.rb
349
348
  - lib/messages/fact.rb
349
+ - lib/messages/fact_issue.rb
350
350
  - lib/messages/fact_request.rb
351
351
  - lib/messages/fact_response.rb
352
352
  - lib/messages/message.rb
@@ -359,7 +359,9 @@ files:
359
359
  - lib/services/facts.rb
360
360
  - lib/services/identity.rb
361
361
  - lib/services/messaging.rb
362
+ - lib/services/requester.rb
362
363
  - lib/signature_graph.rb
364
+ - lib/source_definition.rb
363
365
  - lib/sources.rb
364
366
  homepage: https://www.joinself.com/
365
367
  licenses: