class Mozenda::Request::Base

Public Class Methods

new(options) click to toggle source
# File lib/mozenda/request/base.rb, line 4
def initialize options
  @connection = Mozenda::Infrastructure::Connection.instance
end

Public Instance Methods

send!(method = :post) click to toggle source
# File lib/mozenda/request/base.rb, line 8
def send! method = :post
  validate!
  response = @connection.send(method, additional_params)
  response_class.new(response)
end
validate!() click to toggle source
# File lib/mozenda/request/base.rb, line 14
def validate!
  required_params.each do |param_name|
    raise Mozenda::InvalidRequestException.new("Request #{operation}: required param '#{param_name}' is undefined") if additional_params[param_name].nil?
  end
end

Protected Instance Methods

format_status_url(params) click to toggle source
# File lib/mozenda/request/base.rb, line 28
def format_status_url params
  status_url = params[:status_url] || ""
  replacement_values = params[:replacement_values] || []
  unless status_url.empty? || replacement_values.empty?
    uri = URI(status_url)
    params = URI.decode_www_form(uri.query || "")
    replacement_values.each do |name|
      value = Mozenda::REPLACEMENT_VALUES[name]
      params << [name, value]
    end
    uri.query = URI.encode_www_form(params)
    status_url = uri.to_s
    Mozenda::REPLACEMENT_VALUES.values.each do |replacement_value|
      status_url = status_url.gsub(replacement_value, "%#{replacement_value}%")
    end
  end
  status_url
end
include_status_url?(params) click to toggle source
# File lib/mozenda/request/base.rb, line 22
def include_status_url? params
  status_url = params[:status_url] || ""
  replacement_values = params[:replacement_values] || []
  !(status_url.empty? || replacement_values.empty?)
end

Private Instance Methods

additional_params() click to toggle source
# File lib/mozenda/request/base.rb, line 63
def additional_params
  @additional_params ||= {"Operation" => operation}
end
operation() click to toggle source
# File lib/mozenda/request/base.rb, line 59
def operation
  self.class.const_get(:OPERATION)
end
put_additional_param(key, value) click to toggle source
# File lib/mozenda/request/base.rb, line 67
def put_additional_param key, value
  additional_params[key] = value
end
required_params() click to toggle source
# File lib/mozenda/request/base.rb, line 55
def required_params
  self.class.const_get(:REQUIRED_PARAMS)
end
response_class() click to toggle source
# File lib/mozenda/request/base.rb, line 49
def response_class
  class_name = operation.gsub(/\./, "")
  full_class_name = "Mozenda::Response::#{class_name}"
  full_class_name.constantize
end