Initial commit
This commit is contained in:
55
app/api/v2/public/webhooks.rb
Normal file
55
app/api/v2/public/webhooks.rb
Normal file
@@ -0,0 +1,55 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Public
|
||||
class Webhooks < Grape::API
|
||||
helpers ::API::V2::WebhooksHelpers
|
||||
|
||||
desc 'Bitgo Webhook'
|
||||
params do
|
||||
requires :event,
|
||||
type: String,
|
||||
desc: 'Name of event can be deposit or withdraw',
|
||||
values: { value: -> { %w[deposit withdraw] }, message: 'public.webhook.invalid_event' }
|
||||
requires :type,
|
||||
type: String,
|
||||
desc: 'Type of event.'
|
||||
given type: ->(val) { val == 'transfer' } do
|
||||
requires :hash,
|
||||
type: String,
|
||||
desc: 'Transfer txid.'
|
||||
requires :transfer,
|
||||
type: String,
|
||||
desc: 'Transfer id.'
|
||||
requires :coin,
|
||||
type: String,
|
||||
desc: 'Currency code.'
|
||||
requires :wallet,
|
||||
type: String,
|
||||
desc: 'Wallet id.'
|
||||
end
|
||||
given type: ->(val) { val == 'address_confirmation' } do
|
||||
requires :hash,
|
||||
type: String,
|
||||
desc: 'Address txid.'
|
||||
requires :address,
|
||||
type: String,
|
||||
desc: 'User Address.'
|
||||
requires :walletId,
|
||||
type: String,
|
||||
desc: 'Wallet id.'
|
||||
end
|
||||
end
|
||||
post '/webhooks/:event' do
|
||||
proces_webhook_event(params)
|
||||
status 200
|
||||
rescue StandardError => e
|
||||
Rails.logger.warn { "Cannot perform webhook: #{params}. Error: #{e}." }
|
||||
body errors: ["public.webhook.cannot_perfom_#{params['type']}"]
|
||||
status 422
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user