require 'json' require 'faraday' module LYBC @@api_endpoint = "http://api.rel.lybc.cipsrv.xyz/actionresult/ecomm" def self.api_endpoint @@api_endpoint end def self.api_endpoint=(endpoint) @@api_endpoint = endpoint end @@api_prefix = "" def self.api_prefix @@api_prefix end def self.api_prefix=(prefix) raise("API prefix should start with /") unless (prefix[0] == '/') @@api_prefix = prefix end def self.api_url "#{@@api_endpoint}" end class Client attr_accessor :session_id def initialize(session_id) @session_id = session_id @conn = Faraday.new() end def registerSession(associationID = "") body = { 'sessionID' => @session_id.to_s, 'action' => 'registerSession', 'data' => { 'associationID' => associationID.to_s, 'expirationDate' => "2017-2-24" } } response = @conn.post(LYBC.api_endpoint, body.to_json, 'Content-Type' => 'application/json') JSON.parse(response.body) end def getAssociation body = { 'sessionID' => @session_id, 'action' => 'getAssociation', 'data' => {} } response = @conn.post("#{LYBC.api_endpoint}", body.to_json, 'Content-Type' => 'application/json') JSON.parse(response.body) end def getSelectedCoupons body = { 'sessionID' => @session_id, 'action' => 'getSelectedCoupons', 'data' => {} } response = @conn.post("#{LYBC.api_url}", body.to_json, 'Content-Type' => 'application/json') JSON.parse(response.body) end def cashSelectedCoupons body = { 'sessionID' => @session_id, 'action' => 'cashSelectedCoupons', 'data' => {} } response = @conn.post("#{LYBC.api_url}", body.to_json, 'Content-Type' => 'application/json') JSON.parse(response.body) end [:registerSession, :getAssociation, :getSelectedCoupons, :cashSelectedCoupons].each do |method| define_method("#{method}!".to_sym) do response = self.send(method) raise Exception.new('Response was not successful') unless is_successful?(response) end end private def is_successful?(parsed_response) parsed_response['status'] == 1 end end end