selfsdk 0.0.196 → 0.0.199

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.
@@ -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: