Class: ShieldPay::Webhook
- Inherits:
-
Object
- Object
- ShieldPay::Webhook
- Extended by:
- Helpers
- Defined in:
- lib/shieldpay/webhook.rb
Constant Summary collapse
- EVENT_CODES =
{ initiated: '1', add_fund: '2', accepted: '3', sender_complete: '4', receiver_complete: '5', funds_available: '6', receiver_decline_before_accept: '7', sender_cancelled_before_funded: '8', payment_generated: '9', payment_completed: '10', funding_pending: '11', sender_cancelled_after_funded: '12', refund_in_progress: '13', customer_status: '14' }
Instance Attribute Summary collapse
-
#events ⇒ Object
Returns the value of attribute events.
-
#id ⇒ Object
Returns the value of attribute id.
-
#url ⇒ Object
Returns the value of attribute url.
Class Method Summary collapse
-
.add(input_params = {}) ⇒ Object
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.
-
.all ⇒ Object
returns all the webhooks registered with ShieldPay.
-
.delete(id) ⇒ Object
takes in the webhook id to delete a webhook.
- .event_name_from_id(event_id) ⇒ Object
Instance Method Summary collapse
-
#initialize(id, url, events) ⇒ Webhook
constructor
A new instance of Webhook.
Methods included from Helpers
stringify_keys, stringify_keys!
Constructor Details
#initialize(id, url, events) ⇒ Webhook
Returns a new instance of Webhook.
82 83 84 85 86 |
# File 'lib/shieldpay/webhook.rb', line 82 def initialize(id, url, events) @id = id @url = url @events = parse_events(events) end |
Instance Attribute Details
#events ⇒ Object
Returns the value of attribute events.
5 6 7 |
# File 'lib/shieldpay/webhook.rb', line 5 def events @events end |
#id ⇒ Object
Returns the value of attribute id.
5 6 7 |
# File 'lib/shieldpay/webhook.rb', line 5 def id @id end |
#url ⇒ Object
Returns the value of attribute url.
5 6 7 |
# File 'lib/shieldpay/webhook.rb', line 5 def url @url end |
Class Method Details
.add(input_params = {}) ⇒ Object
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
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# 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 ⇒ Object
returns all the webhooks registered with ShieldPay
60 61 62 63 64 65 66 67 |
# 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) ⇒ Object
takes in the webhook id to delete a webhook
70 71 72 73 74 75 76 |
# 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) ⇒ Object
78 79 80 |
# File 'lib/shieldpay/webhook.rb', line 78 def self.event_name_from_id(event_id) EVENT_CODES.key(event_id.to_s) end |