module Barzahlen
Constants
- IDEMPOTENCY_ENABLED
- VERSION
Attributes
configuration[RW]
Public Class Methods
configure() { |configuration| ... }
click to toggle source
# File lib/barzahlen/configuration.rb, line 28 def configure yield(configuration) end
invalidate_slip(slip_id)
click to toggle source
# File lib/barzahlen/slip.rb, line 52 def self.invalidate_slip(slip_id) self.execute_with_error_handling do self.get_grac_client.path("/slips/{id}/invalidate", id: slip_id.to_s).post end end
resend_email(slip_id)
click to toggle source
# File lib/barzahlen/slip.rb, line 40 def self.resend_email(slip_id) self.execute_with_error_handling do self.get_grac_client.path("/slips/{id}/resend/email", id: slip_id.to_s).post end end
resend_text_message(slip_id)
click to toggle source
# File lib/barzahlen/slip.rb, line 46 def self.resend_text_message(slip_id) self.execute_with_error_handling do self.get_grac_client.path("/slips/{id}/resend/text_message", id: slip_id.to_s).post end end
reset()
click to toggle source
# File lib/barzahlen/configuration.rb, line 24 def reset @configuration = Configuration.new end
retrieve_slip(slip_id)
click to toggle source
If idempotency is not important a simple request is more than enough
# File lib/barzahlen/slip.rb, line 28 def self.retrieve_slip(slip_id) self.execute_with_error_handling do self.get_grac_client.path("/slips/{id}", id: slip_id.to_s).get end end
update_slip(slip_id, opts = {})
click to toggle source
# File lib/barzahlen/slip.rb, line 34 def self.update_slip(slip_id, opts = {}) self.execute_with_error_handling do self.get_grac_client.path("/slips/{id}", id: slip_id.to_s).patch(opts) end end
webhook_request(request)
click to toggle source
Handle a webhook request
# File lib/barzahlen/slip.rb, line 60 def self.webhook_request(request) bz_hook_format = request["Bz-Hook-Format"] #stop processing when bz-hook-format = v1 because it will be or was send as v2 if bz_hook_format.include? "v1" return nil end signature = Barzahlen::Middleware.generate_bz_signature( Barzahlen.configuration.payment_key, request["Host"] + ":" + (request["Port"] || "443"), request["Method"] ? request["Method"].upcase : "POST", request["Date"], request["Path"].split("?")[0] || request["Path"], request["Path"].split("?")[1] || "", request["Body"] ) if request["Bz-Signature"].include? signature return JSON.parse(request["Body"]) else raise Barzahlen::Error::SignatureError.new("Signature not valid") end end
Private Class Methods
execute_with_error_handling() { || ... }
click to toggle source
# File lib/barzahlen/slip.rb, line 104 def self.execute_with_error_handling begin yield rescue Grac::Exception::RequestFailed => e raise Barzahlen::Error.generate_error_from_response("") rescue Grac::Exception::ClientException => e raise Barzahlen::Error.generate_error_from_response(e.body) end end
get_grac_client(idempotency = false)
click to toggle source
# File lib/barzahlen/slip.rb, line 90 def self.get_grac_client(idempotency = false) @@grac_client ||= Grac::Client.new( Barzahlen.configuration.sandbox ? Barzahlen::Configuration::API_HOST_SANDBOX : Barzahlen::Configuration::API_HOST, middleware: [ [ Barzahlen::Middleware::Signature, Barzahlen.configuration ] ] ) if idempotency return @@grac_client.set( headers: { "Idempotency-Key" => SecureRandom.uuid} ) else return @@grac_client end end