Class: PagarMe::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/pagarme/request.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, method) ⇒ Request

Returns a new instance of Request.



11
12
13
14
15
16
# File 'lib/pagarme/request.rb', line 11

def initialize(path, method)
  self.path = path
  self.method = method
  self.parameters = {}
  self.headers = {}
end

Instance Attribute Details

#headersObject

Returns the value of attribute headers.



9
10
11
# File 'lib/pagarme/request.rb', line 9

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



9
10
11
# File 'lib/pagarme/request.rb', line 9

def method
  @method
end

#parametersObject

Returns the value of attribute parameters.



9
10
11
# File 'lib/pagarme/request.rb', line 9

def parameters
  @parameters
end

#pathObject

Returns the value of attribute path.



9
10
11
# File 'lib/pagarme/request.rb', line 9

def path
  @path
end

Class Method Details

.encode(params) ⇒ Object



18
19
20
# File 'lib/pagarme/request.rb', line 18

def self.encode(params)
  Util.normalize_params(params).to_params
end

Instance Method Details

#runObject

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/pagarme/request.rb', line 22

def run
  unless PagarMe.api_key
    raise PagarMeError.new("You need to configure a API key before performing requests.")
  end

  self.headers =  {}

  parameters = self.parameters.merge({
    :api_key => PagarMe.api_key
  })
  error = nil
	  # puts parameters.inspect

  begin
    response = RestClient::Request.execute({
      :method => self.method,
      :url => PagarMe.full_api_url(self.path),
      :headers => self.headers,
      :open_timeout => 30,
      :payload => self.class.encode(parameters),
      :timeout => 90
    })
  rescue SocketError => e
    error = "Error connecting to server (#{e.message})."
  rescue NoMethodError => e
    if e.message =~ /\WRequestFailed\W/
      raise ResponseError.new("Unexpected response code (#{e.inspect}).")
    else
      raise
    end
  rescue RestClient::ExceptionWithResponse => e
    parsed_error = parse_json_response(e.http_body)
    if parsed_error['errors']
      error = parsed_error
      raise PagarMeError.initFromServerResponse(error)
    else
      raise PagarMeError.new(e.http_body)
    end
  rescue RestClient::Exception, Errno::ECONNREFUSED => e
    error = "Error connecting to server: connection refused"
  end

  raise ConnectionError.new(error) if error

  parse_json_response(response.body)
end