module MailruTarget::Request

Constants

API_URI
SUDO_API_URI

Public Instance Methods

make_request(method, path, params = {}, headers = {}) click to toggle source
# File lib/mailru_target/request.rb, line 10
def make_request(method, path, params = {}, headers = {})
  begin
    RestClient.send *build(method, path, params, headers)

  rescue RestClient::Unauthorized,
         RestClient::Forbidden, 
         RestClient::BadRequest,
         RestClient::ResourceNotFound => e
    raise MailruTarget::RequestError.new e

  rescue SocketError => e
    raise MailruTarget::ConnectionError.new e
  end
end
request(method, path, params = {}, headers = {}) click to toggle source
# File lib/mailru_target/request.rb, line 6
def request(method, path, params = {}, headers = {})
  JSON.parse make_request(method, path, params, headers).to_s
end

Private Instance Methods

build(method, path, params, headers) click to toggle source
# File lib/mailru_target/request.rb, line 27
def build(method, path, params, headers)
  path = get_uri(params) + "api/v#{params.delete(:v) || 1}" + path
  path << ".json" unless path.split("/").last["."]

  if params[:token]
    headers[:Authorization] = "Bearer #{params.delete :token}"
  else
    params.merge! client_id: MailruTarget.client_id, client_secret: MailruTarget.client_secret
  end

  case method
  when :get
    [:get, path, { params: params }.merge(headers)]
  when :post
    params = params[:grant_type] ? params : params.to_json
    [:post, path, params, headers]
  end
end
get_uri(params) click to toggle source
# File lib/mailru_target/request.rb, line 46
def get_uri(params)
  user = params.delete(:as_user)
  user ? "#{SUDO_API_URI}#{user}/" : API_URI
end