Class: Braintree::GatewayRequest

Inherits:
Object
  • Object
show all
Defined in:
app/models/braintree/gateway_request.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = nil) ⇒ GatewayRequest

Returns a new instance of GatewayRequest.



8
9
10
11
12
# File 'app/models/braintree/gateway_request.rb', line 8

def initialize(attributes = nil)
  attributes.each { |k,v| self.send("#{k}=", v) } unless attributes.nil?
  self.key, self.key_id = BraintreeTransparentRedirectSlice.config[:key], BraintreeTransparentRedirectSlice.config[:key_id]
  self.time = self.class.formatted_time_value
end

Instance Attribute Details

#amountObject

Returns the value of attribute amount.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def amount
  @amount
end

#customer_vaultObject

Returns the value of attribute customer_vault.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def customer_vault
  @customer_vault
end

#customer_vault_idObject

Returns the value of attribute customer_vault_id.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def customer_vault_id
  @customer_vault_id
end

#hashObject (readonly)

Returns the value of attribute hash.



6
7
8
# File 'app/models/braintree/gateway_request.rb', line 6

def hash
  @hash
end

#keyObject

Returns the value of attribute key.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def key
  @key
end

#key_idObject

Returns the value of attribute key_id.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def key_id
  @key_id
end

#orderidObject

Returns the value of attribute orderid.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def orderid
  @orderid
end

#response_urlObject

Returns the value of attribute response_url.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def response_url
  @response_url
end

#timeObject

Returns the value of attribute time.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def time
  @time
end

#typeObject

Returns the value of attribute type.



3
4
5
# File 'app/models/braintree/gateway_request.rb', line 3

def type
  @type
end

Class Method Details

.formatted_time_valueObject



23
24
25
# File 'app/models/braintree/gateway_request.rb', line 23

def self.formatted_time_value
  Time.now.getutc.strftime("%Y%m%d%H%M%S")
end

Instance Method Details

#hash_attributesObject



27
28
29
30
# File 'app/models/braintree/gateway_request.rb', line 27

def hash_attributes
  { 'orderid' => orderid, 'amount' => amount, 'key_id' => key_id, 
    'time' => time, 'hash' => hash, 'customer_vault_id' => customer_vault_id }
end

#post(params) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/models/braintree/gateway_request.rb', line 32

def post(params)
  uri = Addressable::URI.parse(BraintreeTransparentRedirectSlice.config[:transact_api_url])

  server = Net::HTTP.new(uri.host, 443)
  server.use_ssl = true
  server.read_timeout = 20
  server.verify_mode = OpenSSL::SSL::VERIFY_NONE

  resp = server.start do |http|
    req = Net::HTTP::Post.new(uri.path)
    req.set_form_data(hash_attributes.merge(params))
    http.request(req)
  end
  case resp
  when Net::HTTPRedirection
    Addressable::URI.parse(resp.header['Location'])
  when Net::HTTPSuccess
    resp
  else
    resp.error!
  end
end