mock-twilio 1.5 → 1.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +21 -2
- data/lib/mock/twilio/decorators/api_2010/calls.rb +3 -2
- data/lib/mock/twilio/decorators/api_2010/messages.rb +3 -2
- data/lib/mock/twilio/decorators/customer_profiles_v1/customer_profile_update.rb +3 -2
- data/lib/mock/twilio/schemas/brands_registrations_a2p.rb +3 -2
- data/lib/mock/twilio/util/configuration.rb +5 -1
- data/lib/mock/twilio/version.rb +1 -1
- data/lib/mock/twilio/webhook_client.rb +3 -1
- data/lib/mock/twilio/webhooks/base.rb +1 -1
- data/lib/mock/twilio/webhooks/messages.rb +9 -2
- data/lib/mock/twilio.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e02a4a487e0e41196d976f65b65dcc98d038b3c7ebcd24f0e2446c3a9583e99b
|
4
|
+
data.tar.gz: 1c353da26f50254df52488d98a0e870a5aa673700fbfa22f1a67d5c0b9565423
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07cb455b2778cdbfacc3781d36380261efea912ef927bafb7845c2e6b876084a7c74cec68f5ed1c27ddb6a9f02567211e325a68ced19c7fc3472e6edbceeb4ba
|
7
|
+
data.tar.gz: 2677a192cf11edd7d88a7cea325f67932fb4f8e1f0e7544e7ce23879e797dcebc61de62cf5166eb51260ffa4de295ba7ca345044719851997796693eca46c1fa
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -67,11 +67,30 @@ OR
|
|
67
67
|
## How to use
|
68
68
|
Initializer sample
|
69
69
|
```ruby
|
70
|
+
# Local Docker/Host
|
70
71
|
Mock::Twilio.configure do |config|
|
71
|
-
config.host = "http://shunkan-ido-service"
|
72
|
-
config.forwarded_host = "shunkan-ido-service"
|
72
|
+
config.host = "http://shunkan-ido-service:3000"
|
73
|
+
config.forwarded_host = "shunkan-ido-service:3000"
|
73
74
|
config.port = "3000"
|
74
75
|
config.proto = "http"
|
76
|
+
# optional https://www.twilio.com/docs/messaging/api/message-resource#request-body-parameters
|
77
|
+
# Use webhook_message_status_url as the Integration Send webhook from Messaging Service.
|
78
|
+
# If you include status_callback parameter with the messaging_service_sid,
|
79
|
+
# Twilio uses status_callback URL instead of the Status Callback URL(webhook_message_status_url) of the Messaging Service.
|
80
|
+
# config.webhook_message_status_url = "http://shunkan_ido:3000/api/v1/twilio_requests/webhook_message_updates"
|
81
|
+
end
|
82
|
+
|
83
|
+
# Real http(s) url
|
84
|
+
Mock::Twilio.configure do |config|
|
85
|
+
config.host = "https://my-server"
|
86
|
+
config.forwarded_host = "my-server"
|
87
|
+
config.port = "443"
|
88
|
+
config.proto = "https"
|
89
|
+
# optional https://www.twilio.com/docs/messaging/api/message-resource#request-body-parameters
|
90
|
+
# Use webhook_message_status_url as the Integration Send webhook from Messaging Service.
|
91
|
+
# If you include status_callback parameter with the messaging_service_sid,
|
92
|
+
# Twilio uses status_callback URL instead of the Status Callback URL(webhook_message_status_url) of the Messaging Service.
|
93
|
+
# config.webhook_message_status_url = "https://my-server/api/v1/twilio_requests/webhook_message_updates"
|
75
94
|
end
|
76
95
|
```
|
77
96
|
|
@@ -5,6 +5,8 @@ module Mock
|
|
5
5
|
module Decorators
|
6
6
|
module Api2010
|
7
7
|
class Calls
|
8
|
+
@@scheduler = Rufus::Scheduler.new
|
9
|
+
|
8
10
|
class << self
|
9
11
|
def decorate(body, request)
|
10
12
|
body["date_updated"] = Time.current.rfc2822 if body["date_updated"]
|
@@ -26,8 +28,7 @@ module Mock
|
|
26
28
|
def call_sid(body, request)
|
27
29
|
prefix = "CA"
|
28
30
|
sid = prefix + SecureRandom.hex(16)
|
29
|
-
scheduler
|
30
|
-
scheduler.in '2s' do
|
31
|
+
@@scheduler.in '2s' do
|
31
32
|
conference_uuid = request.data["Url"].split("conference_uuid=").last
|
32
33
|
begin
|
33
34
|
response = Mock::Twilio::Webhooks::CallStatusUpdates.trigger(sid, conference_uuid, 'unknown', 'ringing')
|
@@ -5,6 +5,8 @@ module Mock
|
|
5
5
|
module Decorators
|
6
6
|
module Api2010
|
7
7
|
class Messages
|
8
|
+
@@scheduler = Rufus::Scheduler.new
|
9
|
+
|
8
10
|
class << self
|
9
11
|
def decorate(body, request)
|
10
12
|
body["date_updated"] = Time.current.rfc2822 if body["date_updated"]
|
@@ -34,9 +36,8 @@ module Mock
|
|
34
36
|
def message_sid(body, request)
|
35
37
|
prefix = request.data["MediaUrl"] ? "MM" : "SM"
|
36
38
|
sid = prefix + SecureRandom.hex(16)
|
37
|
-
scheduler = Rufus::Scheduler.new
|
38
39
|
callback_url = request.data["StatusCallback"] if request.data["StatusCallback"]
|
39
|
-
scheduler.in '2s' do
|
40
|
+
@@scheduler.in '2s' do
|
40
41
|
begin
|
41
42
|
response = Mock::Twilio::Webhooks::Messages.trigger(sid, callback_url)
|
42
43
|
|
@@ -5,6 +5,8 @@ module Mock
|
|
5
5
|
module Decorators
|
6
6
|
module CustomerProfilesV1
|
7
7
|
class CustomerProfileUpdate
|
8
|
+
@@scheduler = Rufus::Scheduler.new
|
9
|
+
|
8
10
|
class << self
|
9
11
|
def decorate(body, request)
|
10
12
|
body["date_updated"] = Time.current.rfc2822 if body["date_updated"]
|
@@ -21,8 +23,7 @@ module Mock
|
|
21
23
|
def parse_customer_profile_sid(body, request)
|
22
24
|
uri = URI(request.url)
|
23
25
|
customer_profile_sid = uri.path.split('/')[3].split('.').first
|
24
|
-
scheduler
|
25
|
-
scheduler.in '2s' do
|
26
|
+
@@scheduler.in '2s' do
|
26
27
|
begin
|
27
28
|
response = Mock::Twilio::Webhooks::CustomerProfiles.trigger(customer_profile_sid, "in-review")
|
28
29
|
|
@@ -4,6 +4,8 @@ module Mock
|
|
4
4
|
module Twilio
|
5
5
|
module Schemas
|
6
6
|
class BrandsRegistrationsA2p
|
7
|
+
@@scheduler = Rufus::Scheduler.new
|
8
|
+
|
7
9
|
class << self
|
8
10
|
def for(body, request)
|
9
11
|
body["date_updated"] = Time.current.rfc2822 if body["date_updated"]
|
@@ -32,8 +34,7 @@ module Mock
|
|
32
34
|
def brand_sid(body)
|
33
35
|
prefix = "BN"
|
34
36
|
sid = prefix + SecureRandom.hex(16)
|
35
|
-
scheduler
|
36
|
-
scheduler.in '2s' do
|
37
|
+
@@scheduler.in '2s' do
|
37
38
|
response = Mock::Twilio::Webhooks::Brands.trigger(sid, "unverified")
|
38
39
|
response = if response.status == 200
|
39
40
|
Mock::Twilio::Webhooks::Brands.trigger(sid, "verified")
|
@@ -4,7 +4,7 @@ module Mock
|
|
4
4
|
module Twilio
|
5
5
|
module Util
|
6
6
|
class Configuration
|
7
|
-
attr_accessor :host, :forwarded_host, :port, :proto
|
7
|
+
attr_accessor :host, :forwarded_host, :port, :proto, :webhook_message_status_url
|
8
8
|
|
9
9
|
def host=(value)
|
10
10
|
@host = value
|
@@ -21,6 +21,10 @@ module Mock
|
|
21
21
|
def proto=(value)
|
22
22
|
@proto = value
|
23
23
|
end
|
24
|
+
|
25
|
+
def webhook_message_status_url=(value)
|
26
|
+
@webhook_message_status_url = value
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
data/lib/mock/twilio/version.rb
CHANGED
@@ -12,7 +12,9 @@ module Mock
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def _request(request)
|
15
|
-
|
15
|
+
url = request.host.split(":").last.to_i.zero? ? (request.host + ":" + request.port.to_s) : request.host
|
16
|
+
|
17
|
+
@connection = Faraday.new(url: url, ssl: { verify: true }) do |f|
|
16
18
|
f.options.params_encoder = Faraday::FlatParamsEncoder
|
17
19
|
f.request :url_encoded
|
18
20
|
f.adapter @adapter
|
@@ -26,7 +26,7 @@ module Mock
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def self.headers
|
29
|
-
return { 'Host': Mock::Twilio.forwarded_host
|
29
|
+
return { 'Host': Mock::Twilio.forwarded_host, 'X-Forwarded-Proto': Mock::Twilio.proto } if Mock::Twilio.proto == "http"
|
30
30
|
|
31
31
|
{ 'Host': Mock::Twilio.forwarded_host }
|
32
32
|
end
|
@@ -8,8 +8,15 @@ module Mock
|
|
8
8
|
# Wait simulation from twilio
|
9
9
|
sleep DELAY.sample
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
if callback_url
|
12
|
+
request_url = callback_url
|
13
|
+
url = callback_url.split(Mock::Twilio.host).last
|
14
|
+
elsif Mock::Twilio.webhook_message_status_url
|
15
|
+
request_url = Mock::Twilio.webhook_message_status_url
|
16
|
+
url = Mock::Twilio.webhook_message_status_url.split(Mock::Twilio.host).last
|
17
|
+
else
|
18
|
+
raise "There is not webhook_message_status_url or status_callback"
|
19
|
+
end
|
13
20
|
|
14
21
|
data = { :MessageSid=>sid, :MessageStatus=>"delivered" }
|
15
22
|
|
data/lib/mock/twilio.rb
CHANGED
@@ -28,7 +28,7 @@ module Mock
|
|
28
28
|
module Twilio
|
29
29
|
extend SingleForwardable
|
30
30
|
|
31
|
-
def_delegators :configuration, :host, :forwarded_host, :port, :proto
|
31
|
+
def_delegators :configuration, :host, :forwarded_host, :port, :proto, :webhook_message_status_url
|
32
32
|
|
33
33
|
def self.configure(&block)
|
34
34
|
yield configuration
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mock-twilio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SchoolStatus Platform Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
162
|
- !ruby/object:Gem::Version
|
163
163
|
version: '0'
|
164
164
|
requirements: []
|
165
|
-
rubygems_version: 3.
|
165
|
+
rubygems_version: 3.5.12
|
166
166
|
signing_key:
|
167
167
|
specification_version: 4
|
168
168
|
summary: This repository contains Mock::Twilio::Client and Webhooks for Twilio's API.
|