telstra-sms 0.1.0 → 0.2.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/.gitignore +1 -0
- data/README.md +3 -2
- data/lib/telstra/sms.rb +16 -15
- data/lib/telstra/sms/version.rb +1 -1
- data/spec/fixtures/.gitkeep +0 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/telstra/sms_spec.rb +51 -2
- data/telstra-sms.gemspec +2 -0
- metadata +32 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3139c2e4630b89f026e68ac905feadccc4b117e
|
|
4
|
+
data.tar.gz: d8e1ff33021793396c1f66e9e1efc2fdead31926
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9f8fdfe2ae94b47f74af44a1a349403f96263e69847f0d8fd57d8f942f8a26931e2cf99398b8d1b4ea0867f0b409223e564f902837f162f17d10e13650670b17
|
|
7
|
+
data.tar.gz: 0170d289f09f778bb7faa0fbb1cf606a8bc5b8b8d295929733dca8a0b9788e84461299b8348b988d0ce1eddedfa6e143d13a4960b13ddc14a97e26626b919cf8
|
data/.gitignore
CHANGED
data/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
*This gem is currently in development
|
|
1
|
+
*This gem is currently in development*
|
|
2
|
+
TODO: Add error handling.
|
|
2
3
|
|
|
3
4
|
[](https://codeclimate.com/github/soccerbrain/telstra-sms)
|
|
4
5
|
[](https://travis-ci.org/soccerbrain/telstra-sms)
|
|
@@ -27,7 +28,7 @@ Or install it yourself as:
|
|
|
27
28
|
|
|
28
29
|
```ruby
|
|
29
30
|
t = Telstra::SMS.new(consumer_key, consumer_secret)
|
|
30
|
-
t.send_sms(
|
|
31
|
+
t.send_sms(to: "04XX XXX XXXX", body: 'Hello from Telstra!')
|
|
31
32
|
t.get_message_status(message_id)
|
|
32
33
|
t.get_message_response(message_id)
|
|
33
34
|
```
|
data/lib/telstra/sms.rb
CHANGED
|
@@ -5,32 +5,33 @@ require "telstra/sms/version"
|
|
|
5
5
|
module Telstra
|
|
6
6
|
class SMS
|
|
7
7
|
|
|
8
|
-
attr_accessor :
|
|
8
|
+
attr_accessor :api_key, :api_secret, :token
|
|
9
9
|
|
|
10
10
|
# Initialize API Keys
|
|
11
|
-
def initialize(
|
|
12
|
-
@
|
|
13
|
-
@
|
|
11
|
+
def initialize(api_key, api_secret)
|
|
12
|
+
@api_key = api_key
|
|
13
|
+
@api_secret = api_secret
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
# OAuth 2.0 Token. This will expire every hour.
|
|
17
17
|
def generate_token
|
|
18
|
-
response = HTTParty.get("https://api.telstra.com/v1/oauth/token?client_id=#{@
|
|
18
|
+
response = HTTParty.get("https://api.telstra.com/v1/oauth/token?client_id=#{@api_key}&client_secret=#{@api_secret}&grant_type=client_credentials&scope=SMS")
|
|
19
19
|
@token = JSON.parse(response.body)['access_token']
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
# Receipient number should be in the format of 04xxxxxxxx where x is a digit.
|
|
23
23
|
# Authorization header value should be in the format of "Bearer xxx" where xxx
|
|
24
24
|
# is the access token returned from a token request.
|
|
25
|
-
def send_sms(
|
|
25
|
+
def send_sms(to: sms_to, body: sms_body)
|
|
26
|
+
[to, body]
|
|
26
27
|
generate_token
|
|
27
28
|
options = { body: {
|
|
28
|
-
body:
|
|
29
|
-
to:
|
|
29
|
+
body: body,
|
|
30
|
+
to: to
|
|
30
31
|
}.to_json,
|
|
31
32
|
headers: { "Content-Type" => "application/json", "Authorization" => "Bearer #{@token}" }}
|
|
32
33
|
response = HTTParty.post("https://api.telstra.com/v1/sms/messages", options)
|
|
33
|
-
return response.body
|
|
34
|
+
return JSON.parse(response.body)
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
# Get the status of a previously sent SMS message
|
|
@@ -45,16 +46,16 @@ module Telstra
|
|
|
45
46
|
# Obviously, more info can be grabbed from those on the Telstra network.
|
|
46
47
|
def get_message_status(message_id)
|
|
47
48
|
generate_token
|
|
48
|
-
options = { headers: { "Authorization" => "Bearer #{@token}" } }
|
|
49
|
-
|
|
50
|
-
return response.body
|
|
49
|
+
options = { body: {}, headers: { "Authorization" => "Bearer #{@token}" } }
|
|
50
|
+
response = HTTParty.get("https://api.telstra.com/v1/sms/messages/#{message_id}", options)
|
|
51
|
+
return JSON.parse(response.body)
|
|
51
52
|
end
|
|
52
53
|
|
|
53
54
|
def get_message_response(message_id)
|
|
54
55
|
generate_token
|
|
55
|
-
options = { headers: { "Authorization" => "Bearer #{@token}" } }
|
|
56
|
-
|
|
57
|
-
return response.body
|
|
56
|
+
options = { body: {}, headers: { "Authorization" => "Bearer #{@token}" } }
|
|
57
|
+
response = HTTParty.get("https://api.telstra.com/v1/sms/messages/#{message_id}/response", options)
|
|
58
|
+
return JSON.parse(response.body)
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
end
|
data/lib/telstra/sms/version.rb
CHANGED
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
data/spec/telstra/sms_spec.rb
CHANGED
|
@@ -3,9 +3,58 @@ require 'spec_helper'
|
|
|
3
3
|
describe Telstra::SMS do
|
|
4
4
|
|
|
5
5
|
describe "Sending SMS" do
|
|
6
|
-
let(:telstra_api){ Telstra::SMS.new
|
|
6
|
+
let(:telstra_api){ Telstra::SMS.new(ENV['TELSTRA_API'], ENV['TELSTRA_SECRET']) }
|
|
7
7
|
|
|
8
|
-
describe "#
|
|
8
|
+
describe "#generate_token" do
|
|
9
|
+
it 'returns token' do
|
|
10
|
+
VCR.use_cassette('generate_token') do
|
|
11
|
+
response = telstra_api.generate_token
|
|
12
|
+
expect(response).kind_of?(String)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "#send_sms" do
|
|
18
|
+
it 'returns a success' do
|
|
19
|
+
VCR.use_cassette('send_sms') do
|
|
20
|
+
response = telstra_api.send_sms(to: '0425616397', body: 'Hello from Telstra!')
|
|
21
|
+
expect(response).kind_of?(Hash)
|
|
22
|
+
expect(response.has_key?('messageId')).to eq true
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "get_message_status" do
|
|
28
|
+
it 'returns message status' do
|
|
29
|
+
VCR.use_cassette('get_message_status') do
|
|
30
|
+
sms_response = telstra_api.send_sms(to: '0425616397', body: 'Hello from Telstra!')
|
|
31
|
+
message_id = sms_response['messageId']
|
|
32
|
+
response = telstra_api.get_message_status(message_id)
|
|
33
|
+
|
|
34
|
+
expect(response).kind_of?(Hash)
|
|
35
|
+
expect(response.has_key?('to')).to eq true
|
|
36
|
+
expect(response.has_key?('receivedTimestamp')).to eq true
|
|
37
|
+
expect(response.has_key?('sentTimestamp')).to eq true
|
|
38
|
+
expect(response.has_key?('status')).to eq true
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "#get_message_response" do
|
|
44
|
+
## Can a response be simulated?
|
|
45
|
+
it 'returns message response' do
|
|
46
|
+
VCR.use_cassette('get_message_response') do
|
|
47
|
+
sms_response = telstra_api.send_sms(to: '0425616397', body: 'Hello from Telstra!')
|
|
48
|
+
message_id = sms_response['messageId']
|
|
49
|
+
response = telstra_api.get_message_response(message_id)
|
|
50
|
+
|
|
51
|
+
expect(response).kind_of?(Array)
|
|
52
|
+
|
|
53
|
+
expect(response[0].has_key?('from')).to eq true
|
|
54
|
+
expect(response[0].has_key?('acknowledgedTimestamp')).to eq true
|
|
55
|
+
expect(response[0].has_key?('content')).to eq true
|
|
56
|
+
end
|
|
57
|
+
end
|
|
9
58
|
end
|
|
10
59
|
|
|
11
60
|
end
|
data/telstra-sms.gemspec
CHANGED
|
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.7"
|
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
24
24
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
25
|
+
spec.add_development_dependency "vcr"
|
|
26
|
+
spec.add_development_dependency "webmock"
|
|
25
27
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: telstra-sms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paul Millar
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-02-
|
|
11
|
+
date: 2015-02-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httparty
|
|
@@ -66,6 +66,34 @@ dependencies:
|
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '3.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: vcr
|
|
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'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: webmock
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
69
97
|
description:
|
|
70
98
|
email:
|
|
71
99
|
- paul@digitaldawn.com.au
|
|
@@ -81,6 +109,7 @@ files:
|
|
|
81
109
|
- Rakefile
|
|
82
110
|
- lib/telstra/sms.rb
|
|
83
111
|
- lib/telstra/sms/version.rb
|
|
112
|
+
- spec/fixtures/.gitkeep
|
|
84
113
|
- spec/spec_helper.rb
|
|
85
114
|
- spec/telstra/sms_spec.rb
|
|
86
115
|
- telstra-sms.gemspec
|
|
@@ -109,5 +138,6 @@ signing_key:
|
|
|
109
138
|
specification_version: 4
|
|
110
139
|
summary: Send SMS through the Telstra SMS API
|
|
111
140
|
test_files:
|
|
141
|
+
- spec/fixtures/.gitkeep
|
|
112
142
|
- spec/spec_helper.rb
|
|
113
143
|
- spec/telstra/sms_spec.rb
|