telstra-sms 0.1.0 → 0.2.0

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: 019256ff8183ac685b46ce271a047f8aaab33fb3
4
- data.tar.gz: f7727e4569af9915d7e145e971f2479ecea8d862
3
+ metadata.gz: f3139c2e4630b89f026e68ac905feadccc4b117e
4
+ data.tar.gz: d8e1ff33021793396c1f66e9e1efc2fdead31926
5
5
  SHA512:
6
- metadata.gz: 540bbd6770905786a089cad43dce0c0bb4dd83d67ba54bebeed62760d164de69d3702c7547578fea9510224a3a1df5a5c6f5bb366c87703397c6c44bb55255e8
7
- data.tar.gz: cf4e1cf91158d08c76abce8e2e42050621bae92250a71e6cec8c132e7ffac73c7e6b210e69a2335d318760306acaa86bed9c3fb0bba14d93ca450b900bebcb4d
6
+ metadata.gz: 9f8fdfe2ae94b47f74af44a1a349403f96263e69847f0d8fd57d8f942f8a26931e2cf99398b8d1b4ea0867f0b409223e564f902837f162f17d10e13650670b17
7
+ data.tar.gz: 0170d289f09f778bb7faa0fbb1cf606a8bc5b8b8d295929733dca8a0b9788e84461299b8348b988d0ce1eddedfa6e143d13a4960b13ddc14a97e26626b919cf8
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /doc/
7
7
  /pkg/
8
8
  /spec/reports/
9
+ /spec/fixtures/*.yml
9
10
  /tmp/
10
11
  *.bundle
11
12
  *.so
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- *This gem is currently in development and only has SMS send / status functionality right now*
1
+ *This gem is currently in development*
2
+ TODO: Add error handling.
2
3
 
3
4
  [![Code Climate](https://codeclimate.com/github/soccerbrain/telstra-sms/badges/gpa.svg)](https://codeclimate.com/github/soccerbrain/telstra-sms)
4
5
  [![Build Status](https://travis-ci.org/soccerbrain/telstra-sms.svg)](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("SMS Body", "04XX XXX XXXX")
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
  ```
@@ -5,32 +5,33 @@ require "telstra/sms/version"
5
5
  module Telstra
6
6
  class SMS
7
7
 
8
- attr_accessor :consumer_key, :consumer_secret, :token
8
+ attr_accessor :api_key, :api_secret, :token
9
9
 
10
10
  # Initialize API Keys
11
- def initialize(consumer_key, consumer_secret)
12
- @consumer_key = consumer_key
13
- @consumer_secret = consumer_secret
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=#{@consumer_key}&client_secret=#{@consumer_secret}&grant_type=client_credentials&scope=SMS")
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(sms_body, sms_to)
25
+ def send_sms(to: sms_to, body: sms_body)
26
+ [to, body]
26
27
  generate_token
27
28
  options = { body: {
28
- body: sms_body,
29
- to: sms_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
- repsonse = HTTParty.post("https://api.telstra.com/v1/sms/messages/#{message_id}")
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
- repsonse = HTTParty.post("https://api.telstra.com/v1/sms/messages/#{message_id}/response")
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
@@ -1,5 +1,5 @@
1
1
  module Telstra
2
2
  module Sms
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
File without changes
@@ -1 +1,8 @@
1
1
  require 'telstra/sms'
2
+ require 'webmock/rspec'
3
+ require 'vcr'
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = "spec/fixtures"
7
+ c.hook_into :webmock
8
+ end
@@ -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 api_key: 'blah', api_secret: 'blah2' }
6
+ let(:telstra_api){ Telstra::SMS.new(ENV['TELSTRA_API'], ENV['TELSTRA_SECRET']) }
7
7
 
8
- describe "#get_token" do
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
@@ -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.1.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 00:00:00.000000000 Z
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