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