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