module StarkitBanking::ApiClient
Public Class Methods
new(step_name = nil)
click to toggle source
# File lib/starkit_banking/api/client.rb, line 6 def initialize(step_name = nil) @step_name = step_name end
Public Instance Methods
callbacks(model, req)
click to toggle source
# File lib/starkit_banking/api/client.rb, line 37 def callbacks(model, req) req_reference_no = req.respond_to?(:uniqueRequestNo) ? req.uniqueRequestNo : nil ApiBanking::Callbacks.new do |c| c.before_send do |r| model.api_step = ApiStep.new( auditable_type: model.class, auditable_id: model.id, star_id: model.star_id, step_name: @step_name, req_reference: req_reference_no, req_timestamp: Time.current, req_bitstream: r.options[:body] ) end c.on_complete do |r| model.api_step.assign_attributes( status_code: r.response_code, rep_timestamp: Time.current, rep_bitstream: r.body ) end end end
exec(model)
click to toggle source
# File lib/starkit_banking/api/client.rb, line 10 def exec(model) env = Environment.build(credentials(model)) subscription = subscription(model) raise ApiFault.new(OpenStruct.new(code: 'sb:412', subCode: nil, reasonText: "#{service_name} is not subscribed")) if subscription.nil? req = request(subscription, model) res = invoke(env, req, callbacks(model, req)) if res.instance_of?ApiBanking::Fault # log fault details model.api_step.assign_attributes( fault_code: res.code, fault_subcode: res.subCode, fault_reason: res.reasonText ) # for certain API calls, certain faults are expected, for example, when a retry is made it is not an error raise ApiFault.new(res) else rep_reference_no = res.respond_to?(:uniqueResponseNo) ? res.uniqueResponseNo : nil # log fault details model.api_step.assign_attributes( rep_reference: rep_reference_no ) response(res) end end