didww-v3 1.3.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +5 -1
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +51 -2
- data/Gemfile +2 -1
- data/README.md +10 -1
- data/Rakefile +1 -0
- data/bin/console +1 -0
- data/didww-v3.gemspec +3 -1
- data/lib/didww/{middleware.rb → base_middleware.rb} +5 -4
- data/lib/didww/callback/const.rb +14 -0
- data/lib/didww/callback/request_validator.rb +77 -0
- data/lib/didww/client.rb +98 -39
- data/lib/didww/complex_objects/base.rb +2 -3
- data/lib/didww/complex_objects/capacity_order_item.rb +1 -0
- data/lib/didww/complex_objects/configurations/base.rb +143 -2
- data/lib/didww/complex_objects/configurations/h323_configuration.rb +1 -0
- data/lib/didww/complex_objects/configurations/iax2_configuration.rb +1 -0
- data/lib/didww/complex_objects/configurations/pstn_configuration.rb +1 -0
- data/lib/didww/complex_objects/configurations/sip_configuration.rb +34 -3
- data/lib/didww/complex_objects/configurations.rb +1 -0
- data/lib/didww/complex_objects/did_order_item.rb +15 -12
- data/lib/didww/complex_objects/export_filters.rb +26 -0
- data/lib/didww/encrypt.rb +101 -0
- data/lib/didww/jsonapi_middleware.rb +21 -0
- data/lib/didww/resource/address.rb +37 -0
- data/lib/didww/resource/address_verification.rb +56 -0
- data/lib/didww/resource/area.rb +12 -0
- data/lib/didww/{resources → resource}/available_did.rb +2 -0
- data/lib/didww/{resources → resource}/balance.rb +1 -0
- data/lib/didww/{resources → resource}/base.rb +2 -2
- data/lib/didww/{resources → resource}/capacity_pool.rb +1 -0
- data/lib/didww/resource/city.rb +14 -0
- data/lib/didww/{resources → resource}/country.rb +1 -0
- data/lib/didww/{resources → resource}/did.rb +5 -3
- data/lib/didww/{resources → resource}/did_group.rb +13 -25
- data/lib/didww/{resources → resource}/did_group_type.rb +1 -0
- data/lib/didww/{resources → resource}/did_reservation.rb +1 -0
- data/lib/didww/resource/encrypted_file.rb +58 -0
- data/lib/didww/{resources/cdr_export.rb → resource/export.rb} +24 -5
- data/lib/didww/resource/identity.rb +78 -0
- data/lib/didww/resource/nanpa_prefix.rb +18 -0
- data/lib/didww/{resources → resource}/order.rb +20 -12
- data/lib/didww/resource/permanent_supporting_document.rb +15 -0
- data/lib/didww/{resources → resource}/pop.rb +1 -0
- data/lib/didww/resource/proof.rb +19 -0
- data/lib/didww/resource/proof_type.rb +14 -0
- data/lib/didww/resource/public_key.rb +12 -0
- data/lib/didww/{resources → resource}/qty_based_pricing.rb +1 -0
- data/lib/didww/{resources → resource}/region.rb +1 -0
- data/lib/didww/resource/requirement.rb +61 -0
- data/lib/didww/resource/requirement_validation.rb +10 -0
- data/lib/didww/{resources → resource}/shared_capacity_group.rb +1 -0
- data/lib/didww/{resources → resource}/stock_keeping_unit.rb +1 -0
- data/lib/didww/resource/supporting_document_template.rb +14 -0
- data/lib/didww/{resources/trunk.rb → resource/voice_in_trunk.rb} +40 -4
- data/lib/didww/{resources/trunk_group.rb → resource/voice_in_trunk_group.rb} +3 -2
- data/lib/didww/resource/voice_out_trunk.rb +75 -0
- data/lib/didww/resource/voice_out_trunk_regenerate_credential.rb +11 -0
- data/lib/didww/types/ip_addresses.rb +23 -0
- data/lib/didww/types/strings.rb +21 -0
- data/lib/didww/types.rb +12 -0
- data/lib/didww/version.rb +2 -1
- data/lib/didww.rb +6 -1
- metadata +63 -28
- data/lib/didww/complex_objects/cdr_export_filter.rb +0 -23
- data/lib/didww/complex_objects/configurations/const.rb +0 -149
- data/lib/didww/resources/city.rb +0 -9
- data/lib/didww/resources/trunk/const.rb +0 -46
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module DIDWW
|
3
|
+
module Resource
|
4
|
+
class Identity < Base
|
5
|
+
IDENTITY_TYPE_PERSONAL = 'Personal'
|
6
|
+
IDENTITY_TYPE_BUSINESS = 'Business'
|
7
|
+
|
8
|
+
has_one :country, class_name: 'Country'
|
9
|
+
has_many :proofs, class_name: 'Proof'
|
10
|
+
has_many :addresses, class_name: 'Address'
|
11
|
+
has_many :permanent_documents, class_name: 'PermanentSupportingDocument'
|
12
|
+
|
13
|
+
property :first_name, type: :string
|
14
|
+
# Type: String
|
15
|
+
# Description:
|
16
|
+
|
17
|
+
property :last_name, type: :string
|
18
|
+
# Type: String
|
19
|
+
# Description:
|
20
|
+
|
21
|
+
property :phone_number, type: :string
|
22
|
+
# Type: String
|
23
|
+
# Description:
|
24
|
+
|
25
|
+
property :id_number, type: :string
|
26
|
+
# Type: String
|
27
|
+
# Description:
|
28
|
+
|
29
|
+
property :birth_date, type: :date
|
30
|
+
# Type: Date
|
31
|
+
# Description:
|
32
|
+
|
33
|
+
property :company_name, type: :string
|
34
|
+
# Type: String
|
35
|
+
# Description:
|
36
|
+
|
37
|
+
property :company_reg_number, type: :string
|
38
|
+
# Type: String
|
39
|
+
# Description:
|
40
|
+
|
41
|
+
property :vat_id, type: :string
|
42
|
+
# Type: String
|
43
|
+
# Description:
|
44
|
+
|
45
|
+
property :description, type: :string
|
46
|
+
# Type: String
|
47
|
+
# Description:
|
48
|
+
|
49
|
+
property :personal_tax_id, type: :string
|
50
|
+
# Type: String
|
51
|
+
# Description:
|
52
|
+
|
53
|
+
property :identity_type, type: :string
|
54
|
+
# Type: String
|
55
|
+
# Description:
|
56
|
+
|
57
|
+
property :created_at, type: :date
|
58
|
+
# Type: Date
|
59
|
+
# Description:
|
60
|
+
|
61
|
+
property :external_reference_id, type: :string
|
62
|
+
# Type: String
|
63
|
+
# Description:
|
64
|
+
|
65
|
+
property :verified, type: :boolean
|
66
|
+
# Type: Boolean
|
67
|
+
# Description:
|
68
|
+
|
69
|
+
def personal?
|
70
|
+
identity_type == IDENTITY_TYPE_PERSONAL
|
71
|
+
end
|
72
|
+
|
73
|
+
def business?
|
74
|
+
identity_type == IDENTITY_TYPE_BUSINESS
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DIDWW
|
4
|
+
module Resource
|
5
|
+
class NanpaPrefix < Base
|
6
|
+
has_one :country, class_name: Country
|
7
|
+
has_one :region, class_name: Region
|
8
|
+
|
9
|
+
property :npa, type: :string
|
10
|
+
# Type: String
|
11
|
+
# Description: NPA codes, or area codes consisting of three digits
|
12
|
+
property :nxx, type: :string
|
13
|
+
# Type: String
|
14
|
+
# Description: Refer to three-digit code
|
15
|
+
# that forms the second part of a 10-digit North American phone number
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,22 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'didww/complex_objects/did_order_item'
|
2
3
|
require 'didww/complex_objects/capacity_order_item'
|
4
|
+
require 'didww/callback/const'
|
3
5
|
|
4
6
|
module DIDWW
|
5
7
|
module Resource
|
6
8
|
class Order < Base
|
7
|
-
|
8
|
-
# Possible values for order.status
|
9
|
-
STATUS_PENDING = 'Pending' .freeze
|
10
|
-
STATUS_COMPLETED = 'Completed' .freeze
|
11
|
-
STATUS_CANCELLED = 'Canceled' .freeze
|
12
|
-
STATUSES = [
|
13
|
-
STATUS_PENDING,
|
14
|
-
STATUS_COMPLETED,
|
15
|
-
STATUS_CANCELLED
|
16
|
-
].freeze
|
17
|
-
end
|
9
|
+
include DIDWW::Callback::CONST
|
18
10
|
|
19
|
-
|
11
|
+
# Possible values for order.status
|
12
|
+
STATUS_PENDING = 'Pending'
|
13
|
+
STATUS_COMPLETED = 'Completed'
|
14
|
+
STATUS_CANCELLED = 'Canceled'
|
15
|
+
STATUSES = [
|
16
|
+
STATUS_PENDING,
|
17
|
+
STATUS_COMPLETED,
|
18
|
+
STATUS_CANCELLED
|
19
|
+
].freeze
|
20
20
|
|
21
21
|
property :reference, type: :string
|
22
22
|
# Type: String
|
@@ -46,6 +46,14 @@ module DIDWW
|
|
46
46
|
# Type: Boolean
|
47
47
|
# Description: Allowing back ordering
|
48
48
|
|
49
|
+
property :callback_url, type: :string
|
50
|
+
# Type: String
|
51
|
+
# Description: valid URI for callbacks
|
52
|
+
|
53
|
+
property :callback_method, type: :string
|
54
|
+
# Type: String
|
55
|
+
# Description: GET or POST
|
56
|
+
|
49
57
|
def initialize(*args)
|
50
58
|
super
|
51
59
|
self.items ||= []
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module DIDWW
|
3
|
+
module Resource
|
4
|
+
class PermanentSupportingDocument < Base
|
5
|
+
|
6
|
+
has_many :files, class_name: 'EncryptedFile'
|
7
|
+
has_one :template, class_name: 'SupportingDocumentTemplate'
|
8
|
+
has_one :identity, class_name: 'Identity'
|
9
|
+
|
10
|
+
property :created_at, type: :date
|
11
|
+
# Type: Date
|
12
|
+
# Description:
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module DIDWW
|
3
|
+
module Resource
|
4
|
+
class Proof < Base
|
5
|
+
|
6
|
+
has_many :files, class_name: 'EncryptedFile'
|
7
|
+
has_one :proof_type, class_name: 'ProofType'
|
8
|
+
has_one :entity, class_name: 'Entity', polymorphic: true
|
9
|
+
|
10
|
+
property :created_at, type: :date
|
11
|
+
# Type: Date
|
12
|
+
# Description:
|
13
|
+
|
14
|
+
property :is_expired, type: :boolean
|
15
|
+
# Type: Boolean
|
16
|
+
# Description:
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module DIDWW
|
3
|
+
module Resource
|
4
|
+
class Requirement < Base
|
5
|
+
|
6
|
+
has_one :country, class_name: 'Country'
|
7
|
+
has_one :did_group_type, class_name: 'DidGroupType', relation_name: :group_type
|
8
|
+
has_one :personal_permanent_document, class_name: 'SupportingDocumentTemplate'
|
9
|
+
has_one :business_permanent_document, class_name: 'SupportingDocumentTemplate'
|
10
|
+
has_one :personal_onetime_document, class_name: 'SupportingDocumentTemplate'
|
11
|
+
has_one :business_onetime_document, class_name: 'SupportingDocumentTemplate'
|
12
|
+
has_many :personal_proof_types, class_name: 'ProofType'
|
13
|
+
has_many :business_proof_types, class_name: 'ProofType'
|
14
|
+
has_many :address_proof_types, class_name: 'ProofType'
|
15
|
+
|
16
|
+
property :identity_type, type: :integer
|
17
|
+
# Type: Integer
|
18
|
+
# Description:
|
19
|
+
|
20
|
+
property :personal_area_level, type: :string
|
21
|
+
# Type: String
|
22
|
+
# Description:
|
23
|
+
|
24
|
+
property :business_area_level, type: :string
|
25
|
+
# Type: String
|
26
|
+
# Description:
|
27
|
+
|
28
|
+
property :address_area_level, type: :string
|
29
|
+
# Type: String
|
30
|
+
# Description:
|
31
|
+
|
32
|
+
property :personal_proof_qty, type: :integer
|
33
|
+
# Type: Integer
|
34
|
+
# Description:
|
35
|
+
|
36
|
+
property :business_proof_qty, type: :integer
|
37
|
+
# Type: Integer
|
38
|
+
# Description:
|
39
|
+
|
40
|
+
property :address_proof_qty, type: :integer
|
41
|
+
# Type: Integer
|
42
|
+
# Description:
|
43
|
+
|
44
|
+
property :personal_mandatory_fields, type: :array
|
45
|
+
# Type: String[]
|
46
|
+
# Description:
|
47
|
+
|
48
|
+
property :business_mandatory_fields, type: :array
|
49
|
+
# Type: String[]
|
50
|
+
# Description:
|
51
|
+
|
52
|
+
property :service_description_required, type: :boolean
|
53
|
+
# Type: Boolean
|
54
|
+
# Description:
|
55
|
+
|
56
|
+
property :restriction_message, type: :string
|
57
|
+
# Type: String
|
58
|
+
# Description:
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module DIDWW
|
3
|
+
module Resource
|
4
|
+
class SupportingDocumentTemplate < Base
|
5
|
+
property :name, type: :string
|
6
|
+
# Type: String
|
7
|
+
# Description:
|
8
|
+
|
9
|
+
property :url, type: :string
|
10
|
+
# Type: String
|
11
|
+
# Description:
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,13 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'didww/complex_objects/configurations'
|
2
|
-
require 'didww/resources/trunk/const'
|
3
3
|
|
4
4
|
module DIDWW
|
5
5
|
module Resource
|
6
|
-
class
|
7
|
-
|
6
|
+
class VoiceInTrunk < Base
|
7
|
+
# Allowed values for trunk.cli_format
|
8
|
+
CLI_FORMAT_RAW = 'raw'
|
9
|
+
CLI_FORMAT_E164 = 'e164'
|
10
|
+
CLI_FORMAT_LOCAL = 'local'
|
11
|
+
|
12
|
+
CLI_FORMATS = {
|
13
|
+
CLI_FORMAT_RAW => 'Raw',
|
14
|
+
CLI_FORMAT_E164 => 'E.164',
|
15
|
+
CLI_FORMAT_LOCAL => 'Local'
|
16
|
+
}.freeze
|
17
|
+
|
18
|
+
# Configuration types
|
19
|
+
CONF_TYPE_SIP = 'sip_configurations'
|
20
|
+
CONF_TYPE_H323 = 'h323_configurations'
|
21
|
+
CONF_TYPE_IAX2 = 'iax2_configurations'
|
22
|
+
CONF_TYPE_PSTN = 'pstn_configurations'
|
23
|
+
|
24
|
+
CONF_TYPES = {
|
25
|
+
CONF_TYPE_SIP => 'SIP',
|
26
|
+
CONF_TYPE_H323 => 'H323',
|
27
|
+
CONF_TYPE_IAX2 => 'IAX2',
|
28
|
+
CONF_TYPE_PSTN => 'PSTN'
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
CONF_TYPE_CLASSES = {
|
32
|
+
CONF_TYPE_SIP => DIDWW::ComplexObject::SipConfiguration,
|
33
|
+
CONF_TYPE_H323 => DIDWW::ComplexObject::H323Configuration,
|
34
|
+
CONF_TYPE_IAX2 => DIDWW::ComplexObject::Iax2Configuration,
|
35
|
+
CONF_TYPE_PSTN => DIDWW::ComplexObject::PstnConfiguration
|
36
|
+
}.freeze
|
8
37
|
|
9
38
|
has_one :pop
|
10
|
-
has_one :
|
39
|
+
has_one :voice_in_trunk_group
|
11
40
|
|
12
41
|
property :priority, type: :integer
|
13
42
|
# Type: Integer
|
@@ -62,6 +91,13 @@ module DIDWW
|
|
62
91
|
attribute_will_change!(:configuration) if configuration
|
63
92
|
end
|
64
93
|
|
94
|
+
def cli_format_human
|
95
|
+
CLI_FORMATS[cli_format]
|
96
|
+
end
|
97
|
+
|
98
|
+
def configuration_type_human
|
99
|
+
CONF_TYPES[configuration.type] if configuration
|
100
|
+
end
|
65
101
|
end
|
66
102
|
end
|
67
103
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'didww/callback/const'
|
4
|
+
|
5
|
+
module DIDWW
|
6
|
+
module Resource
|
7
|
+
class VoiceOutTrunk < Base
|
8
|
+
include DIDWW::Callback::CONST
|
9
|
+
|
10
|
+
ON_CLI_MISMATCH_ACTION_REJECT_CALL = 'Reject call'
|
11
|
+
ON_CLI_MISMATCH_ACTION_REPLACE_CLI = 'Replace CLI'
|
12
|
+
ON_CLI_MISMATCH_ACTION_SEND_ORIGINAL_CLI = 'Send Original CLI'
|
13
|
+
|
14
|
+
ON_CLI_MISMATCH_ACTIONS = [
|
15
|
+
ON_CLI_MISMATCH_ACTION_REJECT_CALL,
|
16
|
+
ON_CLI_MISMATCH_ACTION_REPLACE_CLI,
|
17
|
+
ON_CLI_MISMATCH_ACTION_SEND_ORIGINAL_CLI
|
18
|
+
].freeze
|
19
|
+
|
20
|
+
DEFAULT_DST_ACTION_ALLOW_CALLS = 'Allow Calls'
|
21
|
+
DEFAULT_DST_ACTION_REJECT_CALLS = 'Reject Calls'
|
22
|
+
|
23
|
+
DEFAULT_DST_ACTIONS = [
|
24
|
+
DEFAULT_DST_ACTION_ALLOW_CALLS,
|
25
|
+
DEFAULT_DST_ACTION_REJECT_CALLS
|
26
|
+
].freeze
|
27
|
+
|
28
|
+
STATUS_ACTIVE = 'Active'
|
29
|
+
STATUS_BLOCKED = 'Blocked'
|
30
|
+
|
31
|
+
STATUSES = [
|
32
|
+
STATUS_ACTIVE,
|
33
|
+
STATUS_BLOCKED
|
34
|
+
].freeze
|
35
|
+
|
36
|
+
MEDIA_ENCRYPTION_MODE_DISABLE = 'Disable'
|
37
|
+
MEDIA_ENCRYPTION_MODE_SRTP_SDES = 'SRTP SDES'
|
38
|
+
MEDIA_ENCRYPTION_MODE_SRTP_DTLS = 'SRTP DTLS'
|
39
|
+
MEDIA_ENCRYPTION_MODE_ZRTP = 'ZRTP'
|
40
|
+
|
41
|
+
MEDIA_ENCRYPTION_MODES = [
|
42
|
+
MEDIA_ENCRYPTION_MODE_DISABLE,
|
43
|
+
MEDIA_ENCRYPTION_MODE_SRTP_SDES,
|
44
|
+
MEDIA_ENCRYPTION_MODE_SRTP_DTLS,
|
45
|
+
MEDIA_ENCRYPTION_MODE_ZRTP
|
46
|
+
].freeze
|
47
|
+
|
48
|
+
property :name, type: :string
|
49
|
+
property :allowed_sip_ips, type: :ip_addresses
|
50
|
+
property :on_cli_mismatch_action, type: :string
|
51
|
+
property :capacity_limit, type: :integer
|
52
|
+
property :username, type: :string
|
53
|
+
property :password, type: :string
|
54
|
+
property :created_at, type: :time
|
55
|
+
property :allow_any_did_as_cli, type: :boolean
|
56
|
+
property :status, type: :string
|
57
|
+
property :threshold_reached, type: :boolean
|
58
|
+
property :threshold_amount, type: :decimal
|
59
|
+
property :default_dst_action, type: :string
|
60
|
+
property :dst_prefixes, type: :strings
|
61
|
+
property :media_encryption_mode, type: :string
|
62
|
+
property :callback_url, type: :string
|
63
|
+
property :force_symmetric_rtp, type: :boolean
|
64
|
+
property :allowed_rtp_ips, type: :ip_addresses
|
65
|
+
|
66
|
+
has_many :dids
|
67
|
+
|
68
|
+
def regenerate_credentials
|
69
|
+
resource = DIDWW::Resource::VoiceOutTrunkRegenerateCredential.new
|
70
|
+
resource.relationships[:voice_out_trunk] = self
|
71
|
+
resource.save
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DIDWW
|
4
|
+
module Types
|
5
|
+
module IpAddresses
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def cast(values, default)
|
9
|
+
return default unless values.is_a?(Array)
|
10
|
+
|
11
|
+
values.map do |value|
|
12
|
+
cast_item(value)
|
13
|
+
end
|
14
|
+
rescue IPAddr::Error
|
15
|
+
default
|
16
|
+
end
|
17
|
+
|
18
|
+
def cast_item(value)
|
19
|
+
value.is_a?(IPAddr) ? value : IPAddr.new(value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DIDWW
|
4
|
+
module Types
|
5
|
+
module Strings
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def cast(values, default)
|
9
|
+
return default unless values.is_a?(Array)
|
10
|
+
|
11
|
+
values.map do |value|
|
12
|
+
cast_item(value)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def cast_item(value)
|
17
|
+
value.to_s
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/didww/types.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json_api_client/schema'
|
4
|
+
require 'didww/types/ip_addresses'
|
5
|
+
require 'didww/types/strings'
|
6
|
+
require 'didww/complex_objects/base'
|
7
|
+
require 'didww/complex_objects/export_filters'
|
8
|
+
|
9
|
+
JsonApiClient::Schema.register ip_addresses: DIDWW::Types::IpAddresses,
|
10
|
+
strings: DIDWW::Types::Strings,
|
11
|
+
complex_object: DIDWW::ComplexObject::Base,
|
12
|
+
export_filters: DIDWW::ComplexObject::ExportFilters
|
data/lib/didww/version.rb
CHANGED
data/lib/didww.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'didww/version'
|
2
3
|
require 'didww/client'
|
3
|
-
require 'didww/
|
4
|
+
require 'didww/types'
|
5
|
+
require 'didww/base_middleware'
|
6
|
+
require 'didww/jsonapi_middleware'
|
7
|
+
require 'didww/callback/request_validator'
|
8
|
+
require 'didww/encrypt'
|