class MailRU::API::Request

Public Class Methods

new(api, method, method_params = {}) click to toggle source
# File lib/mailru/api/request.rb, line 17
def initialize api, method, method_params = {}, secure = Secure::Any
  @api = api
  @method = method
  @method_params = method_params
  @secure = secure
end

Protected Instance Methods

c2s_signature() click to toggle source
# File lib/mailru/api/request.rb, line 43
def c2s_signature
  Digest::MD5.hexdigest((@api.uid || '')+ parameters.sort.join + (@api.private_key || ''))
end
handle_response(response) click to toggle source
# File lib/mailru/api/request.rb, line 60
def handle_response response
  response = response.body unless response.is_a?(String)

  if @api.format == Format::XML
    response = REXML::Document.new(response).root

    error = response if response.name == 'error'
    if error
      raise Error.create(Integer(error.elements['error_code'].text), error.elements['error_msg'].text)
    end
  else
    response = JSON.parse(response)
    if response.is_a?(Hash)
      error = response['error']
      if error
        raise Error.create(error['error_code'], error['error_msg'])
      end
    end
  end

  response
end
parameters() click to toggle source
# File lib/mailru/api/request.rb, line 47
def parameters
  params = {}
  params.merge!({app_id: @api.app_id}) if @api.app_id
  params.merge!({method: @method}) if @method
  params.merge!({session_key: @api.session_key}) if @api.session_key
  params.merge!({format: @api.format}) if @api.format
  params.merge!({uid: @api.uid}) if @api.uid
  params.merge!({secure: 1}) if use_s2s?
  params.merge!(@method_params) if @method_params

  params.to_a.map{|p| p.join('=')}
end
s2s_signature() click to toggle source
# File lib/mailru/api/request.rb, line 39
def s2s_signature
  Digest::MD5.hexdigest(parameters.sort.join + (@api.secret_key || ''))
end
signature() click to toggle source
# File lib/mailru/api/request.rb, line 34
def signature
  return s2s_signature if use_s2s?
  return c2s_signature if use_c2s?
end
use_c2s?() click to toggle source
# File lib/mailru/api/request.rb, line 30
def use_c2s?
  @api.private_key and (@secure == Secure::No or @secure == Secure::Any) and @api.uid
end
use_s2s?() click to toggle source
# File lib/mailru/api/request.rb, line 26
def use_s2s?
  @api.secret_key and (@secure == Secure::Yes or @secure == Secure::Any)
end