action-texter 0.0.1 → 0.1.2.ALPHA

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 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