Sha256: 7e9b0dd987f4038a3a8c7f8a94288e66ae84e0ba0d8a8f0282a9aa7ce5afb0c8

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require 'nestful'
require 'nokogiri'

module Esendex
  class Account
    attr_accessor :account_reference, :username, :password
    attr_reader :messages_remaining
    
    def initialize(account_reference, username, password, connection = Nestful::Connection.new('http://api.esendex.com'))
      @account_reference = account_reference
      @username = username
      @password = password

      @connection = connection
      @connection.user = @username
      @connection.password = @password
      @connection.auth_type = :basic
      
      begin
        response = @connection.get "/v0.1/accounts/#{@account_reference}", default_headers
        doc = Nokogiri::XML(response.body)
        @messages_remaining = doc.at_xpath('//api:accounts/api:account/api:messagesremaining', 'api' => Esendex::API_NAMESPACE).content.to_i
      rescue Exception => exception
        raise ApiErrorFactory.new.get_api_error(exception)
      end
    end
    
    def default_headers
      {"User-Agent" => "Esendex Gem #{Esendex::Version::STRING}"}
    end
    
    def send_message(message)
      self.send_messages([message])
    end
    
    def send_messages(messages)
      
      batch_submission = MessageBatchSubmission.new(@account_reference, messages)
      
      begin
        response = @connection.post "/v1.0/messagedispatcher", batch_submission.to_s, default_headers
        doc = Nokogiri::XML(response.body)
        doc.at_xpath('//api:messageheaders', 'api' => Esendex::API_NAMESPACE)['batchid']
      rescue Exception => exception
        raise ApiErrorFactory.new.get_api_error(exception)
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
esendex-0.1.1 lib/esendex/account.rb