messagebird-texter 0.0.2 → 0.1.0
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/Gemfile.lock +9 -1
- data/README.md +82 -18
- data/lib/messagebird_texter/gem_version.rb +2 -2
- data/lib/messagebird_texter/message.rb +3 -2
- data/lib/messagebird_texter/request.rb +0 -6
- data/lib/messagebird_texter/response/body.rb +17 -15
- data/messagebird-sms.gemspec +1 -0
- metadata +16 -4
- data/lib/messagebird_texter/validator/message.rb +0 -57
- data/lib/messagebird_texter/validator/request.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc07ab86ed3cb2975eac7d34b645179ed9ba5ee1
|
4
|
+
data.tar.gz: c17963495165769db57330e4d5fe667612aa304b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb0554ccb0a830bbbd1a0f9066b9cef9c58873336e8b6fb7fc5af36c9fd3d7d6772c10c8104e95f190cdbfa679931c189e1a364c1f614d6a8bf9f07071409c97
|
7
|
+
data.tar.gz: 5a127efb3cd3bb2d99e5c372308ff3e04126d97a52bf655fee288f9d999ed3410492d23a91df69a865ac0bf8937623698ed4c87be0bbd28047fb60d8c0557294
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
messagebird-texter (0.0
|
4
|
+
messagebird-texter (0.1.0)
|
5
5
|
action-texter
|
6
6
|
phony (~> 2.12)
|
7
7
|
|
@@ -12,6 +12,7 @@ GEM
|
|
12
12
|
json
|
13
13
|
phony (~> 2.12)
|
14
14
|
addressable (2.3.8)
|
15
|
+
coderay (1.1.0)
|
15
16
|
coveralls (0.8.5)
|
16
17
|
json (~> 1.8)
|
17
18
|
rest-client (>= 1.6.8, < 2)
|
@@ -28,9 +29,14 @@ GEM
|
|
28
29
|
http-cookie (1.0.2)
|
29
30
|
domain_name (~> 0.5)
|
30
31
|
json (1.8.3)
|
32
|
+
method_source (0.8.2)
|
31
33
|
mime-types (2.99)
|
32
34
|
netrc (0.11.0)
|
33
35
|
phony (2.15.10)
|
36
|
+
pry (0.10.3)
|
37
|
+
coderay (~> 1.1.0)
|
38
|
+
method_source (~> 0.8.1)
|
39
|
+
slop (~> 3.4)
|
34
40
|
rake (10.4.2)
|
35
41
|
rest-client (1.8.0)
|
36
42
|
http-cookie (>= 1.0.2, < 2.0)
|
@@ -55,6 +61,7 @@ GEM
|
|
55
61
|
json (~> 1.8)
|
56
62
|
simplecov-html (~> 0.10.0)
|
57
63
|
simplecov-html (0.10.0)
|
64
|
+
slop (3.6.0)
|
58
65
|
term-ansicolor (1.3.2)
|
59
66
|
tins (~> 1.0)
|
60
67
|
thor (0.19.1)
|
@@ -74,6 +81,7 @@ DEPENDENCIES
|
|
74
81
|
bundler (~> 1.10)
|
75
82
|
coveralls
|
76
83
|
messagebird-texter!
|
84
|
+
pry
|
77
85
|
rake (~> 10.0)
|
78
86
|
rspec (~> 3.0)
|
79
87
|
simplecov
|
data/README.md
CHANGED
@@ -1,31 +1,33 @@
|
|
1
1
|

|
2
2
|
|
3
3
|
|
4
|
-
messagebird-
|
4
|
+
messagebird-texter
|
5
5
|
=======
|
6
6
|
|
7
7
|
|
8
8
|
Description
|
9
9
|
-----------
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
Create ActionMailer-like notifiers to send messages via the Messagebird REST API
|
12
|
+
|
13
|
+
|
13
14
|
Usage
|
14
15
|
------------
|
15
16
|
|
16
|
-
###
|
17
|
+
### Configure the messenger
|
17
18
|
|
18
|
-
Use `MessagebirdTexter.configure` to set `product_token`, `endpoint` and `path
|
19
|
+
Use `MessagebirdTexter.configure` to set `product_token`, `endpoint` and `path`.
|
19
20
|
|
20
21
|
```ruby
|
21
22
|
MessagebirdTexter.configure do |config|
|
22
|
-
config.product_token = 'YOUR_MESSAGEBIRD_API_TOKEN'
|
23
|
-
config.endpoint = 'https://rest.messagebird.com'
|
24
|
-
config.path = '/messages'
|
23
|
+
config.product_token = 'YOUR_MESSAGEBIRD_API_TOKEN'
|
24
|
+
config.endpoint = 'https://rest.messagebird.com'
|
25
|
+
config.path = '/messages'
|
25
26
|
end
|
26
27
|
```
|
27
28
|
|
28
|
-
Create a class
|
29
|
+
### Create a messanger class
|
30
|
+
Create a class and inherit from `MessagebirdTexter::Messenger`.
|
29
31
|
|
30
32
|
```ruby
|
31
33
|
class TextMessageNotifier < MessagebirdTexter::Messenger
|
@@ -33,11 +35,10 @@ end
|
|
33
35
|
```
|
34
36
|
|
35
37
|
Now you can add your first welcome message.
|
36
|
-
This can be as simple as:
|
37
38
|
|
38
39
|
```ruby
|
39
40
|
class TextMessageNotifier < MessagebirdTexter::Messenger
|
40
|
-
default from: '
|
41
|
+
default from: 'Hitfox'
|
41
42
|
|
42
43
|
def welcome(recipient)
|
43
44
|
@recipient = recipient
|
@@ -64,18 +65,71 @@ end
|
|
64
65
|
|
65
66
|
In order to send your sms, you simply call the method and then call `deliver_now` on the return value.
|
66
67
|
|
67
|
-
Calling the method returns a MessagebirdTexter
|
68
|
+
Calling the method returns a `MessagebirdTexter::Message` object:
|
69
|
+
|
68
70
|
```ruby
|
69
71
|
message = TextMessageNotifier.welcome(User.first) # => Returns a MessagebirdTexter::Message object
|
70
|
-
message.deliver_now
|
72
|
+
response = message.deliver_now
|
73
|
+
```
|
74
|
+
|
75
|
+
### Response Example
|
76
|
+
Delivering a message returns a `MessagebirdTexter::Response` object.
|
77
|
+
|
78
|
+
####On success
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
=> response.body
|
82
|
+
=> <MessagebirdTexter::Response::Body:0x007faaca1cfe90
|
83
|
+
@content="Some text",
|
84
|
+
@created_datetime="2015-12-09T21:43:23+00:00",
|
85
|
+
@datacoding="plain",
|
86
|
+
@direction="mt",
|
87
|
+
@gateway=10,
|
88
|
+
@href="https://rest.messagebird.com/messages/bd9e796045668a07b0bca95b78482250",
|
89
|
+
@id="bd9e796045668a07b0bca95b78482250",
|
90
|
+
@mclass=1,
|
91
|
+
@originator="me",
|
92
|
+
@recipients=
|
93
|
+
{:totalCount=>1,
|
94
|
+
:totalSentCount=>1,
|
95
|
+
:totalDeliveredCount=>0,
|
96
|
+
:totalDeliveryFailedCount=>0,
|
97
|
+
:items=>
|
98
|
+
[{:recipient=>491759332902, :status=>"sent", :statusDatetime=>"2015-12-09T21:43:23+00:00"}]},
|
99
|
+
@reference=nil,
|
100
|
+
@scheduled_datetime=nil,
|
101
|
+
@type="sms",
|
102
|
+
@validity=nil>
|
103
|
+
|
104
|
+
=> response.body.recipients
|
105
|
+
=> <OpenStruct total_count=1,
|
106
|
+
total_sent_count=1,
|
107
|
+
total_delivered_count=0,
|
108
|
+
items=[
|
109
|
+
#<OpenStruct recipient=491759332902,
|
110
|
+
status="sent",
|
111
|
+
status_datetime=#<Date: 2015-12-09 ((2457366j,0s,0n),+0s,2299161j)>>]>
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
###On failure
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
=> response.error
|
119
|
+
=> <MessagebirdTexter::Response::Error:0x007fa3d0c39738
|
120
|
+
@errors=[{:code=>25, :description=>"Not enough balance", :parameter=>nil}]>
|
71
121
|
```
|
72
122
|
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
73
127
|
Installation
|
74
128
|
------------
|
75
129
|
|
76
|
-
If you
|
130
|
+
If you use bundler, then just add
|
77
131
|
```ruby
|
78
|
-
$ gem 'messagebird-
|
132
|
+
$ gem 'messagebird-texter'
|
79
133
|
```
|
80
134
|
to your Gemfile and execute
|
81
135
|
```
|
@@ -83,23 +137,33 @@ $ bundle install
|
|
83
137
|
```
|
84
138
|
or without bundler
|
85
139
|
```
|
86
|
-
$ gem install messagebird-
|
140
|
+
$ gem install messagebird-texter
|
87
141
|
```
|
88
142
|
|
89
143
|
Upgrade
|
90
144
|
-------
|
91
145
|
```
|
92
|
-
$ bundle update messagebird-
|
146
|
+
$ bundle update messagebird-texter
|
93
147
|
```
|
94
148
|
or without bundler
|
95
149
|
|
96
150
|
```
|
97
|
-
$ gem update messagebird-
|
151
|
+
$ gem update messagebird-texter
|
98
152
|
```
|
99
153
|
|
100
154
|
Changelog
|
101
155
|
---------
|
102
156
|
|
157
|
+
###0.0.1 (2015-12-09)
|
158
|
+
Intilial release
|
159
|
+
|
160
|
+
###0.0.2 (2015-12-10)
|
161
|
+
Minor fixes, readme update
|
162
|
+
|
163
|
+
###0.1.0 (2015-12-10)
|
164
|
+
- Completly remove validators, api handles errors
|
165
|
+
- readme update
|
166
|
+
|
103
167
|
## Contributing
|
104
168
|
|
105
169
|
Bug reports and pull requests are welcome on GitHub at https://github.com/HitFox/messagebird-sms. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'json'
|
2
|
-
require 'messagebird_texter/validator/message'
|
3
2
|
|
4
3
|
module MessagebirdTexter
|
5
4
|
class Message < ActionTexter::Message
|
@@ -11,10 +10,12 @@ module MessagebirdTexter
|
|
11
10
|
JSON.generate(recipients: to,
|
12
11
|
originator: from,
|
13
12
|
body: body)
|
13
|
+
|
14
|
+
|
14
15
|
end
|
15
16
|
|
16
17
|
def valid?
|
17
|
-
|
18
|
+
true
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'messagebird_texter/response'
|
2
|
-
require 'messagebird_texter/validator/request'
|
3
2
|
|
4
3
|
module MessagebirdTexter
|
5
4
|
class Request < ActionTexter::Request
|
@@ -15,16 +14,11 @@ module MessagebirdTexter
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def perform
|
18
|
-
return unless valid?
|
19
17
|
uri = URI.parse(@endpoint)
|
20
18
|
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
21
19
|
@response = Response.new(http.post(@path, body, 'Authorization' => "AccessKey #{@api_key}", 'Content-Type' => 'application/json'))
|
22
20
|
end
|
23
21
|
response
|
24
22
|
end
|
25
|
-
|
26
|
-
def valid?
|
27
|
-
MessagebirdTexter::Validator::Request.new
|
28
|
-
end
|
29
23
|
end
|
30
24
|
end
|
@@ -19,21 +19,21 @@ module MessagebirdTexter
|
|
19
19
|
:recipients
|
20
20
|
|
21
21
|
def initialize(body)
|
22
|
-
|
23
|
-
@id =
|
24
|
-
@href =
|
25
|
-
@direction =
|
26
|
-
@type =
|
27
|
-
@originator =
|
28
|
-
@content =
|
29
|
-
@reference =
|
30
|
-
@validity =
|
31
|
-
@gateway =
|
32
|
-
@datacoding =
|
33
|
-
@mclass =
|
34
|
-
@scheduled_datetime =
|
35
|
-
@created_datetime =
|
36
|
-
@recipients =
|
22
|
+
parsed_body = JSON.parse(body, symbolize_names: true)
|
23
|
+
@id = parsed_body[:id]
|
24
|
+
@href = parsed_body[:href]
|
25
|
+
@direction = parsed_body[:direction]
|
26
|
+
@type = parsed_body[:type]
|
27
|
+
@originator = parsed_body[:originator]
|
28
|
+
@content = parsed_body[:body]
|
29
|
+
@reference = parsed_body[:reference]
|
30
|
+
@validity = parsed_body[:validity]
|
31
|
+
@gateway = parsed_body[:gateway]
|
32
|
+
@datacoding = parsed_body[:datacoding]
|
33
|
+
@mclass = parsed_body[:mclass]
|
34
|
+
@scheduled_datetime = parsed_body[:scheduledDatetime]
|
35
|
+
@created_datetime = parsed_body[:createdDatetime]
|
36
|
+
@recipients = parsed_body[:recipients]
|
37
37
|
end
|
38
38
|
|
39
39
|
def scheduled_datetime
|
@@ -54,6 +54,8 @@ module MessagebirdTexter
|
|
54
54
|
) unless @recipients.nil?
|
55
55
|
end
|
56
56
|
|
57
|
+
private
|
58
|
+
|
57
59
|
def items
|
58
60
|
@recipients[:items].map do |i|
|
59
61
|
OpenStruct.new(item(i))
|
data/messagebird-sms.gemspec
CHANGED
@@ -23,6 +23,7 @@ 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
29
|
spec.add_runtime_dependency 'phony', '~> 2.12'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: messagebird-texter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: phony
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,8 +136,6 @@ files:
|
|
122
136
|
- lib/messagebird_texter/response.rb
|
123
137
|
- lib/messagebird_texter/response/body.rb
|
124
138
|
- lib/messagebird_texter/response/error.rb
|
125
|
-
- lib/messagebird_texter/validator/message.rb
|
126
|
-
- lib/messagebird_texter/validator/request.rb
|
127
139
|
- lib/messagebird_texter/version.rb
|
128
140
|
- messagebird-sms.gemspec
|
129
141
|
homepage: https://github.com/HitFox/messagebird-sms
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'phony'
|
2
|
-
module MessagebirdTexter
|
3
|
-
module Validator
|
4
|
-
class Message
|
5
|
-
class FromTooLong < ArgumentError; end
|
6
|
-
class FromMissing < ArgumentError; end
|
7
|
-
class ToMissing < ArgumentError; end
|
8
|
-
class BodyMissing < ArgumentError; end
|
9
|
-
class BodyTooLong < ArgumentError; end
|
10
|
-
class ToUnplausible < ArgumentError; end
|
11
|
-
|
12
|
-
attr_reader :message
|
13
|
-
|
14
|
-
def initialize(message)
|
15
|
-
@message = message
|
16
|
-
validate
|
17
|
-
end
|
18
|
-
|
19
|
-
def validate
|
20
|
-
fail FromMissing, 'The value for the from attribute is missing.' unless sender_present?
|
21
|
-
fail FromTooLong, 'The value for the sender attribute must contain 1..11 characters.' unless sender_length?
|
22
|
-
fail ToMissing, 'The value for the to attribute is missing.' unless receiver_present?
|
23
|
-
fail BodyMissing, 'The body of the message is missing.' unless body_present?
|
24
|
-
fail BodyTooLong, 'The body of the message has a length greater than 160.' unless body_correct_length?
|
25
|
-
fail ToUnplausible, "The given value for the to attribute is not a plausible phone number.\nMaybe the country code is missing." unless receiver_plausible?
|
26
|
-
end
|
27
|
-
|
28
|
-
def receiver_plausible?
|
29
|
-
receiver_present? && Phony.plausible?(message.to)
|
30
|
-
end
|
31
|
-
|
32
|
-
def receiver_present?
|
33
|
-
!message.to.nil? && !message.to.empty?
|
34
|
-
end
|
35
|
-
|
36
|
-
def sender_present?
|
37
|
-
!message.from.nil? && !message.from.empty?
|
38
|
-
end
|
39
|
-
|
40
|
-
def sender_length?
|
41
|
-
sender_present? && message.from.length <= 11
|
42
|
-
end
|
43
|
-
|
44
|
-
def body_present?
|
45
|
-
!message.body.nil? && !message.body.empty?
|
46
|
-
end
|
47
|
-
|
48
|
-
def body_correct_length?
|
49
|
-
body_present? && message.body.length <= 160
|
50
|
-
end
|
51
|
-
|
52
|
-
def product_token_present?
|
53
|
-
!MessagebirdTexter.config.product_token.nil? && !MessagebirdTexter.config.product_token.empty?
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module MessagebirdTexter
|
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 = MessagebirdTexter.config.endpoint
|
11
|
-
@path = MessagebirdTexter.config.path
|
12
|
-
@content_type = MessagebirdTexter.config.content_type
|
13
|
-
@api_key = MessagebirdTexter.config.product_token
|
14
|
-
validate
|
15
|
-
end
|
16
|
-
|
17
|
-
def validate
|
18
|
-
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?
|
19
|
-
fail ContentTypeMissing, 'Please provide a valid content_type! Defaults to application/json' if @content_type.nil? || @content_type.empty?
|
20
|
-
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?
|
21
|
-
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?
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|