Class: Afterbuy::API
- Inherits:
-
Object
- Object
- Afterbuy::API
- Defined in:
- lib/afterbuy/api.rb
Constant Summary collapse
- METHOD_REQUEST_MAPPING =
{ 'GetAfterbuyTime' => '', 'UpdateShopProducts' => 'UpdateShopProducts' }
- METHOD_RESPONSE_MAPPING =
{ 'GetAfterbuyTime' => 'Time', 'UpdateShopProducts' => 'UpdateShopProducts' }
Instance Attribute Summary collapse
-
#debug_info ⇒ Object
Returns the value of attribute debug_info.
Instance Method Summary collapse
- #call(method_name, global_params: {}, payload: {}) ⇒ Object
- #connection ⇒ Object
-
#initialize(partner_id: nil, partner_password: nil, user_id: nil, user_password: nil) ⇒ API
constructor
A new instance of API.
- #shop_interface_call(global_params: {}, request: Afterbuy::ShopInterfaceRequest.new) ⇒ Object
- #shop_interface_connection ⇒ Object
Constructor Details
#initialize(partner_id: nil, partner_password: nil, user_id: nil, user_password: nil) ⇒ API
Returns a new instance of API.
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/afterbuy/api.rb', line 16 def initialize(partner_id: nil, partner_password: nil, user_id: nil, user_password: nil) raise ConfigMissingPartnerIDError, 'You must provide an Afterbuy partner_id' unless Afterbuy.config.partner_id || partner_id raise ConfigMissingPartnerPasswordError, 'You must provide an Afterbuy partner_password' unless Afterbuy.config.partner_password || partner_password raise ConfigMissingUserIDError, 'You must provide an Afterbuy user_id' unless Afterbuy.config.user_id || user_id raise ConfigMissingUserPasswordError, 'You must provide an Afterbuy user_password' unless Afterbuy.config.user_password || user_password @partner_id = Afterbuy.config.partner_id || partner_id @partner_password = Afterbuy.config.partner_password || partner_password @user_id = Afterbuy.config.user_id || user_id @user_password = Afterbuy.config.user_password || user_password @api_url = Afterbuy.config.afterbuy_api_url @shop_interface_url = Afterbuy.config.afterbuy_shop_interface_url end |
Instance Attribute Details
#debug_info ⇒ Object
Returns the value of attribute debug_info.
14 15 16 |
# File 'lib/afterbuy/api.rb', line 14 def debug_info @debug_info end |
Instance Method Details
#call(method_name, global_params: {}, payload: {}) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/afterbuy/api.rb', line 30 def call(method_name, global_params: {}, payload: {}) self.debug_info = { request_params: request_params(method_name, global_params, payload) } response = connection.post do |req| req.body = request_params(method_name, global_params, payload) end self.debug_info[:response_body] = response.body "Afterbuy::Representer::#{METHOD_RESPONSE_MAPPING[method_name]}ResponseRepresenter".constantize.new("Afterbuy::#{METHOD_RESPONSE_MAPPING[method_name]}Response".constantize.new).from_xml(response.body) end |
#connection ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/afterbuy/api.rb', line 54 def connection @connection ||= Faraday.new(url: @api_url) do |faraday| faraday.headers['Content-Type'] = 'application/xml' faraday.adapter Faraday.default_adapter faraday.use Afterbuy::Middleware::ErrorDetector end end |
#shop_interface_call(global_params: {}, request: Afterbuy::ShopInterfaceRequest.new) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/afterbuy/api.rb', line 42 def shop_interface_call(global_params: {}, request: Afterbuy::ShopInterfaceRequest.new) self.debug_info = { request_params: shop_interface_request_params(global_params, request).to_hash } response = shop_interface_connection.post do |req| req.body = shop_interface_request_params(global_params, request).to_hash end self.debug_info[:response_body] = response.body Afterbuy::Representer::ShopInterfaceResponseRepresenter.new(Afterbuy::ShopInterfaceResponse.new).from_xml(response.body) end |
#shop_interface_connection ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/afterbuy/api.rb', line 62 def shop_interface_connection @shop_interface_connection ||= Faraday.new(url: @shop_interface_url) do |faraday| faraday.request :url_encoded faraday.adapter Faraday.default_adapter faraday.use Afterbuy::Middleware::ErrorDetector end end |