class ShieldPay::Webhook
Constants
- EVENT_CODES
Attributes
events[RW]
id[RW]
url[RW]
Public Class Methods
add(input_params={})
click to toggle source
Webhook
Params Parameter Optional? Description url no The url that shieldpay will call for webhooks events no The events that this webhook will monitor
(defaults to all events) Options are: :initated, :add_fund, :accepted, :sender_complete, :receiver_complete, :funds_available, :receiver_decline_before_accept, :sender_cancelled_before_funded, :payment_generated, :payment_completed, :funding_pending, :sender_cancelled_after_funded, :refund_in_progress, :customer_status
# File lib/shieldpay/webhook.rb, line 30 def self.add(input_params={}) stringify_keys!(input_params) url = input_params["url"] if url.nil? || url.size == 0 raise Errors::RequiredField.new("url is a required field") end params = { "Url" => url } events = input_params["events"] event_codes = if events.nil? || events.size == 0 EVENT_CODES.values else events.collect do |event| event_code = EVENT_CODES[event.to_sym] if event_code.nil? raise Errors::RequiredField.new("#{event} is not a valid event") end event_code end end params[:webhook_event_binding] = event_codes.collect do |event_code| { "EventId" => event_code } end response = Request.new.post("/Webhook/Add", params) response.dig("coreRes", "userMessage") == "Request successful" end
all()
click to toggle source
returns all the webhooks registered with ShieldPay
# File lib/shieldpay/webhook.rb, line 60 def self.all response = Request.new.post("/Webhook/AllByOrgKey", {}) response["Data"].collect do |webhook| new(webhook["WebhookId"], webhook["URL"], webhook["WebhookEventBinding"]) end end
delete(id)
click to toggle source
takes in the webhook id to delete a webhook
# File lib/shieldpay/webhook.rb, line 70 def self.delete(id) params = { webhook_id: id } response = Request.new.post("/Webhook/WebhookDelete", params) response["Data"] == "Success" end
event_name_from_id(event_id)
click to toggle source
# File lib/shieldpay/webhook.rb, line 78 def self.event_name_from_id(event_id) EVENT_CODES.key(event_id.to_s) end
new(id, url, events)
click to toggle source
# File lib/shieldpay/webhook.rb, line 82 def initialize(id, url, events) @id = id @url = url @events = parse_events(events) end
Private Instance Methods
parse_events(events)
click to toggle source
# File lib/shieldpay/webhook.rb, line 90 def parse_events(events) @events = events.collect do |hsh| event_name = hsh["EventName"] # remove spaces event_name = event_name.tr(" ", "-") underscore(event_name).to_sym end end
underscore(string)
click to toggle source
# File lib/shieldpay/webhook.rb, line 99 def underscore(string) string.gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end