class InterFAX::Outbound::Delivery

Constants

BOUNDARY
HEADERS
VALID_KEYS

Attributes

client[RW]
fax_number[RW]
files[RW]
params[RW]

Public Class Methods

new(client) click to toggle source
# File lib/interfax/outbound/delivery.rb, line 10
def initialize client
  self.client = client
end

Public Instance Methods

deliver(params) click to toggle source
# File lib/interfax/outbound/delivery.rb, line 14
def deliver params
  params, files = validate_params(params)

  file_objects = generate_file_objects(files)
  body = body_for(file_objects)

  result = client.post('/outbound/faxes', params, VALID_KEYS, HEADERS, body)
  InterFAX::Outbound::Fax.new(client: client, id: result.split('/').last)
end

Private Instance Methods

body_for(files) click to toggle source
# File lib/interfax/outbound/delivery.rb, line 47
def body_for(files)
  files.map do |file|
    "--#{BOUNDARY}\r\n#{file.header}\r\n\r\n#{file.body}\r\n"
  end.join + "--#{BOUNDARY}--\r\n"
end
generate_file_objects(files) click to toggle source
# File lib/interfax/outbound/delivery.rb, line 37
def generate_file_objects files
  files.map do |file|
    if file.kind_of?(String)
      InterFAX::File.new(client, file)
    elsif file.kind_of?(InterFAX::File)
      file
    end
  end
end
validate_params(params) click to toggle source
# File lib/interfax/outbound/delivery.rb, line 26
def validate_params params
  self.fax_number = params[:faxNumber] || raise(ArgumentError.new('Missing argument: faxNumber'))
  files = [params[:file] || params[:files] || raise(ArgumentError.new('Missing argument: file or files'))].flatten

  params.delete(:fax_number)
  params.delete(:file)
  params.delete(:files)

  [params, files]
end