class PickpointApi::Session
Attributes
state[R]
test[R]
Public Class Methods
new(hash = {})
click to toggle source
# File lib/pickpoint_api/session.rb, line 11 def initialize(hash = {}) @state = :new @test = hash[:test] == true end
Private Instance Methods
api_path()
click to toggle source
# File lib/pickpoint_api/session.rb, line 98 def api_path if @test API_TEST_PATH else API_PROD_PATH end end
attach_session_id(data, key)
click to toggle source
# File lib/pickpoint_api/session.rb, line 125 def attach_session_id(data, key) { 'SessionId' => @session_id, key => data } end
check_for_error(response, error_field, error = ApiError) { || ... }
click to toggle source
# File lib/pickpoint_api/session.rb, line 18 def check_for_error(response, error_field, error = ApiError) if !response[error_field].nil? && !response[error_field].empty? yield if block_given? raise error, response[error_field] else response end end
create_request(action)
click to toggle source
# File lib/pickpoint_api/session.rb, line 106 def create_request(action) action_config = ACTIONS[action] if action_config.nil? raise UnknownApiAction, action end action_path = "#{api_path}#{action_config[:path]}" if action_config[:method] == :post req = ::Net::HTTP::Post.new action_path elsif action_config[:method] == :get req = ::Net::HTTP::Get.new action_path end req.content_type = 'application/json' req end
ensure_session_state(state = :started)
click to toggle source
# File lib/pickpoint_api/session.rb, line 39 def ensure_session_state(state = :started) if @state != state raise InvalidSessionState end end
execute_action(action, data = {})
click to toggle source
# File lib/pickpoint_api/session.rb, line 132 def execute_action(action, data = {}) logger.debug("Request: action: #{action}; data: #{data.inspect}") req = create_request(action) req.body = data.to_json response = send_request(req) log_response(response) if response.code != '200' raise ApiError, response.body end response.body end
json_request(action, data)
click to toggle source
# File lib/pickpoint_api/session.rb, line 45 def json_request(action, data) response = execute_action(action, data) JSON.parse(response) end
log_response(response)
click to toggle source
# File lib/pickpoint_api/session.rb, line 152 def log_response(response) if !response.body.nil? if response.body.start_with?('%PDF') logger.debug("Response: #{response.code}; data: PDF") else logger.debug("Response: #{response.code}; data: #{response.body[0,200]}#{response.body.size > 200 ? '...' : ''}") end end end
logger()
click to toggle source
# File lib/pickpoint_api/session.rb, line 162 def logger ::PickpointApi.logger end
parameterless_request(action)
click to toggle source
# File lib/pickpoint_api/session.rb, line 33 def parameterless_request(action) ensure_session_state response = execute_action(action) JSON.parse(response) end
request_by_invoice_id(action, invoice_id = nil, sender_invoice_number = nil)
click to toggle source
# File lib/pickpoint_api/session.rb, line 81 def request_by_invoice_id(action, invoice_id = nil, sender_invoice_number = nil) ensure_session_state data = { 'SessionId' => @session_id } if !invoice_id.nil? data['InvoiceNumber'] = invoice_id end if !sender_invoice_number.nil? data['SenderInvoiceNumber'] = sender_invoice_number end json_request(action, data) end
request_by_invoice_ids(invoice_ids, action)
click to toggle source
# File lib/pickpoint_api/session.rb, line 50 def request_by_invoice_ids(invoice_ids, action) ensure_session_state data = if invoice_ids.kind_of?(Array) invoice_ids else [invoice_ids] end data = attach_session_id(data,'Invoices') response = execute_action(action, data) if response.start_with?('Error') raise ApiError, response else return response end end
return_request(action, ikn, document_number, date_from, date_to = DateTime.now)
click to toggle source
# File lib/pickpoint_api/session.rb, line 68 def return_request(action, ikn, document_number, date_from, date_to = DateTime.now) ensure_session_state data = { 'SessionId' => @session_id, 'IKN' => ikn, 'DocumentNumber' => document_number, 'DateFrom' => date_from.strftime(DATE_FORMAT), 'DateEnd' => date_to.strftime(DATE_FORMAT) } json_request(action, data) check_for_error(res, 'Error') end
send_request(req)
click to toggle source
# File lib/pickpoint_api/session.rb, line 146 def send_request(req) ::Net::HTTP.start(API_HOST, API_PORT) do |http| http.request(req) end end
sendings_request(action, data)
click to toggle source
# File lib/pickpoint_api/session.rb, line 27 def sendings_request(action, data) ensure_session_state data = attach_session_id(data, 'Sendings') json_request(action, data) end