esendex 0.2.1 → 0.2.2

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.
@@ -1,4 +1,3 @@
1
- require 'nestful'
2
1
  require 'nokogiri'
3
2
 
4
3
  module Esendex
@@ -14,9 +13,11 @@ module Esendex
14
13
  end
15
14
 
16
15
  def messages_remaining
17
- response = api_connection.get "/v1.0/accounts/#{@reference}"
16
+ response = api_connection.get "/v1.0/accounts"
18
17
  doc = Nokogiri::XML(response.body)
19
- (doc.at_xpath("//accounts/account/reference[contains(.,'#{@reference}')]").parent > "messagesremaining").first.content.to_i
18
+ node = doc.at_xpath("//api:account[api:reference='#{@reference}']/api:messagesremaining", 'api' => Esendex::API_NAMESPACE)
19
+ raise AccountReferenceError.new() if node.nil?
20
+ node.content.to_i
20
21
  end
21
22
 
22
23
  def send_message(args={})
@@ -16,13 +16,13 @@ class ApiConnection
16
16
  def get(url)
17
17
  @connection.get url, default_headers
18
18
  rescue => e
19
- raise ApiErrorFactory.new.get_api_error(e)
19
+ raise Esendex::ApiErrorFactory.new.get_api_error(e)
20
20
  end
21
21
 
22
22
  def post(url, body)
23
23
  @connection.post url, body, default_headers
24
24
  rescue => e
25
- raise ApiErrorFactory.new.get_api_error(e)
25
+ raise Esendex::ApiErrorFactory.new.get_api_error(e)
26
26
  end
27
27
 
28
28
  end
@@ -20,4 +20,7 @@ module Esendex
20
20
 
21
21
  class ForbiddenError < ApiError
22
22
  end
23
+
24
+ class AccountReferenceError < ApiError
25
+ end
23
26
  end
@@ -1,6 +1,4 @@
1
- require 'rexml/document'
2
1
  require 'nokogiri'
3
- include REXML
4
2
 
5
3
  # <message>
6
4
  # <to>$TO</to>
@@ -14,6 +12,7 @@ module Esendex
14
12
  def initialize(to, body, from=nil)
15
13
  @to = to
16
14
  @body = body
15
+ @from = from
17
16
  end
18
17
 
19
18
  def xml_node
@@ -1,7 +1,7 @@
1
1
  require 'esendex'
2
2
  require 'rails'
3
3
 
4
- module MyPlugin
4
+ module EsendexPlugin
5
5
  class Railtie < Rails::Railtie
6
6
  railtie_name :esendex
7
7
 
@@ -1,3 +1,3 @@
1
1
  module Esendex
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/spec/account_spec.rb CHANGED
@@ -6,13 +6,13 @@ describe Account do
6
6
  let(:messages_remaining) { random_integer }
7
7
  let(:account_xml) {
8
8
  "<?xml version=\"1.0\" encoding=\"utf-8\"?>
9
- <accounts>
9
+ <accounts xmlns=\"http://api.esendex.com/ns/\">
10
10
  <account id=\"2b4a326c-41de-4a57-a577-c7d742dc145c\" uri=\"http://api.esendex.com/v1.0/accounts/2b4a326c-41de-4a57-a577-c7d742dc145c\">
11
11
  <balanceremaining domesticmessages=\"100\" internationalmessages=\"100\">$0.00</balanceremaining>
12
- <reference>#{"not this one"}</reference>
12
+ <reference>not this one</reference>
13
13
  <address>447786204254</address>
14
14
  <type>Professional</type>
15
- <messagesremaining>#{1234}</messagesremaining>
15
+ <messagesremaining>1234</messagesremaining>
16
16
  <expireson>2015-12-31T00:00:00</expireson>
17
17
  <role>PowerUser</role>
18
18
  <defaultdialcode>44</defaultdialcode>
@@ -34,7 +34,7 @@ describe Account do
34
34
  let(:api_connection) { mock("Connection", :get => mock('Response', :body => account_xml), :post => true )}
35
35
 
36
36
  before(:each) do
37
- account.stub(:api_connection) { api_connection}
37
+ account.stub(:api_connection) { api_connection }
38
38
  end
39
39
 
40
40
  describe "#messages_remaining" do
@@ -42,13 +42,23 @@ describe Account do
42
42
  subject { account.messages_remaining }
43
43
 
44
44
  it "should get the account resource" do
45
- api_connection.should_receive(:get).with("/v1.0/accounts/#{account_reference}")
45
+ api_connection.should_receive(:get).with("/v1.0/accounts")
46
46
  subject
47
47
  end
48
- it "should get the messages remaining from the documeny" do
48
+ it "should get the messages remaining from the document" do
49
49
  subject.should eq(messages_remaining)
50
50
  end
51
51
  end
52
+
53
+ describe "#messages_remaining_invalid_reference" do
54
+ before(:each) do
55
+ account.reference = "invalid"
56
+ end
57
+
58
+ it "should raise AccountReferenceError" do
59
+ expect { account.messages_remaining }.to raise_error(AccountReferenceError)
60
+ end
61
+ end
52
62
 
53
63
  describe "#send_message" do
54
64
  let(:batch_id) { random_string }
data/spec/message_spec.rb CHANGED
@@ -1,6 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Message do
4
+ describe "#initialize" do
5
+ let(:to) { random_mobile }
6
+ let(:from) { random_mobile }
7
+ let(:body) { random_string }
8
+ let(:message) { Esendex::Message.new(to, body, from) }
9
+
10
+ it "should have to set" do
11
+ message.to.should eq(to)
12
+ end
13
+
14
+ it "should have from set" do
15
+ message.from.should eq(from)
16
+ end
17
+
18
+ it "should have body set" do
19
+ message.body.should eq(body)
20
+ end
21
+ end
22
+
4
23
  describe "#xml_node" do
5
24
  let(:to) { random_mobile }
6
25
  let(:body) { random_string }
@@ -0,0 +1,29 @@
1
+ require_relative '../lib/esendex'
2
+ include Esendex
3
+
4
+ namespace :esendex do
5
+ task :validate, [:username, :password, :account_reference] do |t, args|
6
+ begin
7
+ Esendex.configure do |config|
8
+ config.username = args.username
9
+ config.password = args.password
10
+ config.account_reference = args.account_reference
11
+ end
12
+ account = Account.new
13
+ messages_remaining = account.messages_remaining
14
+ puts "Validated user #{Esendex.username} on account #{account.reference}. #{messages_remaining} messages remaining"
15
+ rescue => e
16
+ puts "Failed to validate credentials #{e.message}"
17
+ end
18
+ end
19
+
20
+ task :send_message, [:to, :body, :from] do |t, args|
21
+ begin
22
+ account = Account.new
23
+ batch_id = account.send_message(args)
24
+ puts "Message sent to #{args.to}. Batch ID: #{batch_id}"
25
+ rescue => e
26
+ puts "Failed to send message #{e.message}"
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esendex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,9 +9,41 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-19 00:00:00.000000000 Z
13
- dependencies: []
14
- description: Gem for interacting with the Esendex API
12
+ date: 2013-02-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nestful
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.6
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.6
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.4.4.1
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.4.4.1
46
+ description: Send SMS from you application using the Esendex API
15
47
  email:
16
48
  - support@esendex.com
17
49
  executables: []
@@ -28,6 +60,7 @@ files:
28
60
  - lib/esendex/railtie.rb
29
61
  - lib/esendex/version.rb
30
62
  - lib/esendex.rb
63
+ - tasks/esendex.rake
31
64
  - LICENSE.txt
32
65
  - readme.md
33
66
  - spec/account_spec.rb
@@ -35,7 +68,7 @@ files:
35
68
  - spec/message_batch_submission_spec.rb
36
69
  - spec/message_spec.rb
37
70
  - spec/spec_helper.rb
38
- homepage: http://www.esendex.com
71
+ homepage: http://developers.esendex.com
39
72
  licenses: []
40
73
  post_install_message:
41
74
  rdoc_options: []
@@ -65,4 +98,3 @@ test_files:
65
98
  - spec/message_batch_submission_spec.rb
66
99
  - spec/message_spec.rb
67
100
  - spec/spec_helper.rb
68
- has_rdoc: