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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6784812fdd19810c53a47401d9f05205e894172a663b6bd5bf47c0d99a08e755
|
4
|
+
data.tar.gz: 8ca18f71683357e40a91faf5166da6fbc6d793b5568484fcb5e01114b7b9d99d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e1e8cd571ccd0e2bab57590b3712c24d06bdf22eea640258c8993271f6c92e84956245eaf86ce8b1c9720afef7d1d5f0d963c4c7be9bb36a62e45c23121067d
|
7
|
+
data.tar.gz: 6ab5993b537757b5f9a5a7004436dac9ce257cb37322d6e5759609867702f2694db47ba861efd20d308cf54395521c535ed0d22086b2bff9fd309ff61b248b5d
|
data/.github/workflows/tests.yml
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,15 +4,64 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
-
## [
|
7
|
+
## [Unreleased]
|
8
|
+
### Breaking Changes
|
9
|
+
- /v3/did_groups removed `local_prefix` attribute
|
10
|
+
### Added
|
11
|
+
- /v3/nanpa_prefixes endpoints being added.
|
12
|
+
|
13
|
+
### Changes
|
14
|
+
- /v3/orders endpoints being updated. Added nanpa_prefix_id attribute for DID order item.
|
15
|
+
|
16
|
+
## [3.0.0]
|
17
|
+
### Breaking Changes
|
18
|
+
- /v3/trunks being moved to /v3/voice_in_trunks.
|
19
|
+
- /v3/trunk_groups being moved to /v3/voice_in_trunk_groups.
|
20
|
+
- /v3/cdr_exports being moved to /v3/exports. Endpoint now allows generating both inbound and outbound CDRs export.
|
21
|
+
- /v3/exports result file will be CSV archived in GZIP.
|
22
|
+
- Callbacks payload for exports being changed: value of type attribute is changed to exports.
|
23
|
+
- /v3/exports export_type required attribute being added to request and response with possible values: cdr_in, cdr_out.
|
24
|
+
- /v3/exports filters attribute being removed from response.
|
25
|
+
- /v3/did_groups filter features allowed values to be changed to sms_in, sms_out, voice_in, voice_out, t38.
|
26
|
+
- /v3/did_groups response value of features attribute to be changed to sms_in, sms_out, voice_in, voice_out, t38.
|
27
|
+
- /v3/available_dids filter did_group.features allowed values being changed to sms_in, sms_out, voice_in, voice_out, t38.
|
28
|
+
- /v3/dids rename trunk_group relationship to voice_in_trunk_group with type voice_in_trunk_groups.
|
29
|
+
- /v3/dids rename trunks relationship to voice_in_trunks with type voice_in_trunks.
|
30
|
+
|
31
|
+
### Changes
|
32
|
+
- /v3/voice_out_trunks endpoints being added.
|
33
|
+
- /v3/voice_out_trunk_regenerate_credentials endpoint being added.
|
34
|
+
- /v3/voice_in_trunks SIP configuration additional attributes being added to request and response: media_encryption_mode, stir_shaken_mode, allowed_rtp_ips.
|
35
|
+
- /v3/dids filter add filter did_group.features with allowed values: sms_in, sms_out, voice_in, voice_out, t38.
|
36
|
+
- Callbacks allow receiving events about /v3/voice_out_trunks status change.
|
37
|
+
|
38
|
+
## [2.0.0] - 2021-10-26
|
39
|
+
### Breaking Changes
|
40
|
+
- upgrade `json_api_client` version to `1.18.0` [#9](https://github.com/didww/didww-v3-ruby/pull/9)
|
41
|
+
Handling of 4XX responses was changed - it now raises JsonApiClient::Errors::ClientError with `detail` as error message instead of adding it into base errors.
|
42
|
+
- /v3/dids in request and response attributes pending_removal being removed in favor of billing_cycles_count.
|
43
|
+
- /v3/did_groups restriction message removed in favor of requirements relationship.
|
44
|
+
|
8
45
|
### Changes
|
9
46
|
- replace travis with github actions [#7](https://github.com/didww/didww-v3-ruby/pull/7) [#9](https://github.com/didww/didww-v3-ruby/pull/9)
|
10
47
|
- use rubocop 1.9.X version [#7](https://github.com/didww/didww-v3-ruby/pull/7)
|
11
48
|
- add bundle-audit [#7](https://github.com/didww/didww-v3-ruby/pull/7)
|
49
|
+
- /v3/orders request attribute items of type DID Order Item Attributes can have billing_cycles_count.
|
50
|
+
- /v3/dids added address_verification relationship.
|
51
|
+
- callbacks attributes added to /v3/orders, /v3/cdr_exports.
|
52
|
+
- /v3/proof_types read endpoints being added.
|
53
|
+
- /v3/supporting_document_templates read endpoints being added.
|
54
|
+
- /v3/requirements read endpoints being added.
|
55
|
+
- /v3/identities read, write, and delete endpoints being added.
|
56
|
+
- /v3/addresses read, write, and delete endpoints being added.
|
57
|
+
- /v3/encrypted_files read, write, and delete endpoints being added.
|
58
|
+
- /v3/proofs write, delete endpoint being added.
|
59
|
+
- /v3/permanent_supporting_documents write, delete endpoint being added.
|
60
|
+
- /v3/address_verifications read and write endpoints being added.
|
61
|
+
- /v3/requirement_validations write endpoint being added.
|
12
62
|
|
13
63
|
### Bugfixes
|
14
64
|
- fix order purchase when activesupport 6.X.X is used.
|
15
|
-
- fix BigDecimal 2 support for ruby 2.7+.
|
16
65
|
|
17
66
|
## [1.3.0] - 2018-09-03
|
18
67
|
### Changes
|
data/Gemfile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
source 'https://rubygems.org'
|
2
3
|
|
3
4
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
@@ -15,7 +16,7 @@ gem 'pry'
|
|
15
16
|
gem 'byebug'
|
16
17
|
gem 'awesome_print'
|
17
18
|
gem 'http_logger'
|
18
|
-
gem 'rubocop', '~> 1.
|
19
|
+
gem 'rubocop', '~> 1.28.2'
|
19
20
|
gem 'rubocop-performance'
|
20
21
|
gem 'rubocop-rake'
|
21
22
|
gem 'rubocop-rspec'
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
Ruby client for DIDWW API v3.
|
2
2
|
|
3
|
-
|
3
|
+
![Tests](https://github.com/didww/didww-v3-ruby/workflows/Tests/badge.svg)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/didww-v3.svg)](https://badge.fury.io/rb/didww-v3)
|
4
5
|
|
5
6
|
About DIDWW API v3
|
6
7
|
-----
|
@@ -11,6 +12,14 @@ The DIDWW API v3 is a fully compliant implementation of the [JSON API specificat
|
|
11
12
|
|
12
13
|
Read more https://doc.didww.com/api
|
13
14
|
|
15
|
+
Gem Versions **4.X.X** and branch [master](https://github.com/didww/didww-v3-ruby) are intended to use with DIDWW API 3 version [2022-05-10](https://doc.didww.com/api3/2022-05-10/index.html).
|
16
|
+
|
17
|
+
Gem Versions **3.X.X** and branch [release-3](https://github.com/didww/didww-v3-ruby/tree/release-3) are intended to use with DIDWW API 3 version [2021-12-15](https://doc.didww.com/api3/2021-12-15/index.html).
|
18
|
+
|
19
|
+
Gem Versions **2.X.X** and branch [release-2](https://github.com/didww/didww-v3-ruby/tree/release-2) are intended to use with DIDWW API 3 version [2021-04-19](https://doc.didww.com/api3/2021-04-19/index.html).
|
20
|
+
|
21
|
+
Gem Versions **1.X.X** and branch [release-1](https://github.com/didww/didww-v3-ruby/tree/release-1) are intended to use with DIDWW API 3 version [2017-09-18](https://doc.didww.com/api3/2017-09-18/index.html).
|
22
|
+
|
14
23
|
## Installation
|
15
24
|
|
16
25
|
Add this line to your application's Gemfile:
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/didww-v3.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -23,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
23
24
|
|
24
25
|
spec.add_dependency 'activesupport'
|
25
26
|
spec.add_dependency 'faraday'
|
26
|
-
spec.add_dependency 'json_api_client', '1.
|
27
|
+
spec.add_dependency 'json_api_client', '1.18.0'
|
27
28
|
spec.add_dependency 'http'
|
28
29
|
spec.add_dependency 'down'
|
30
|
+
spec.add_dependency 'openssl-oaep'
|
29
31
|
end
|
@@ -1,11 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module DIDWW
|
2
3
|
# :nodoc:
|
3
|
-
class
|
4
|
+
class BaseMiddleware < Faraday::Middleware
|
4
5
|
def call(request_env)
|
5
6
|
headers = {}
|
6
|
-
headers['
|
7
|
-
headers['
|
8
|
-
headers['
|
7
|
+
headers['Api-Key'] = DIDWW::Client.api_key
|
8
|
+
headers['User-Agent'] = "didww-v3 Ruby gem v#{VERSION}"
|
9
|
+
headers['x-didww-api-version'] = DIDWW::Client.api_version unless DIDWW::Client.api_version.blank?
|
9
10
|
|
10
11
|
request_env[:request_headers].merge!(headers)
|
11
12
|
request_env.url.host = URI(DIDWW::Client.api_base_url).host
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'openssl'
|
3
|
+
|
4
|
+
module DIDWW
|
5
|
+
module Callback
|
6
|
+
# @example
|
7
|
+
# validator = DIDWW::Callback::RequestValidator.new(api_key)
|
8
|
+
# uri = request.original_url
|
9
|
+
# if request.post?
|
10
|
+
# # Collect all parameters passed from DIDWW.
|
11
|
+
# params = env['rack.request.form_hash']
|
12
|
+
# else
|
13
|
+
# params = env['rack.request.query_hash']
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# signature = env['HTTP_X_DIDWW_SIGNATURE']
|
17
|
+
# validator.validate(uri, params, signature) #=> true if the request is from DIDWW
|
18
|
+
# # or with rails
|
19
|
+
class RequestValidator
|
20
|
+
DIGEST_ALGO = 'SHA1'
|
21
|
+
HEADER = 'X-DIDWW-Signature'
|
22
|
+
|
23
|
+
def initialize(api_key)
|
24
|
+
@api_key = api_key
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param url [String]
|
28
|
+
# @param payload [Hash]
|
29
|
+
# @param signature [String]
|
30
|
+
# @return [Boolean] whether signature valid or not.
|
31
|
+
def validate(url, payload, signature)
|
32
|
+
return false if signature.blank?
|
33
|
+
|
34
|
+
signature == valid_signature(url, payload)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
# @param url [String]
|
40
|
+
# @param payload [Hash,Array]
|
41
|
+
# @return [String] generated signature in URL safe format.
|
42
|
+
def valid_signature(url, payload)
|
43
|
+
data = normalize_url(url) + normalize_payload(payload)
|
44
|
+
OpenSSL::HMAC.hexdigest(DIGEST_ALGO, @api_key, data)
|
45
|
+
end
|
46
|
+
|
47
|
+
# @param payload [Hash,Array]
|
48
|
+
# @return [String] normalized payload.
|
49
|
+
def normalize_payload(payload)
|
50
|
+
if payload.is_a?(Hash)
|
51
|
+
payload.sort.join
|
52
|
+
else
|
53
|
+
payload.map { |item| item.sort.join }.join
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [String] normalized URL.
|
58
|
+
def normalize_url(url)
|
59
|
+
parsed_url = URI ensure_protocol_url(url)
|
60
|
+
url = "#{parsed_url.scheme || 'http'}://"
|
61
|
+
url += "#{parsed_url.userinfo}@" if parsed_url.userinfo
|
62
|
+
url += "#{parsed_url.host}:#{parsed_url.port || parsed_url.default_port}#{parsed_url.path}"
|
63
|
+
url += "?#{parsed_url.query}" if parsed_url.query
|
64
|
+
url += "##{parsed_url.fragment}" if parsed_url.fragment
|
65
|
+
url
|
66
|
+
end
|
67
|
+
|
68
|
+
def ensure_protocol_url(url)
|
69
|
+
if url[%r{\A[a-zA-Z]+://}i]
|
70
|
+
url
|
71
|
+
else
|
72
|
+
'http://' + url
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/didww/client.rb
CHANGED
@@ -1,27 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'active_support/core_ext/module/attribute_accessors'
|
3
|
+
require 'active_support/core_ext/object/blank'
|
2
4
|
require 'json_api_client'
|
3
5
|
|
4
|
-
require 'didww/
|
5
|
-
|
6
|
-
# Fixes BigDecimal 2 support for ruby 2.7+ without introducing json_api_client breaking changes.
|
7
|
-
# https://github.com/JsonApiClient/json_api_client/commit/ac372b8bab3b71bb0aa5c4dcc6ced1d9c3fe8d14
|
8
|
-
class JsonApiClient::Schema::Types::FixedDecimal
|
9
|
-
def self.cast(value, _)
|
10
|
-
BigDecimal(value)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
JsonApiClient::Schema.register decimal: JsonApiClient::Schema::Types::FixedDecimal
|
6
|
+
require 'didww/resource/base'
|
15
7
|
|
16
8
|
module DIDWW
|
17
9
|
module Client
|
18
10
|
BASE_URLS = {
|
19
11
|
sandbox: 'https://sandbox-api.didww.com/v3/' .freeze,
|
20
|
-
production: 'https://api.didww.com/v3/' .freeze
|
12
|
+
production: 'https://sandbox-api.didww.com/v3/' .freeze
|
21
13
|
}.freeze
|
22
14
|
DEFAULT_MODE = :sandbox
|
23
15
|
|
24
|
-
mattr_accessor :api_key, :api_mode, :http_verbose
|
16
|
+
mattr_accessor :api_key, :api_mode, :http_verbose, :api_version
|
25
17
|
|
26
18
|
class << self
|
27
19
|
def configure
|
@@ -39,8 +31,20 @@ module DIDWW
|
|
39
31
|
@@api_key
|
40
32
|
end
|
41
33
|
|
34
|
+
def api_version
|
35
|
+
@@api_version
|
36
|
+
end
|
37
|
+
|
38
|
+
def with_api_version(api_version)
|
39
|
+
old_api_version = self.api_version
|
40
|
+
self.api_version = api_version
|
41
|
+
yield
|
42
|
+
ensure
|
43
|
+
self.api_version = old_api_version
|
44
|
+
end
|
45
|
+
|
42
46
|
def api_base_url
|
43
|
-
BASE_URLS[api_mode]
|
47
|
+
ENV['DIDWW_API_URL'].presence || BASE_URLS[api_mode]
|
44
48
|
end
|
45
49
|
|
46
50
|
def balance
|
@@ -51,8 +55,8 @@ module DIDWW
|
|
51
55
|
Resource::CapacityPool
|
52
56
|
end
|
53
57
|
|
54
|
-
def
|
55
|
-
Resource::
|
58
|
+
def exports
|
59
|
+
Resource::Export
|
56
60
|
end
|
57
61
|
|
58
62
|
def shared_capacity_groups
|
@@ -91,12 +95,16 @@ module DIDWW
|
|
91
95
|
Resource::Region
|
92
96
|
end
|
93
97
|
|
94
|
-
def
|
95
|
-
Resource::
|
98
|
+
def voice_in_trunk_groups
|
99
|
+
Resource::VoiceInTrunkGroup
|
100
|
+
end
|
101
|
+
|
102
|
+
def voice_in_trunks
|
103
|
+
Resource::VoiceInTrunk
|
96
104
|
end
|
97
105
|
|
98
|
-
def
|
99
|
-
Resource::
|
106
|
+
def voice_out_trunks
|
107
|
+
Resource::VoiceOutTrunk
|
100
108
|
end
|
101
109
|
|
102
110
|
def available_dids
|
@@ -107,6 +115,38 @@ module DIDWW
|
|
107
115
|
Resource::DidReservation
|
108
116
|
end
|
109
117
|
|
118
|
+
def requirements
|
119
|
+
Resource::Requirement
|
120
|
+
end
|
121
|
+
|
122
|
+
def identities
|
123
|
+
Resource::Identity
|
124
|
+
end
|
125
|
+
|
126
|
+
def proofs
|
127
|
+
Resource::Proof
|
128
|
+
end
|
129
|
+
|
130
|
+
def addresses
|
131
|
+
Resource::Address
|
132
|
+
end
|
133
|
+
|
134
|
+
def permanent_supporting_documents
|
135
|
+
Resource::PermanentSupportingDocument
|
136
|
+
end
|
137
|
+
|
138
|
+
def encrypted_file
|
139
|
+
Resource::EncryptedFile
|
140
|
+
end
|
141
|
+
|
142
|
+
def address_verifications
|
143
|
+
Resource::AddressVerification
|
144
|
+
end
|
145
|
+
|
146
|
+
def requirement_validation
|
147
|
+
Resource::RequirementValidation
|
148
|
+
end
|
149
|
+
|
110
150
|
def api_mode=(arg)
|
111
151
|
unless BASE_URLS.keys.include?(arg)
|
112
152
|
raise ArgumentError.new("Mode should be in #{BASE_URLS.keys} (given '#{arg}').")
|
@@ -114,6 +154,10 @@ module DIDWW
|
|
114
154
|
@@api_mode = arg
|
115
155
|
end
|
116
156
|
|
157
|
+
def nanpa_prefixes
|
158
|
+
Resource::NanpaPrefix
|
159
|
+
end
|
160
|
+
|
117
161
|
private
|
118
162
|
|
119
163
|
def http_verbose?
|
@@ -124,31 +168,46 @@ module DIDWW
|
|
124
168
|
DIDWW::Resource::Base.site = api_base_url
|
125
169
|
DIDWW::Resource::Base.connection do |connection|
|
126
170
|
connection.use Faraday::Response::Logger if http_verbose?
|
127
|
-
connection.use DIDWW::
|
171
|
+
connection.use DIDWW::JsonapiMiddleware
|
128
172
|
end
|
129
173
|
JsonApiClient::Paginating::Paginator.page_param = 'number'
|
130
174
|
JsonApiClient::Paginating::Paginator.per_page_param = 'size'
|
131
175
|
end
|
132
176
|
|
133
177
|
def require_didww_resources
|
134
|
-
require 'didww/
|
135
|
-
require 'didww/
|
136
|
-
require 'didww/
|
137
|
-
require 'didww/
|
138
|
-
require 'didww/
|
139
|
-
require 'didww/
|
140
|
-
require 'didww/
|
141
|
-
require 'didww/
|
142
|
-
require 'didww/
|
143
|
-
require 'didww/
|
144
|
-
require 'didww/
|
145
|
-
require 'didww/
|
146
|
-
require 'didww/
|
147
|
-
require 'didww/
|
148
|
-
require 'didww/
|
149
|
-
require 'didww/
|
150
|
-
require 'didww/
|
151
|
-
require 'didww/
|
178
|
+
require 'didww/resource/balance'
|
179
|
+
require 'didww/resource/capacity_pool'
|
180
|
+
require 'didww/resource/export'
|
181
|
+
require 'didww/resource/shared_capacity_group'
|
182
|
+
require 'didww/resource/city'
|
183
|
+
require 'didww/resource/country'
|
184
|
+
require 'didww/resource/did_group_type'
|
185
|
+
require 'didww/resource/did_group'
|
186
|
+
require 'didww/resource/did'
|
187
|
+
require 'didww/resource/order'
|
188
|
+
require 'didww/resource/pop'
|
189
|
+
require 'didww/resource/qty_based_pricing'
|
190
|
+
require 'didww/resource/region'
|
191
|
+
require 'didww/resource/stock_keeping_unit'
|
192
|
+
require 'didww/resource/voice_in_trunk_group'
|
193
|
+
require 'didww/resource/voice_in_trunk'
|
194
|
+
require 'didww/resource/available_did'
|
195
|
+
require 'didww/resource/did_reservation'
|
196
|
+
require 'didww/resource/requirement'
|
197
|
+
require 'didww/resource/proof_type'
|
198
|
+
require 'didww/resource/supporting_document_template'
|
199
|
+
require 'didww/resource/identity'
|
200
|
+
require 'didww/resource/proof'
|
201
|
+
require 'didww/resource/address'
|
202
|
+
require 'didww/resource/permanent_supporting_document'
|
203
|
+
require 'didww/resource/encrypted_file'
|
204
|
+
require 'didww/resource/address_verification'
|
205
|
+
require 'didww/resource/requirement_validation'
|
206
|
+
require 'didww/resource/public_key'
|
207
|
+
require 'didww/resource/area'
|
208
|
+
require 'didww/resource/voice_out_trunk'
|
209
|
+
require 'didww/resource/voice_out_trunk_regenerate_credential'
|
210
|
+
require 'didww/resource/nanpa_prefix'
|
152
211
|
end
|
153
212
|
|
154
213
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'json_api_client/schema'
|
2
3
|
|
3
4
|
module DIDWW
|
@@ -11,7 +12,7 @@ module DIDWW
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def property(name, options = {})
|
14
|
-
|
15
|
+
schema.add(name, options)
|
15
16
|
define_method(name.to_sym) { self[name] }
|
16
17
|
define_method("#{name}=".to_sym) { |val| self[name] = val }
|
17
18
|
end
|
@@ -87,5 +88,3 @@ module DIDWW
|
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
90
|
-
|
91
|
-
JsonApiClient::Schema.register complex_object: DIDWW::ComplexObject::Base
|
@@ -1,10 +1,151 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module DIDWW
|
4
4
|
module ComplexObject
|
5
5
|
module Configuration
|
6
6
|
class Base < ComplexObject::Base
|
7
|
-
|
7
|
+
RX_DTMF_FORMATS = {
|
8
|
+
1 => 'RFC 2833',
|
9
|
+
2 => 'SIP INFO application/dtmf-relay OR application/dtmf',
|
10
|
+
3 => 'RFC 2833 OR SIP INFO'
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
TX_DTMF_FORMATS = {
|
14
|
+
0 => 'Disable sending',
|
15
|
+
1 => 'RFC 2833',
|
16
|
+
2 => 'SIP INFO application/dtmf-relay',
|
17
|
+
4 => 'SIP INFO application/dtmf'
|
18
|
+
}.freeze
|
19
|
+
|
20
|
+
SST_REFRESH_METHODS = {
|
21
|
+
1 => 'Invite',
|
22
|
+
2 => 'Update',
|
23
|
+
3 => 'Update fallback Invite'
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
TRANSPORT_PROTOCOLS = {
|
27
|
+
1 => 'UDP',
|
28
|
+
2 => 'TCP',
|
29
|
+
3 => 'TLS'
|
30
|
+
}.freeze
|
31
|
+
|
32
|
+
REROUTING_DISCONNECT_CODES = {
|
33
|
+
56 => '400 | Bad Request',
|
34
|
+
57 => '401 | Unauthorized',
|
35
|
+
58 => '402 | Payment Required',
|
36
|
+
59 => '403 | Forbidden',
|
37
|
+
60 => '404 | Not Found',
|
38
|
+
64 => '408 | Request Timeout',
|
39
|
+
65 => '409 | Conflict',
|
40
|
+
66 => '410 | Gone',
|
41
|
+
67 => '412 | Conditional Request Failed',
|
42
|
+
68 => '413 | Request Entity Too Large',
|
43
|
+
69 => '414 | Request-URI Too Long',
|
44
|
+
70 => '415 | Unsupported Media Type',
|
45
|
+
71 => '416 | Unsupported URI Scheme',
|
46
|
+
72 => '417 | Unknown Resource-Priority',
|
47
|
+
73 => '420 | Bad Extension',
|
48
|
+
74 => '421 | Extension Required',
|
49
|
+
75 => '422 | Session Interval Too Small',
|
50
|
+
76 => '423 | Interval Too Brief',
|
51
|
+
77 => '424 | Bad Location Information',
|
52
|
+
78 => '428 | Use Identity Header',
|
53
|
+
79 => '429 | Provide Referrer Identity',
|
54
|
+
80 => '433 | Anonymity Disallowed',
|
55
|
+
81 => '436 | Bad Identity-Info',
|
56
|
+
82 => '437 | Unsupported Certificate',
|
57
|
+
83 => '438 | Invalid Identity Header',
|
58
|
+
84 => '480 | Temporarily Unavailable',
|
59
|
+
86 => '482 | Loop Detected',
|
60
|
+
87 => '483 | Too Many Hops',
|
61
|
+
88 => '484 | Address Incomplete',
|
62
|
+
89 => '485 | Ambiguous',
|
63
|
+
90 => '486 | Busy Here',
|
64
|
+
91 => '487 | Request Terminated',
|
65
|
+
92 => '488 | Not Acceptable Here',
|
66
|
+
96 => '494 | Security Agreement Required',
|
67
|
+
97 => '500 | Server Internal Error',
|
68
|
+
98 => '501 | Not Implemented',
|
69
|
+
99 => '502 | Bad Gateway',
|
70
|
+
100 => '503 | Service Unavailable',
|
71
|
+
101 => '504 | Server Time-out',
|
72
|
+
102 => '505 | Version Not Supported',
|
73
|
+
103 => '513 | Message Too Large',
|
74
|
+
104 => '580 | Precondition Failure',
|
75
|
+
105 => '600 | Busy Everywhere',
|
76
|
+
106 => '603 | Decline',
|
77
|
+
107 => '604 | Does Not Exist Anywhere',
|
78
|
+
108 => '606 | Not Acceptable',
|
79
|
+
1505 => 'Ringing timeout'
|
80
|
+
}.freeze
|
81
|
+
|
82
|
+
CODECS = {
|
83
|
+
6 => 'telephone-event',
|
84
|
+
7 => 'G723',
|
85
|
+
8 => 'G729',
|
86
|
+
9 => 'PCMU',
|
87
|
+
10 => 'PCMA',
|
88
|
+
12 => 'speex',
|
89
|
+
13 => 'GSM',
|
90
|
+
14 => 'G726-32',
|
91
|
+
15 => 'G721',
|
92
|
+
16 => 'G726-24',
|
93
|
+
17 => 'G726-40',
|
94
|
+
18 => 'G726-16',
|
95
|
+
19 => 'L16'
|
96
|
+
}.freeze
|
97
|
+
|
98
|
+
DEFAULT_REROUTING_DISCONNECT_CODE_IDS = [
|
99
|
+
56,
|
100
|
+
58,
|
101
|
+
59,
|
102
|
+
60,
|
103
|
+
64,
|
104
|
+
65,
|
105
|
+
66,
|
106
|
+
67,
|
107
|
+
68,
|
108
|
+
69,
|
109
|
+
70,
|
110
|
+
71,
|
111
|
+
72,
|
112
|
+
73,
|
113
|
+
74,
|
114
|
+
75,
|
115
|
+
76,
|
116
|
+
77,
|
117
|
+
78,
|
118
|
+
79,
|
119
|
+
80,
|
120
|
+
81,
|
121
|
+
82,
|
122
|
+
83,
|
123
|
+
84,
|
124
|
+
86,
|
125
|
+
87,
|
126
|
+
88,
|
127
|
+
89,
|
128
|
+
90,
|
129
|
+
91,
|
130
|
+
92,
|
131
|
+
96,
|
132
|
+
97,
|
133
|
+
98,
|
134
|
+
99,
|
135
|
+
101,
|
136
|
+
102,
|
137
|
+
103,
|
138
|
+
104,
|
139
|
+
105,
|
140
|
+
106,
|
141
|
+
107,
|
142
|
+
108,
|
143
|
+
1505
|
144
|
+
].freeze
|
145
|
+
|
146
|
+
DEFAULT_CODEC_IDS = [9, 10, 8, 7, 6].freeze
|
147
|
+
|
148
|
+
DID_PLACEHOLDER = '{DID}'
|
8
149
|
end
|
9
150
|
end
|
10
151
|
end
|