mote_sms 1.3.16 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/Gemfile +4 -0
- data/README.md +1 -1
- data/bin/console.rb +8 -0
- data/lib/mote_sms/delivery_job.rb +2 -0
- data/lib/mote_sms/message.rb +4 -1
- data/lib/mote_sms/number.rb +2 -0
- data/lib/mote_sms/number_list.rb +2 -0
- data/lib/mote_sms/transports/OBH_transport.rb +86 -0
- data/lib/mote_sms/transports/action_mailer_transport.rb +15 -1
- data/lib/mote_sms/transports/http_client.rb +2 -0
- data/lib/mote_sms/transports/mobile_technics_transport.rb +2 -0
- data/lib/mote_sms/transports/swisscom_transport.rb +2 -0
- data/lib/mote_sms/transports/test_transport.rb +2 -0
- data/lib/mote_sms/transports/twilio_transport.rb +2 -0
- data/lib/mote_sms/transports.rb +3 -0
- data/lib/mote_sms/version.rb +3 -1
- data/lib/mote_sms.rb +2 -0
- data/mote_sms.gemspec +19 -14
- data/spec/fixtures/cert_obh-fake.pem +30 -0
- data/spec/mote_sms/delivery_job_spec.rb +2 -0
- data/spec/mote_sms/message_spec.rb +3 -1
- data/spec/mote_sms/number_list_spec.rb +2 -0
- data/spec/mote_sms/number_spec.rb +2 -0
- data/spec/mote_sms/transports/action_mailer_transport_spec.rb +2 -0
- data/spec/mote_sms/transports/http_client_spec.rb +2 -0
- data/spec/mote_sms/transports/mobile_technics_transport_spec.rb +2 -0
- data/spec/mote_sms/transports/obh_transport_spec.rb +45 -0
- data/spec/mote_sms/transports/swisscom_transport_spec.rb +2 -0
- data/spec/mote_sms/transports/test_transport_spec.rb +2 -0
- data/spec/mote_sms/transports/twilio_transport_spec.rb +2 -7
- data/spec/mote_sms_spec.rb +2 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/file_fixture_support.rb +48 -0
- metadata +44 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3d1f95162a14f956bc6a9b403f123756b0492562537c03f41d59a53bff393242
|
4
|
+
data.tar.gz: d8e2f10dff5669046f0e3eb968c865b2ea6ca15eb8cebe7e49686402b8a02a88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4d3cc0d89021434a5e9a495cf5aaffa714f6c4c3e5af1fdb8070e369e5585a719ecaf28a6ec3b2845bba11409c0d72de980d62aecb86a9741963f78e6582afb
|
7
|
+
data.tar.gz: cd47cfda6aba3d8d990888d70eed4cbc6b7259cc4800e1455e34dadea500392cc5d8f01f01620c62f2aee44748e7c926c39b810f8366a9574ae915d1bc4b8d12
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/bin/console.rb
ADDED
data/lib/mote_sms/message.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'mote_sms/number'
|
2
4
|
require 'mote_sms/number_list'
|
3
5
|
|
@@ -37,6 +39,7 @@ module MoteSMS
|
|
37
39
|
#
|
38
40
|
# Returns value of body.
|
39
41
|
attr_writer :body
|
42
|
+
|
40
43
|
def body(val = nil)
|
41
44
|
@body = val if val
|
42
45
|
@body
|
@@ -56,7 +59,7 @@ module MoteSMS
|
|
56
59
|
@from
|
57
60
|
end
|
58
61
|
|
59
|
-
# Public:
|
62
|
+
# Public: Assign an instance of Number instead of the direct
|
60
63
|
# string, so only vanity numbers are allowed.
|
61
64
|
def from=(val)
|
62
65
|
@from = val ? Number.new(val, vanity: true) : nil
|
data/lib/mote_sms/number.rb
CHANGED
data/lib/mote_sms/number_list.rb
CHANGED
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'phony'
|
2
|
+
require 'logger'
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require 'OBH/client'
|
6
|
+
|
7
|
+
module MoteSMS
|
8
|
+
# MoteSMS::OBHTransport provides the implementation to OBH
|
9
|
+
#
|
10
|
+
# Examples:
|
11
|
+
#
|
12
|
+
# MoteSMS.transport = MoteSMS::OBHTransport.new 'obh.key', '/cert_obh.pem', 'YouAPIKEy', 'https://test.comapi/v1'
|
13
|
+
# sms = MoteSMS::Message.new do
|
14
|
+
# to 'to_number'
|
15
|
+
# body 'my cool text'
|
16
|
+
# end
|
17
|
+
# sms.deliver_now
|
18
|
+
#
|
19
|
+
class OBHTransport
|
20
|
+
Credentials = Struct.new(:client_key_path, :client_cert_path, :api_key)
|
21
|
+
# Maximum recipients allowed by API
|
22
|
+
MAX_RECIPIENT = 1
|
23
|
+
|
24
|
+
# Custom exception subclass.
|
25
|
+
ServiceError = Class.new(::Exception)
|
26
|
+
|
27
|
+
# attr_reader :api_endpoint, :proxy_host, :proxy_port, :locale, :logger, :credentials
|
28
|
+
attr_accessor :message_from
|
29
|
+
attr_reader :obh_client
|
30
|
+
|
31
|
+
|
32
|
+
# Public: Create a new instance using specified endpoint end credentials
|
33
|
+
#
|
34
|
+
# @param [string] client_key_path the path to the key file
|
35
|
+
# @param [string] client_cert_path the path to the certificate
|
36
|
+
# @param [string] api_key the api_key
|
37
|
+
# @param [string] api_endpoint the api_endpoint
|
38
|
+
# @param [Hash] options you can pass other client options like proxy_host, proxy_port, locale and logger.
|
39
|
+
# Another additional options is :message_from to set if teh transporter have to use or not the `from` parameters
|
40
|
+
# for the message, by default is false
|
41
|
+
#
|
42
|
+
# Returns a new instance.
|
43
|
+
def initialize(client_key_path, client_cert_path, api_key, api_endpoint, options = {})
|
44
|
+
@obh_client = OBH::Client.new do |conf|
|
45
|
+
conf.credentials(client_key_path: client_key_path, client_cert_path: client_cert_path, api_key: api_key)
|
46
|
+
conf.api_endpoint = api_endpoint
|
47
|
+
conf.proxy_host = options[:proxy_host]
|
48
|
+
conf.proxy_port = options[:proxy_port]
|
49
|
+
conf.locale = options[:locale]
|
50
|
+
conf.logger = options[:logger]
|
51
|
+
end
|
52
|
+
@message_from = options[:message_from] || false
|
53
|
+
end
|
54
|
+
|
55
|
+
# Public: Delivers message using mobile technics HTTP/S API.
|
56
|
+
#
|
57
|
+
# @param message - The MoteSMS::Message instance to send.
|
58
|
+
# @param _options - The Hash with service specific options.
|
59
|
+
#
|
60
|
+
# @return [Array] Returns Array with sender ids.
|
61
|
+
#
|
62
|
+
def deliver(message, _options = {})
|
63
|
+
raise ArgumentError, "too many recipients, max. is #{MAX_RECIPIENT}" if message.to.length > MAX_RECIPIENT
|
64
|
+
|
65
|
+
# perform request
|
66
|
+
@obh_client.send_sms(post_params(message))
|
67
|
+
message.to
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
# Create the message post params
|
73
|
+
# @param [NoteSMS::Message] message
|
74
|
+
# @return [Hash]
|
75
|
+
def post_params(message)
|
76
|
+
params = { to: prepare_numbers(message.to), body: message.body }
|
77
|
+
params[:from] = message.from.to_s if @message_from
|
78
|
+
params
|
79
|
+
end
|
80
|
+
|
81
|
+
def prepare_numbers(number_list)
|
82
|
+
number_list.normalized_numbers.map { |n| Phony.formatted(n, format: :international_absolute, spaces: '') }.first
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
@@ -1,13 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'action_mailer'
|
2
4
|
|
3
5
|
module MoteSMS
|
4
6
|
# Internal: ActionMailer class to forward SMS to recipient.
|
5
7
|
class ActionMailerSMSMailer < ::ActionMailer::Base
|
6
8
|
def forward_sms(recipient, sms, options = {})
|
7
|
-
subject = options[:
|
9
|
+
subject = if options[:allow_empty_subject].present?
|
10
|
+
options[:subject].presence
|
11
|
+
else
|
12
|
+
options[:subject].presence || "SMS to #{sms.to.map(&:to_s).join(', ')}"
|
13
|
+
end
|
8
14
|
from = options[:from].presence || "#{sms.from} <#{recipient}>"
|
9
15
|
mail options.merge(to: recipient, from: from, subject: subject, body: sms.body)
|
10
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# override behaviour of actionmailer to get an empty subject
|
21
|
+
# https://api.rubyonrails.org/v6.0.3.4/classes/ActionMailer/Base.html#method-i-default_i18n_subject
|
22
|
+
def default_i18n_subject(interpolations = {})
|
23
|
+
''
|
24
|
+
end
|
11
25
|
end
|
12
26
|
|
13
27
|
# MoteSMS::ActionMailerTransport provides a transport implementation which
|
data/lib/mote_sms/transports.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module MoteSMS
|
2
4
|
# All transports live within mote_sms/transports, though should be
|
3
5
|
# available in ruby as `MoteSMS::<Some>Transport`.
|
@@ -7,4 +9,5 @@ module MoteSMS
|
|
7
9
|
autoload :ActionMailerTransport, 'mote_sms/transports/action_mailer_transport'
|
8
10
|
autoload :SwisscomTransport, 'mote_sms/transports/swisscom_transport'
|
9
11
|
autoload :TwilioTransport, 'mote_sms/transports/twilio_transport'
|
12
|
+
autoload :OBHTransport, 'mote_sms/transports/OBH_transport'
|
10
13
|
end
|
data/lib/mote_sms/version.rb
CHANGED
data/lib/mote_sms.rb
CHANGED
data/mote_sms.gemspec
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'mote_sms/version'
|
3
7
|
|
4
8
|
Gem::Specification.new do |gem|
|
5
9
|
gem.name = 'mote_sms'
|
6
|
-
gem.
|
7
|
-
gem.
|
10
|
+
gem.version = MoteSMS::VERSION
|
11
|
+
gem.authors = ['Lukas Westermann', 'Loris Gavillet', 'Simon Schmid']
|
12
|
+
gem.email = ['info@at-point.ch']
|
8
13
|
gem.summary = 'Deliver SMS using Swisscom / MobileTechnics REST API.'
|
9
14
|
gem.description = 'Unofficial ruby adapter for Swisscom and MobileTechnics Bulk SMS APIs.
|
10
15
|
Tries to mimick mail API, so users can switch e.g. ActionMailer
|
@@ -15,18 +20,18 @@ Gem::Specification.new do |gem|
|
|
15
20
|
gem.bindir = 'exe'
|
16
21
|
gem.executables = gem.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
17
22
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
-
gem.require_paths =
|
19
|
-
gem.version = MoteSMS::VERSION
|
23
|
+
gem.require_paths = ['lib']
|
20
24
|
|
21
|
-
gem.required_ruby_version = '>=
|
25
|
+
gem.required_ruby_version = '>= 3.1'
|
22
26
|
|
23
|
-
gem.add_dependency 'phony',
|
24
|
-
gem.add_dependency 'activesupport',
|
27
|
+
gem.add_dependency 'phony', '>= 2'
|
28
|
+
gem.add_dependency 'activesupport', '>= 5'
|
25
29
|
|
26
30
|
gem.add_development_dependency 'rake'
|
27
|
-
gem.add_development_dependency 'rspec',
|
28
|
-
gem.add_development_dependency 'webmock',
|
29
|
-
gem.add_development_dependency 'actionmailer',
|
30
|
-
gem.add_development_dependency 'activejob',
|
31
|
-
gem.add_development_dependency 'twilio-ruby',
|
31
|
+
gem.add_development_dependency 'rspec', '~> 3.6'
|
32
|
+
gem.add_development_dependency 'webmock', '~> 3.14'
|
33
|
+
gem.add_development_dependency 'actionmailer', '>= 6.1'
|
34
|
+
gem.add_development_dependency 'activejob', '>= 6.1'
|
35
|
+
gem.add_development_dependency 'twilio-ruby', '~> 6'
|
36
|
+
gem.add_development_dependency 'obh-client', '~> 0.3'
|
32
37
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIFJDCCAwwCCQCXnYkF9sduTDANBgkqhkiG9w0BAQsFADBUMREwDwYDVQQDDAhv
|
3
|
+
YmgtdGVzdDEQMA4GA1UECgwHYXRwb2ludDEPMA0GA1UEBwwGenVyaWNoMQ8wDQYD
|
4
|
+
VQQIDAZ6dXJpY2gxCzAJBgNVBAYTAkNIMB4XDTIxMTIyODEwNTA0OFoXDTIyMTIy
|
5
|
+
ODEwNTA0OFowVDERMA8GA1UEAwwIb2JoLXRlc3QxEDAOBgNVBAoMB2F0cG9pbnQx
|
6
|
+
DzANBgNVBAcMBnp1cmljaDEPMA0GA1UECAwGenVyaWNoMQswCQYDVQQGEwJDSDCC
|
7
|
+
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3hVdTG3vf5Qu9okeL3/O8
|
8
|
+
enjjbjDz6GsD4csOnsl3L0Ch8gMf6K8NSpZ04KrLXy0JNadADzyJg79EDnVSwXO6
|
9
|
+
CLmyLlPzmsrvxy2mfcAWzACApqw3t4Q0KNGu/Nhhae+RMnfkFxPE+m3M52T0Ifyj
|
10
|
+
5r85oWcWLHeWNCzpYqyd+FCwDMKfsxPLomfE8W8EvzXkntvpKvUZ1ADNU2yj/4KX
|
11
|
+
uWNhyp0/8MvwTq9dS5v8fGpfqZ4uzR1tTgbceTXRzNqDXIFDmjtNpc9mQOwUiysS
|
12
|
+
lhYDisejNxRAFMY/Z36+W2cuGMJMK73Usxu0VxTvM2F6bHWh/P0Yy3KV4HHXwWht
|
13
|
+
R+sPqwS8Yod89EJyMj3/47LovGUxirGBTM2yon8m1GXsQtPiR/LKCv2ujSVdLnsJ
|
14
|
+
HkBZPRZ/a4wL3ZCI0glfrV+/L0QjXPt6LmRg6jQWCEJ0YefU52SLwQ078oFzHVPh
|
15
|
+
VwIpJsCr/ebAgR8F9mrpnj0jESgq8Ap0OfrJ5ay4y13+aUyY3dbgNS8fOE8e2sE2
|
16
|
+
xb08BZ4MPk6M0mA30oi4rjfZOhE3UOwrb8b6Ytq4whunQ9z98k34vQhm3yMMP1e7
|
17
|
+
OPp4Hg1i9JXrAPQurVTRcLQRyPZkaPtzM0H6Hj2MVCFCLdyOOIXYTLCpyydtG4kz
|
18
|
+
+GNnjXEUGYFK/UtCQWlhAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAGbV00MYmZBz
|
19
|
+
eEjOBsVyXs/kE6Znkr8q/9IeIMpYgfTWoldpWo2f8TShrR+N2LFG2DxzU5z0tVFe
|
20
|
+
T6HP04lzrgkNw12dOIFhzxMrzGxKqT7M4pTcBR5gPE2XPstebdDxxPJfTzNpkv8A
|
21
|
+
zCwVgWorLimsHrcxcjb+axkxJoOKCcI+xU7DkGRU4XQSdt7TYKXFUJqHkabfgY+x
|
22
|
+
a5ay6Ul4gEB3slnvUC1moQQQP8qT2wbnwze6FkVHC+9TwosTJxsRNWuhy7RBn2Gk
|
23
|
+
nAFQV4nsT0HyAyJGDPzVjzabOQQgoA4sTaMQdsX67017o5UnHY7lPjkJNXrG8E6O
|
24
|
+
Cp7f+KLf+4V7cr2EfAkikN7QfE0vLVmI5yckL4XkYG8P+n+hWuBdMR/Bskb///h1
|
25
|
+
18AHWmOMn9777MgN/gs7arS0CVIYuLDrpl8Qz+oAekLvRgRwHpHCSv9nbdvqSmXx
|
26
|
+
0cOUljdu2o+0T+yWQT3PGyqD1PxVnm3LSn+w6aImd1yk/e4SuB9itQIWrcxsBtop
|
27
|
+
Jj5SgG1bgaUTE/FNf1nETpL00E2OyErk00LSNbQYSa++LDGDvQT4tbDPODMklKP6
|
28
|
+
AHxDtB9NpdB6Ty9dy1AO6lFHnINlU2AqZ++bwdbGiEsd5j70Iun/y3mVPQ4lqW3v
|
29
|
+
NLlZI8iwQBcPIDeSLm2GSRTz2Hw1rWLR
|
30
|
+
-----END CERTIFICATE-----
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'mote_sms'
|
3
5
|
require 'active_job'
|
@@ -55,7 +57,7 @@ describe MoteSMS::Message do
|
|
55
57
|
end
|
56
58
|
|
57
59
|
it 'can pass additional attributes to transport' do
|
58
|
-
expect(transport).to receive(:deliver).with(subject, serviceid: 'myapplication')
|
60
|
+
expect(transport).to receive(:deliver).with(subject, { serviceid: 'myapplication' })
|
59
61
|
subject.deliver_now serviceid: 'myapplication'
|
60
62
|
end
|
61
63
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'twilio-ruby'
|
5
|
+
require 'mote_sms/transports/twilio_transport'
|
6
|
+
require 'mote_sms/message'
|
7
|
+
|
8
|
+
describe MoteSMS::OBHTransport do
|
9
|
+
subject do
|
10
|
+
described_class.new(file_fixture('obh-fake.key'), file_fixture('cert_obh-fake.pem'), 'yourAPIKey', endpoint)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:endpoint) { 'https://test.api' }
|
14
|
+
|
15
|
+
let(:message) do
|
16
|
+
MoteSMS::Message.new do
|
17
|
+
to '+41790001122'
|
18
|
+
body 'Hello World'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context '#deliver' do
|
23
|
+
|
24
|
+
it 'send message' do
|
25
|
+
expect_any_instance_of(OBH::Client).to receive_message_chain(:send_sms).with(
|
26
|
+
{ to: '+41790001122',
|
27
|
+
body: 'Hello World' }
|
28
|
+
)
|
29
|
+
stub_request(:post, "https://test.api/sms").to_return(status: 200, body: '', headers: {})
|
30
|
+
expect(subject.deliver(message).normalized_numbers).to eq(['41790001122'])
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'send message with from number' do
|
34
|
+
message.from = '+41790002233'
|
35
|
+
subject.message_from = true
|
36
|
+
expect_any_instance_of(OBH::Client).to receive_message_chain(:send_sms).with(
|
37
|
+
{ from: '41790002233',
|
38
|
+
to: '+41790001122',
|
39
|
+
body: 'Hello World' }
|
40
|
+
)
|
41
|
+
stub_request(:post, "https://test.api/sms").to_return(status: 200, body: '', headers: {})
|
42
|
+
expect(subject.deliver(message).normalized_numbers).to eq(['41790001122'])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'twilio-ruby'
|
3
5
|
require 'mote_sms/transports/twilio_transport'
|
@@ -15,13 +17,6 @@ describe MoteSMS::TwilioTransport do
|
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
|
-
let(:message) do
|
19
|
-
MoteSMS::Message.new do
|
20
|
-
to '+41790001122'
|
21
|
-
body 'Hello World'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
20
|
context '#deliver' do
|
26
21
|
before do
|
27
22
|
allow_any_instance_of(Twilio::REST::Client).to receive_message_chain(:messages, :create) do |params|
|
data/spec/mote_sms_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler/setup'
|
3
5
|
|
4
6
|
require 'rspec'
|
5
7
|
require 'webmock/rspec'
|
6
8
|
require 'active_job'
|
9
|
+
require_relative 'support/file_fixture_support'
|
7
10
|
|
8
11
|
ActiveJob::Base.queue_adapter = :test
|
9
12
|
|
10
13
|
# Disable should syntax
|
11
14
|
RSpec.configure do |config|
|
15
|
+
config.add_setting :file_fixture_path, default: 'spec/fixtures'
|
16
|
+
config.include FileFixtureSupport
|
12
17
|
config.raise_errors_for_deprecations!
|
13
18
|
config.expect_with :rspec do |c|
|
14
19
|
c.syntax = :expect
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
module FileFixtureSupport
|
6
|
+
# Adds simple access to sample files called file fixtures.
|
7
|
+
#
|
8
|
+
# File fixtures are represented as +Pathname+ objects.
|
9
|
+
# This makes it easy to extract specific information:
|
10
|
+
#
|
11
|
+
# file_fixture("example.txt").read # get the file's content
|
12
|
+
# file_fixture("example.mp3").size # get the file size
|
13
|
+
|
14
|
+
def self.included(base)
|
15
|
+
base.extend(ClassMethods)
|
16
|
+
base.file_fixture_path = RSpec.configuration.file_fixture_path
|
17
|
+
end
|
18
|
+
|
19
|
+
module ClassMethods
|
20
|
+
def inherited(subclass)
|
21
|
+
super
|
22
|
+
subclass.file_fixture_path = RSpec.configuration.file_fixture_path
|
23
|
+
end
|
24
|
+
|
25
|
+
def file_fixture_path=(value)
|
26
|
+
@file_fixture_path = value
|
27
|
+
end
|
28
|
+
|
29
|
+
def file_fixture_path
|
30
|
+
@file_fixture_path
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_fixture_path
|
35
|
+
self.class.file_fixture_path
|
36
|
+
end
|
37
|
+
|
38
|
+
def file_fixture(fixture_name)
|
39
|
+
path = Pathname.new(File.join(file_fixture_path, fixture_name))
|
40
|
+
|
41
|
+
if path.exist?
|
42
|
+
path
|
43
|
+
else
|
44
|
+
msg = "the directory '%<dir_name>s' does not contain a file named '%<file_name>s'"
|
45
|
+
raise ArgumentError, format(msg, dir_name: file_fixture_path, file_name: fixture_name)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mote_sms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Westermann
|
8
8
|
- Loris Gavillet
|
9
|
-
|
9
|
+
- Simon Schmid
|
10
|
+
autorequire:
|
10
11
|
bindir: exe
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: phony
|
@@ -17,40 +18,28 @@ dependencies:
|
|
17
18
|
requirements:
|
18
19
|
- - ">="
|
19
20
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
21
|
-
- - "<"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: '3.0'
|
21
|
+
version: '2'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
25
|
requirements:
|
28
26
|
- - ">="
|
29
27
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
31
|
-
- - "<"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '3.0'
|
28
|
+
version: '2'
|
34
29
|
- !ruby/object:Gem::Dependency
|
35
30
|
name: activesupport
|
36
31
|
requirement: !ruby/object:Gem::Requirement
|
37
32
|
requirements:
|
38
33
|
- - ">="
|
39
34
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
- - "<"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '6'
|
35
|
+
version: '5'
|
44
36
|
type: :runtime
|
45
37
|
prerelease: false
|
46
38
|
version_requirements: !ruby/object:Gem::Requirement
|
47
39
|
requirements:
|
48
40
|
- - ">="
|
49
41
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
51
|
-
- - "<"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '6'
|
42
|
+
version: '5'
|
54
43
|
- !ruby/object:Gem::Dependency
|
55
44
|
name: rake
|
56
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,81 +74,76 @@ dependencies:
|
|
85
74
|
requirements:
|
86
75
|
- - "~>"
|
87
76
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
77
|
+
version: '3.14'
|
89
78
|
type: :development
|
90
79
|
prerelease: false
|
91
80
|
version_requirements: !ruby/object:Gem::Requirement
|
92
81
|
requirements:
|
93
82
|
- - "~>"
|
94
83
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
84
|
+
version: '3.14'
|
96
85
|
- !ruby/object:Gem::Dependency
|
97
86
|
name: actionmailer
|
98
87
|
requirement: !ruby/object:Gem::Requirement
|
99
88
|
requirements:
|
100
89
|
- - ">="
|
101
90
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
103
|
-
- - "<"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '6'
|
91
|
+
version: '6.1'
|
106
92
|
type: :development
|
107
93
|
prerelease: false
|
108
94
|
version_requirements: !ruby/object:Gem::Requirement
|
109
95
|
requirements:
|
110
96
|
- - ">="
|
111
97
|
- !ruby/object:Gem::Version
|
112
|
-
version: '
|
113
|
-
- - "<"
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
version: '6'
|
98
|
+
version: '6.1'
|
116
99
|
- !ruby/object:Gem::Dependency
|
117
100
|
name: activejob
|
118
101
|
requirement: !ruby/object:Gem::Requirement
|
119
102
|
requirements:
|
120
103
|
- - ">="
|
121
104
|
- !ruby/object:Gem::Version
|
122
|
-
version: '
|
123
|
-
- - "<"
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '6'
|
105
|
+
version: '6.1'
|
126
106
|
type: :development
|
127
107
|
prerelease: false
|
128
108
|
version_requirements: !ruby/object:Gem::Requirement
|
129
109
|
requirements:
|
130
110
|
- - ">="
|
131
111
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
133
|
-
- - "<"
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
version: '6'
|
112
|
+
version: '6.1'
|
136
113
|
- !ruby/object:Gem::Dependency
|
137
114
|
name: twilio-ruby
|
138
115
|
requirement: !ruby/object:Gem::Requirement
|
139
116
|
requirements:
|
140
|
-
- - "
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: 4.11.0
|
143
|
-
- - "<"
|
117
|
+
- - "~>"
|
144
118
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
119
|
+
version: '6'
|
146
120
|
type: :development
|
147
121
|
prerelease: false
|
148
122
|
version_requirements: !ruby/object:Gem::Requirement
|
149
123
|
requirements:
|
150
|
-
- - "
|
124
|
+
- - "~>"
|
151
125
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
153
|
-
|
126
|
+
version: '6'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: obh-client
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
154
132
|
- !ruby/object:Gem::Version
|
155
|
-
version: '
|
133
|
+
version: '0.3'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0.3'
|
156
141
|
description: |-
|
157
142
|
Unofficial ruby adapter for Swisscom and MobileTechnics Bulk SMS APIs.
|
158
143
|
Tries to mimick mail API, so users can switch e.g. ActionMailer
|
159
144
|
with this SMS provider.
|
160
145
|
email:
|
161
|
-
-
|
162
|
-
- loris@at-point.ch
|
146
|
+
- info@at-point.ch
|
163
147
|
executables: []
|
164
148
|
extensions: []
|
165
149
|
extra_rdoc_files: []
|
@@ -168,12 +152,14 @@ files:
|
|
168
152
|
- Gemfile
|
169
153
|
- README.md
|
170
154
|
- Rakefile
|
155
|
+
- bin/console.rb
|
171
156
|
- lib/mote_sms.rb
|
172
157
|
- lib/mote_sms/delivery_job.rb
|
173
158
|
- lib/mote_sms/message.rb
|
174
159
|
- lib/mote_sms/number.rb
|
175
160
|
- lib/mote_sms/number_list.rb
|
176
161
|
- lib/mote_sms/transports.rb
|
162
|
+
- lib/mote_sms/transports/OBH_transport.rb
|
177
163
|
- lib/mote_sms/transports/action_mailer_transport.rb
|
178
164
|
- lib/mote_sms/transports/http_client.rb
|
179
165
|
- lib/mote_sms/transports/mobile_technics_transport.rb
|
@@ -182,6 +168,7 @@ files:
|
|
182
168
|
- lib/mote_sms/transports/twilio_transport.rb
|
183
169
|
- lib/mote_sms/version.rb
|
184
170
|
- mote_sms.gemspec
|
171
|
+
- spec/fixtures/cert_obh-fake.pem
|
185
172
|
- spec/mote_sms/delivery_job_spec.rb
|
186
173
|
- spec/mote_sms/message_spec.rb
|
187
174
|
- spec/mote_sms/number_list_spec.rb
|
@@ -189,15 +176,17 @@ files:
|
|
189
176
|
- spec/mote_sms/transports/action_mailer_transport_spec.rb
|
190
177
|
- spec/mote_sms/transports/http_client_spec.rb
|
191
178
|
- spec/mote_sms/transports/mobile_technics_transport_spec.rb
|
179
|
+
- spec/mote_sms/transports/obh_transport_spec.rb
|
192
180
|
- spec/mote_sms/transports/swisscom_transport_spec.rb
|
193
181
|
- spec/mote_sms/transports/test_transport_spec.rb
|
194
182
|
- spec/mote_sms/transports/twilio_transport_spec.rb
|
195
183
|
- spec/mote_sms_spec.rb
|
196
184
|
- spec/spec_helper.rb
|
185
|
+
- spec/support/file_fixture_support.rb
|
197
186
|
homepage: https://github.com/at-point/mote_sms
|
198
187
|
licenses: []
|
199
188
|
metadata: {}
|
200
|
-
post_install_message:
|
189
|
+
post_install_message:
|
201
190
|
rdoc_options: []
|
202
191
|
require_paths:
|
203
192
|
- lib
|
@@ -205,19 +194,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
194
|
requirements:
|
206
195
|
- - ">="
|
207
196
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
197
|
+
version: '3.1'
|
209
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
199
|
requirements:
|
211
200
|
- - ">="
|
212
201
|
- !ruby/object:Gem::Version
|
213
202
|
version: '0'
|
214
203
|
requirements: []
|
215
|
-
|
216
|
-
|
217
|
-
signing_key:
|
204
|
+
rubygems_version: 3.3.26
|
205
|
+
signing_key:
|
218
206
|
specification_version: 4
|
219
207
|
summary: Deliver SMS using Swisscom / MobileTechnics REST API.
|
220
208
|
test_files:
|
209
|
+
- spec/fixtures/cert_obh-fake.pem
|
221
210
|
- spec/mote_sms/delivery_job_spec.rb
|
222
211
|
- spec/mote_sms/message_spec.rb
|
223
212
|
- spec/mote_sms/number_list_spec.rb
|
@@ -225,8 +214,10 @@ test_files:
|
|
225
214
|
- spec/mote_sms/transports/action_mailer_transport_spec.rb
|
226
215
|
- spec/mote_sms/transports/http_client_spec.rb
|
227
216
|
- spec/mote_sms/transports/mobile_technics_transport_spec.rb
|
217
|
+
- spec/mote_sms/transports/obh_transport_spec.rb
|
228
218
|
- spec/mote_sms/transports/swisscom_transport_spec.rb
|
229
219
|
- spec/mote_sms/transports/test_transport_spec.rb
|
230
220
|
- spec/mote_sms/transports/twilio_transport_spec.rb
|
231
221
|
- spec/mote_sms_spec.rb
|
232
222
|
- spec/spec_helper.rb
|
223
|
+
- spec/support/file_fixture_support.rb
|