Module: Yoti::DynamicSharingService

Defined in:
lib/yoti/dynamic_share_service/share_url.rb,
lib/yoti/dynamic_share_service/dynamic_scenario.rb,
lib/yoti/dynamic_share_service/extension/extension.rb,
lib/yoti/dynamic_share_service/policy/wanted_anchor.rb,
lib/yoti/dynamic_share_service/policy/dynamic_policy.rb,
lib/yoti/dynamic_share_service/policy/wanted_attribute.rb,
lib/yoti/dynamic_share_service/policy/source_constraint.rb,
lib/yoti/dynamic_share_service/extension/transactional_flow_extension.rb,
lib/yoti/dynamic_share_service/extension/location_constraint_extension.rb,
lib/yoti/dynamic_share_service/extension/thirdparty_attribute_extension.rb

Defined Under Namespace

Classes: ApplicationNotFoundError, DynamicPolicy, DynamicPolicyBuilder, DynamicScenario, DynamicScenarioBuilder, Extension, ExtensionBuilder, InvalidDataError, LocationConstraintExtension, LocationConstraintExtensionBuilder, Share, SourceConstraint, SourceConstraintBuilder, ThirdPartyAttributeDefinition, ThirdPartyAttributeExtension, ThirdPartyAttributeExtensionBuilder, ThirdPartyAttributeExtensionContent, TransactionalFlowExtension, TransactionalFlowExtensionBuilder, UnknownHTTPError, WantedAnchor, WantedAnchorBuilder, WantedAttribute, WantedAttributeBuilder

Class Method Summary collapse

Class Method Details

.create_share_url(scenario) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/yoti/dynamic_share_service/share_url.rb', line 24

def self.create_share_url(scenario)
  endpoint = "#{create_share_url_endpoint}#{create_share_url_query}"
  uri = URI("#{Yoti.configuration.api_endpoint}#{endpoint}")

  unsigned = Net::HTTP::Post.new uri
  unsigned.body = scenario.to_json

  signed_request = Yoti::SignedRequest.new(
    unsigned,
    endpoint,
    scenario
  ).sign

  response = Net::HTTP.start(
    uri.hostname,
    uri.port,
    use_ssl: true
  ) do |http|
    http.request signed_request
  end

  create_share_url_parse_response response
end

.create_share_url_endpointObject



16
17
18
# File 'lib/yoti/dynamic_share_service/share_url.rb', line 16

def self.create_share_url_endpoint
  "/qrcodes/apps/#{Yoti.configuration.client_sdk_id}"
end

.create_share_url_parse_response(response) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/yoti/dynamic_share_service/share_url.rb', line 48

def self.create_share_url_parse_response(response)
  if response.code.to_i < 200 || response.code.to_i >= 300
    case response.code
    when '400'
      raise InvalidDataError
    when '404'
      raise ApplicationNotFoundError
    else
      raise UnknownHTTPError, response.code
    end
  end

  Share.new JSON.parse response.body
end

.create_share_url_queryObject



20
21
22
# File 'lib/yoti/dynamic_share_service/share_url.rb', line 20

def self.create_share_url_query
  "?nonce=#{SecureRandom.uuid}&timestamp=#{Time.now.to_i}"
end