class CardConnect::Service::ServiceEndpoint

Attributes

connection[R]
request[R]
resource_name[R]
response[R]
rest_method[R]

Public Class Methods

new(connection = CardConnect.connection) click to toggle source

Parent for service endpoints (Authorization, Capture, etc.) This class shouldn't be called directly. Rather call the end service directly.

@param connection [CardConnect::Connection] @return CardConnect::ServiceEndpoint

# File lib/cardconnect/services/service_endpoint.rb, line 13
def initialize(connection = CardConnect.connection)
  @resource_name = '/'
  @config = CardConnect.configuration
  @connection = connection
end

Public Instance Methods

build_request(params = {}) click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 23
def build_request(params = {})
  req = symbolize_keys(params)
  req = req.merge(merchid: @config.merchant_id) unless req.key?(:merchid)
  @request = request_class.new(req)
end
path() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 19
def path
  base_api_path + resource_name
end
submit() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 29
def submit
  raise CardConnect::Error, 'Request has not been built' if request.nil?
  raise CardConnect::Error, 'Rest method is required' if rest_method.nil?
  @response = send(rest_method)
end

Private Instance Methods

base_api_path() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 37
def base_api_path
  '/cardconnect/rest'
end
delete() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 47
def delete
  response_class.new(connection.delete(path + request.payload).body)
rescue Faraday::ResourceNotFound => e
  puts e.message
end
get() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 41
def get
  response_class.new(connection.get(path + request.payload).body)
rescue Faraday::ResourceNotFound => e
  puts e.message
end
put() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 53
def put
  response_class.new(connection.put(path, request.payload).body)
rescue Faraday::ResourceNotFound => e
  puts e.message
end
request_class() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 59
def request_class
  string_to_class("#{self.class}Request")
end
response_class() click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 63
def response_class
  string_to_class("#{self.class}Response")
end
string_to_class(str) click to toggle source
# File lib/cardconnect/services/service_endpoint.rb, line 67
def string_to_class(str)
  str.split('::').inject(Object) { |a, e| a.const_get(e) }
end