elk 0.0.10 → 0.0.11
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/lib/elk/sms.rb +20 -5
- data/lib/elk/version.rb +1 -1
- data/spec/elk_spec.rb +38 -0
- data/spec/fixtures/sends_a_sms_to_multiple_recipients.txt +8 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cec2cf51647b89d4639431b5e6cad98a4eb1c3ac
|
4
|
+
data.tar.gz: 311eb1055230e2545f94fa5e194ff99d6815fdaf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e34f77bae51ddfefbb3750df28fa56fe89910a081a6ff872775d2a928dccabca2be5b44ec0ae28e27b5014496825303ace5eb1b9ffe48bdd95a1913f08c925b1
|
7
|
+
data.tar.gz: 93c31cf0651316835a997c01ccb688e7b5c1ee6f5321a9ffeeecbfa51ea4758498632e4a1491a921d375db74884f84f74730b7466d8acc78c88de1537c32f847
|
data/lib/elk/sms.rb
CHANGED
@@ -13,7 +13,7 @@ module Elk
|
|
13
13
|
@to = parameters[:to]
|
14
14
|
@message = parameters[:message]
|
15
15
|
@message_id = parameters[:id]
|
16
|
-
@created_at = Time.parse(parameters[:created])
|
16
|
+
@created_at = Time.parse(parameters[:created]) if parameters[:created]
|
17
17
|
@loaded_at = Time.now
|
18
18
|
@direction = parameters[:direction]
|
19
19
|
@status = parameters[:status]
|
@@ -38,21 +38,36 @@ module Elk
|
|
38
38
|
def send(parameters)
|
39
39
|
verify_parameters(parameters, [:from, :message, :to])
|
40
40
|
|
41
|
+
parameters[:to] = Array(parameters[:to]).join(',')
|
42
|
+
|
41
43
|
# Warn if the from string will be capped by the sms gateway
|
42
44
|
if parameters[:from] && parameters[:from].match(/^(\w{11,})$/)
|
43
45
|
warn "SMS 'from' value #{parameters[:from]} will be capped at 11 chars"
|
44
46
|
end
|
45
47
|
|
46
48
|
response = Elk.post('/SMS', parameters)
|
47
|
-
|
49
|
+
parsed_response = Elk.parse_json(response.body)
|
50
|
+
|
51
|
+
if multiple_recipients?(parameters[:to])
|
52
|
+
instantiate_multiple(parsed_response)
|
53
|
+
else
|
54
|
+
self.new(parsed_response)
|
55
|
+
end
|
48
56
|
end
|
49
57
|
|
50
58
|
# Get outgoing and incomming messages. Limited by the API to 100 latest
|
51
59
|
def all
|
52
60
|
response = Elk.get('/SMS')
|
53
|
-
Elk.parse_json(response.body)[:data]
|
54
|
-
|
55
|
-
|
61
|
+
instantiate_multiple(Elk.parse_json(response.body)[:data])
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
def instantiate_multiple(multiple)
|
66
|
+
multiple.collect { |n| self.new(n) }
|
67
|
+
end
|
68
|
+
|
69
|
+
def multiple_recipients?(to)
|
70
|
+
to.split(',').length > 1
|
56
71
|
end
|
57
72
|
end
|
58
73
|
end
|
data/lib/elk/version.rb
CHANGED
data/spec/elk_spec.rb
CHANGED
@@ -192,6 +192,44 @@ describe Elk do
|
|
192
192
|
sms.status.should == 'delivered'
|
193
193
|
end
|
194
194
|
|
195
|
+
|
196
|
+
context 'when sending a SMS to multiple recipients' do
|
197
|
+
before do
|
198
|
+
stub_request(:post, "https://USERNAME:PASSWORD@api.46elks.com/a1/SMS").
|
199
|
+
with(:body => {"from" => "+46761042247", :message => "Your order #171 has now been sent!", :to => "+46704508449,+46704508449"},
|
200
|
+
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/x-www-form-urlencoded'}).
|
201
|
+
to_return(fixture('sends_a_sms_to_multiple_recipients.txt'))
|
202
|
+
|
203
|
+
configure_elk
|
204
|
+
end
|
205
|
+
|
206
|
+
it "sends the SMS when passing `to` as comma separated string" do
|
207
|
+
smses = Elk::SMS.send(:from => '+46761042247',
|
208
|
+
:to => '+46704508449,+46704508449',
|
209
|
+
:message => 'Your order #171 has now been sent!')
|
210
|
+
|
211
|
+
smses.size.should == 2
|
212
|
+
smses[0].class.should == Elk::SMS
|
213
|
+
smses[0].to.should == "+46704508449"
|
214
|
+
|
215
|
+
smses[0].message_id.should == "sb326c7a214f9f4abc90a11bd36d6abc3"
|
216
|
+
smses[1].message_id.should == "s47a89d6cc51d8db395d45ae7e16e86b7"
|
217
|
+
end
|
218
|
+
|
219
|
+
it "sends the SMS when passing `to` as array" do
|
220
|
+
smses = Elk::SMS.send(:from => '+46761042247',
|
221
|
+
:to => ['+46704508449', '+46704508449'],
|
222
|
+
:message => 'Your order #171 has now been sent!')
|
223
|
+
|
224
|
+
smses.size.should == 2
|
225
|
+
smses[0].class.should == Elk::SMS
|
226
|
+
smses[0].to.should == "+46704508449"
|
227
|
+
|
228
|
+
smses[0].message_id.should == "sb326c7a214f9f4abc90a11bd36d6abc3"
|
229
|
+
smses[1].message_id.should == "s47a89d6cc51d8db395d45ae7e16e86b7"
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
195
233
|
it 'gets SMS-history' do
|
196
234
|
stub_request(:get, "https://USERNAME:PASSWORD@api.46elks.com/a1/SMS").
|
197
235
|
with(:headers => {'Accept'=>'application/json'}).
|
@@ -0,0 +1,8 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/0.7.67
|
3
|
+
Date: Tue, 05 Jul 2011 15:32:45 GMT
|
4
|
+
Content-Type: application/json
|
5
|
+
Connection: keep-alive
|
6
|
+
Content-Length: 135
|
7
|
+
|
8
|
+
[{"to": "+46704508449", "id": "sb326c7a214f9f4abc90a11bd36d6abc3"}, { "to": "+46704508449", "id": "s47a89d6cc51d8db395d45ae7e16e86b7"}]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johan Eckerstroem
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- spec/fixtures/reloads_a_number.txt
|
108
108
|
- spec/fixtures/reloads_a_sms.txt
|
109
109
|
- spec/fixtures/sends_a_sms.txt
|
110
|
+
- spec/fixtures/sends_a_sms_to_multiple_recipients.txt
|
110
111
|
- spec/fixtures/sends_a_sms_with_long_sender.txt
|
111
112
|
- spec/fixtures/server_error.txt
|
112
113
|
- spec/fixtures/sms_history.txt
|