action-texter 0.0.1 → 0.1.2.ALPHA

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f8dfd865343beb264241472cba4b659104168417
4
- data.tar.gz: 3e21b57d2ada99c9d2036c21064e4018ebf1fd34
3
+ metadata.gz: 45e843e360fc7a106fd3dfe21bb8610a2c5ed871
4
+ data.tar.gz: d28db3155f8faceb11f91c8b9495400adf2785e7
5
5
  SHA512:
6
- metadata.gz: 4ea82f29f05c3d950e1c84152cab0488f3608946bfb4f7ef3f766865d2dfb9a4b7d67189ece689c15d441c9c7dce0cb05e349926dfa2dbe2804dc0956ed73b70
7
- data.tar.gz: 9483e2ffd969de4c3316fc7b7526778a8f3eb2c74cc64e624df1f3bf70732ec29ef5149d2c2a39bc40f03631cbb888480f15f42fb257b39fa64f338f05870f79
6
+ metadata.gz: e00fde1bd22e3d68d28701faae5eeb4e46b330114a9cb66340c2141b23d2588e35eb9351831de9dc0689ea0e12b0d900e95473b8417888a471d44753017fa302
7
+ data.tar.gz: 2924abaedaba3c1020e41b0c819494d0404765238564c024fc0e4eb1951dba018d5239aa6851fa9caa907fd984a4da870925f70494b8fc82c2e84260d702c808
data/.gitignore CHANGED
@@ -33,3 +33,4 @@ build/
33
33
 
34
34
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
35
  .rvmrc
36
+ example.rb
data/Gemfile CHANGED
@@ -6,3 +6,4 @@ gemspec
6
6
  gem 'tins', '1.5.4', require: false, group: :test
7
7
  gem 'simplecov', require: false, group: :test
8
8
  gem 'coveralls', require: false, group: :test
9
+ gem 'pry'
data/Gemfile.lock CHANGED
@@ -1,14 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- action-texter (0.0.1)
4
+ action-texter (0.1.2.ALPHA)
5
+ class_attribute (~> 0.1)
6
+ facets (~> 3.0)
5
7
  json
6
- phony (~> 2.12)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
12
  addressable (2.3.8)
13
+ class_attribute (0.1.3)
14
+ coderay (1.1.0)
12
15
  coveralls (0.8.5)
13
16
  json (~> 1.8)
14
17
  rest-client (>= 1.6.8, < 2)
@@ -21,13 +24,18 @@ GEM
21
24
  docile (1.1.5)
22
25
  domain_name (0.5.25)
23
26
  unf (>= 0.0.5, < 1.0.0)
27
+ facets (3.0.0)
24
28
  hashdiff (0.2.3)
25
29
  http-cookie (1.0.2)
26
30
  domain_name (~> 0.5)
27
31
  json (1.8.3)
32
+ method_source (0.8.2)
28
33
  mime-types (2.99)
29
34
  netrc (0.11.0)
30
- phony (2.15.9)
35
+ pry (0.10.3)
36
+ coderay (~> 1.1.0)
37
+ method_source (~> 0.8.1)
38
+ slop (~> 3.4)
31
39
  rake (10.4.2)
32
40
  rest-client (1.8.0)
33
41
  http-cookie (>= 1.0.2, < 2.0)
@@ -52,6 +60,7 @@ GEM
52
60
  json (~> 1.8)
53
61
  simplecov-html (~> 0.10.0)
54
62
  simplecov-html (0.10.0)
63
+ slop (3.6.0)
55
64
  term-ansicolor (1.3.2)
56
65
  tins (~> 1.0)
57
66
  thor (0.19.1)
@@ -71,6 +80,7 @@ DEPENDENCIES
71
80
  action-texter!
72
81
  bundler (~> 1.10)
73
82
  coveralls
83
+ pry
74
84
  rake (~> 10.0)
75
85
  rspec (~> 3.0)
76
86
  simplecov
@@ -23,12 +23,15 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'rake', '~> 10.0'
24
24
  spec.add_development_dependency 'rspec', '~> 3.0'
25
25
  spec.add_development_dependency 'webmock', '~> 1.0'
26
+ spec.add_development_dependency 'pry'
26
27
 
27
28
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
28
- spec.add_runtime_dependency 'phony', '~> 2.12'
29
+
29
30
  spec.add_runtime_dependency 'json'
31
+ spec.add_runtime_dependency 'facets', '~> 3.0'
32
+ spec.add_runtime_dependency 'class_attribute', '~> 0.1'
30
33
  else
31
- spec.add_dependency 'phony', '~> 2.15'
34
+ spec.add_runtime_dependency 'facets', '~> 3.0'
32
35
  spec.add_dependency 'json'
33
36
  end
34
37
  end
data/lib/action_texter.rb CHANGED
@@ -1,13 +1,29 @@
1
1
  require 'action_texter/configuration'
2
-
2
+ require 'pry'
3
3
  module ActionTexter
4
+
4
5
  autoload :Messenger, 'action_texter/messenger'
5
6
  autoload :Message, 'action_texter/message'
6
7
  autoload :Request, 'action_texter/request'
7
8
  autoload :Helper, 'action_texter/helper'
8
9
  autoload :MessageDelivery, 'action_texter/message_delivery'
10
+ autoload :DeliveryMethods, 'action_texter/delivery_methods'
11
+
12
+ module Provider
13
+ module Messagebird
14
+ autoload :Delivery, 'action_texter/provider/messagebird/delivery'
15
+ autoload :Response, 'action_texter/provider/messagebird/response'
16
+ autoload :ErrorResponse, 'action_texter/provider/messagebird/response_error'
17
+ autoload :SuccessMessagebird, 'action_texter/provider/messagebird/response_success'
18
+ end
19
+
20
+ module TestMessage
21
+ autoload :Delivery, 'action_texter/provider/test_message/delivery'
22
+ end
23
+ end
9
24
 
10
25
  class << self
26
+
11
27
  def configure
12
28
  yield(configuration)
13
29
  end
@@ -17,5 +33,6 @@ module ActionTexter
17
33
  end
18
34
 
19
35
  alias_method :config, :configuration
36
+
20
37
  end
21
38
  end
@@ -1,6 +1,6 @@
1
1
  module ActionTexter
2
2
  class Configuration
3
- attr_accessor :from, :to, :endpoint, :path, :product_token, :content_type
3
+ attr_accessor :from, :to, :endpoint, :path, :product_token, :content_type, :delivery_method
4
4
 
5
5
  alias_method :api_key=, :product_token=
6
6
 
@@ -12,6 +12,7 @@ module ActionTexter
12
12
  @endpoint = 'https://rest.sms-service.com'
13
13
  @path = '/messages'
14
14
  @content_type = 'application/json'
15
+ @delivery_method = :test
15
16
  end
16
17
  end
17
18
  end
@@ -0,0 +1,80 @@
1
+ require 'forwardable'
2
+ require 'facets/module/cattr'
3
+ require 'class_attribute'
4
+
5
+ module ActionTexter
6
+ # This module handles everything related to mail delivery, from registering new
7
+ # delivery methods to configuring the mail object to be sent.
8
+ module DeliveryMethods
9
+ def self.included(base)
10
+ base.extend ClassMethods
11
+ base.include ClassAttribute
12
+ base.class_eval do
13
+ # Do not make this inheritable, because we always want it to propagate
14
+ cattr_accessor :raise_delivery_errors
15
+ self.raise_delivery_errors = true
16
+
17
+ cattr_accessor :perform_deliveries
18
+ self.perform_deliveries = true
19
+
20
+ self.delivery_methods = {}.freeze
21
+
22
+ # add_delivery_method :file, ActionTexter::FileDelivery,
23
+ #:location => defined?(Rails.root) ? "#{Rails.root}/tmp/texts" : "#{Dir.tmpdir}/texts"
24
+ add_delivery_method :test, ActionTexter::Provider::TestMessage::Delivery
25
+ add_delivery_method :messagebird, ActionTexter::Provider::Messagebird::Delivery, { endpoint: 'https://rest.messagebird.com', path: '/messages' }
26
+ # add_delivery_method :twilio, ActionTexter::TwilioDelivery
27
+ # add_delivery_method :whitelist_proxy, ActionTexter::WhitelistProxyDelivery
28
+ end
29
+ end
30
+
31
+ module ClassMethods
32
+ extend Forwardable
33
+ cattr_accessor :delivery_methods, :delivery_method
34
+ # attr_accessor
35
+ # Provides a list of SMS messages that have been delivered by ActionTexter::TestDelivery
36
+ delegate deliveries: ActionTexter::Provider::TestMessage::Delivery
37
+ delegate :deliveries= => ActionTexter::Provider::TestMessage::Delivery
38
+
39
+ # Adds a new delivery method through the given class using the given symbol
40
+ # as alias and the default options supplied:
41
+ #
42
+ # Example:
43
+ #
44
+ # add_delivery_method :sendmail, Mail::Sendmail,
45
+ # :location => '/usr/sbin/sendmail',
46
+ # :arguments => '-i -t'
47
+ #
48
+ def add_delivery_method(symbol, klass, default_options = {})
49
+ class_attribute(:"#{symbol}_settings") unless respond_to?(:"#{symbol}_settings")
50
+ send(:"#{symbol}_settings=", default_options)
51
+ self.delivery_methods = delivery_methods.merge(symbol.to_sym => klass).freeze
52
+ end
53
+
54
+ def wrap_delivery_behavior(message, method = nil) #:nodoc:
55
+ method ||= delivery_method
56
+ message.delivery_handler = self
57
+
58
+ case method
59
+ when NilClass
60
+ fail 'Delivery method cannot be nil'
61
+ when Symbol
62
+ if klass = delivery_methods[method.to_sym]
63
+ message.delivery_method(klass, send(:"#{method}_settings"))
64
+ else
65
+ fail "Invalid delivery method #{method.inspect}"
66
+ end
67
+ else
68
+ message.delivery_method(method)
69
+ end
70
+
71
+ message.perform_deliveries = perform_deliveries
72
+ message.raise_delivery_errors = raise_delivery_errors
73
+ end
74
+ end
75
+
76
+ def wrap_delivery_behavior!(*args) #:nodoc:
77
+ self.class.wrap_delivery_behavior(*args)
78
+ end
79
+ end
80
+ end
@@ -6,9 +6,9 @@ module ActionTexter
6
6
 
7
7
  module VERSION
8
8
  MAJOR = 0
9
- MINOR = 0
10
- TINY = 1
11
- PRE = nil
9
+ MINOR = 1
10
+ TINY = 2
11
+ PRE = 'ALPHA'
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
14
14
  end
@@ -1,38 +1,33 @@
1
- require 'phony'
2
- require 'action_texter/request'
3
- require 'action_texter/validator/message'
4
1
 
5
2
  module ActionTexter
6
3
  class Message
7
- attr_accessor :from, :to, :body, :reference
4
+ include DeliveryMethods
5
+ attr_accessor :from, :to, :body, :reference, :delivery_handler
6
+ attr_reader :delivery_method, :delivery_options
8
7
 
9
8
  def initialize(attributes = {})
10
9
  @from = attributes[:from]
11
10
  @to = attributes[:to]
12
11
  @body = attributes[:body]
13
12
  @reference = attributes[:reference]
14
- end
15
-
16
- def request
17
- Request.new(to_json)
13
+ wrap_delivery_behavior!(self, ActionTexter.config.delivery_method)
18
14
  end
19
15
 
20
16
  def deliver
21
- request.perform if valid?
17
+ @delivery_method.deliver(self)
18
+ # request.perform if valid?
22
19
  end
23
20
 
24
21
  def deliver!
25
- deliver if valid?
26
- end
27
-
28
- def valid?
29
- ActionTexter::Validator::Message.new self
22
+ deliver
30
23
  end
31
24
 
32
- def to_json
33
- JSON.generate(recipients: to,
34
- originator: from,
35
- body: body)
25
+ def delivery_method(method = nil, opts = {})
26
+ unless method
27
+ @delivery_method
28
+ else
29
+ @delivery_method = method.new(opts)
30
+ end
36
31
  end
37
32
  end
38
33
  end
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+ module ActionTexter
3
+ module Provider
4
+ module Messagebird
5
+ class Delivery
6
+ attr_accessor :body
7
+ attr_reader :response
8
+
9
+ def initialize(settings)
10
+ @endpoint = settings[:endpoint]
11
+ @path = settings[:path]
12
+ end
13
+
14
+ def deliver message
15
+ binding.pry
16
+ uri = URI.parse( @endpoint )
17
+ Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
18
+ @response = Response.new(http.post(@path, to_json(message), 'Authorization' => "AccessKey #{ActionTexter.config.product_token}", 'Content-Type' => 'application/json'))
19
+ end
20
+ response
21
+ end
22
+
23
+ def to_json message
24
+ JSON.generate(recipients: message.to,
25
+ originator: message.from,
26
+ body: message.body)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ module ActionTexter
2
+ module Provider
3
+ module Messagebird
4
+
5
+ class Response
6
+ attr_reader :net_http_response, :body, :code
7
+
8
+ def initialize(net_http_response)
9
+ @net_http_response = net_http_response
10
+ @body = @net_http_response.body
11
+ @code = @net_http_response.code
12
+ end
13
+
14
+ def success?
15
+ code.to_i == 201
16
+ end
17
+
18
+ def failure?
19
+ !success?
20
+ end
21
+
22
+ def body
23
+ if success?
24
+ SuccessResponse.new(@body)
25
+ else
26
+ ErrorResponse.new(@body)
27
+ end
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ module ActionTexter
3
+ module Provider
4
+ module Messagebird
5
+ class ErrorResponse
6
+
7
+ attr_reader :code, :description
8
+
9
+ ERROR_CODES = {
10
+ 2 => 'Request not allowed',
11
+ 9 => 'Missing params',
12
+ 10 => 'Invalid params',
13
+ 20 => 'Not found',
14
+ 25 => 'Not enough balance',
15
+ 98 => 'API not found',
16
+ 99 => 'Internal error'
17
+ }
18
+
19
+ def initialize(error)
20
+ @errors = JSON.parse(error, symbolize_names: true)[:errors]
21
+ end
22
+
23
+ def errors
24
+ @errors.map { |e| e.merge(error_message: ERROR_CODES[e[:code]]) }
25
+ end
26
+
27
+ def count
28
+ @errors.count
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,75 @@
1
+ # rubocop:disable Metrics/AbcSize
2
+ # rubocop:disable MethodLength
3
+ require 'json'
4
+ module MessagebirdTexter
5
+ class Response
6
+ class Body
7
+ attr_reader :id,
8
+ :href,
9
+ :direction,
10
+ :type,
11
+ :originator,
12
+ :content,
13
+ :reference,
14
+ :validity,
15
+ :gateway,
16
+ :datacoding,
17
+ :mclass,
18
+ :scheduled_datetime,
19
+ :created_datetime,
20
+ :recipients
21
+
22
+ def initialize(body)
23
+ parsed_body = JSON.parse(body, symbolize_names: true)
24
+ @id = parsed_body[:id]
25
+ @href = parsed_body[:href]
26
+ @direction = parsed_body[:direction]
27
+ @type = parsed_body[:type]
28
+ @originator = parsed_body[:originator]
29
+ @content = parsed_body[:body]
30
+ @reference = parsed_body[:reference]
31
+ @validity = parsed_body[:validity]
32
+ @gateway = parsed_body[:gateway]
33
+ @datacoding = parsed_body[:datacoding]
34
+ @mclass = parsed_body[:mclass]
35
+ @scheduled_datetime = parsed_body[:scheduledDatetime]
36
+ @created_datetime = parsed_body[:createdDatetime]
37
+ @recipients = parsed_body[:recipients]
38
+ end
39
+
40
+ def scheduled_datetime
41
+ Date.parse(@scheduled_datetime) unless @scheduled_datetime.nil?
42
+ end
43
+
44
+ def created_datetime
45
+ Date.parse(@created_datetime) unless @created_datetime.nil?
46
+ end
47
+
48
+ def recipients
49
+ OpenStruct.new(
50
+ total_count: @recipients[:totalCount],
51
+ total_sent_count: @recipients[:totalSentCount],
52
+ total_delivered_count: @recipients[:totalDeliveredCount],
53
+ items: items
54
+
55
+ ) unless @recipients.nil?
56
+ end
57
+
58
+ private
59
+
60
+ def items
61
+ @recipients[:items].map do |i|
62
+ OpenStruct.new(item(i))
63
+ end
64
+ end
65
+
66
+ def item(item)
67
+ {
68
+ recipient: item[:recipient],
69
+ status: item[:status],
70
+ status_datetime: Date.parse(item[:statusDatetime])
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,24 @@
1
+ require 'class_attribute'
2
+ module ActionTexter
3
+ module Provider
4
+ module TestMessage
5
+ class Delivery
6
+ include ClassAttribute
7
+ cattr_accessor :deliveries
8
+ self.deliveries = []
9
+
10
+ def initialize(config = {})
11
+ end
12
+
13
+ def deliver(message)
14
+ self.class.deliveries << message
15
+ deliveries
16
+ end
17
+
18
+ def truncate
19
+ self.class.deliveries = []
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action-texter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.2.ALPHA
5
5
  platform: ruby
6
6
  authors:
7
7
  - oliverzeyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-09 00:00:00.000000000 Z
11
+ date: 2015-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,19 +67,19 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: phony
70
+ name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '2.12'
76
- type: :runtime
75
+ version: '0'
76
+ type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '2.12'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: json
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,34 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: facets
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: class_attribute
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.1'
97
125
  description: Send text messages by means of the HTTP protocol via a HTTP driven sms
98
126
  provider
99
127
  email:
@@ -117,15 +145,19 @@ files:
117
145
  - bin/setup
118
146
  - lib/action_texter.rb
119
147
  - lib/action_texter/configuration.rb
148
+ - lib/action_texter/delivery_methods.rb
120
149
  - lib/action_texter/gem_version.rb
121
150
  - lib/action_texter/helper.rb
122
151
  - lib/action_texter/message.rb
123
152
  - lib/action_texter/message_delivery.rb
124
153
  - lib/action_texter/messenger.rb
154
+ - lib/action_texter/provider/messagebird/delivery.rb
155
+ - lib/action_texter/provider/messagebird/response.rb
156
+ - lib/action_texter/provider/messagebird/response_error.rb
157
+ - lib/action_texter/provider/messagebird/response_success.rb
158
+ - lib/action_texter/provider/test_message/delivery.rb
125
159
  - lib/action_texter/request.rb
126
160
  - lib/action_texter/response.rb
127
- - lib/action_texter/validator/message.rb
128
- - lib/action_texter/validator/request.rb
129
161
  - lib/action_texter/version.rb
130
162
  homepage: https://github.com/HitFox/action-texter
131
163
  licenses:
@@ -142,9 +174,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
174
  version: '0'
143
175
  required_rubygems_version: !ruby/object:Gem::Requirement
144
176
  requirements:
145
- - - ">="
177
+ - - ">"
146
178
  - !ruby/object:Gem::Version
147
- version: '0'
179
+ version: 1.3.1
148
180
  requirements: []
149
181
  rubyforge_project:
150
182
  rubygems_version: 2.4.8
@@ -1,53 +0,0 @@
1
- module ActionTexter
2
- module Validator
3
- class Message
4
- class FromTooLong < ArgumentError; end
5
- class FromMissing < ArgumentError; end
6
- class ToMissing < ArgumentError; end
7
- class BodyMissing < ArgumentError; end
8
- class BodyTooLong < ArgumentError; end
9
- class ToUnplausible < ArgumentError; end
10
-
11
- attr_reader :message
12
-
13
- def initialize(message)
14
- @message = message
15
-
16
- fail FromMissing, 'The value for the from attribute is missing.' unless sender_present?
17
- fail FromTooLong, 'The value for the sender attribute must contain 1..11 characters.' unless sender_length?
18
- fail ToMissing, 'The value for the to attribute is missing.' unless receiver_present?
19
- fail BodyMissing, 'The body of the message is missing.' unless body_present?
20
- fail BodyTooLong, 'The body of the message has a length greater than 160.' unless body_correct_length?
21
- fail ToUnplausible, "The given value for the to attribute is not a plausible phone number.\nMaybe the country code is missing." unless receiver_plausible?
22
- end
23
-
24
- def receiver_plausible?
25
- receiver_present? && Phony.plausible?(message.to)
26
- end
27
-
28
- def receiver_present?
29
- !message.to.nil? && !message.to.empty?
30
- end
31
-
32
- def sender_present?
33
- !message.from.nil? && !message.from.empty?
34
- end
35
-
36
- def sender_length?
37
- sender_present? && message.from.length <= 11
38
- end
39
-
40
- def body_present?
41
- !message.body.nil? && !message.body.empty?
42
- end
43
-
44
- def body_correct_length?
45
- body_present? && message.body.length <= 160
46
- end
47
-
48
- def product_token_present?
49
- !ActionTexter.config.product_token.nil? && !ActionTexter.config.product_token.empty?
50
- end
51
- end
52
- end
53
- end
@@ -1,26 +0,0 @@
1
- module ActionTexter
2
- module Validator
3
- class Request
4
- class ProductTokenMissing < ArgumentError; end
5
- class EndpointMissing < ArgumentError; end
6
- class PathMissing < ArgumentError; end
7
- class ContentTypeMissing < ArgumentError; end
8
-
9
- def initialize
10
- @endpoint = ActionTexter.config.endpoint
11
- @path = ActionTexter.config.path
12
- @content_type = ActionTexter.config.content_type
13
- @api_key = ActionTexter.config.product_token
14
-
15
- validate
16
- end
17
-
18
- def validate
19
- fail EndpointMissing, "Please provide an valid api endpoint.\nIf you leave this config blank, the default will be set to https://rest.sms-service.org ." if @endpoint.nil? || @endpoint.empty?
20
- fail ContentTypeMissing, 'Please provide a valid content_type! Defaults to application/json' if @content_type.nil? || @content_type.empty?
21
- fail PathMissing, "Please provide an valid api path.\nIf you leave this config blank, the default will be set to /message." if @path.nil? || @path.empty?
22
- fail ProductTokenMissing, "Please provide an valid product key.\nAfter signup at https://www.messagebird.com/, you will find one in your settings." if @api_key.nil?
23
- end
24
- end
25
- end
26
- end