app/controllers/forest_liana/stripe_controller.rb
module ForestLiana
class StripeController < ForestLiana::ApplicationController
def payments
getter = StripePaymentsGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_models(getter.records, {
context: { type: get_serializer_type('stripe_payments') },
meta: { count: getter.count },
include: ['customer']
})
end
def payment
getter = StripePaymentGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_model(getter.record, {
context: { type: get_serializer_type('stripe_payments') },
skip_collection_check: true,
include: ['customer']
})
end
def refund
begin
refunder = StripePaymentRefunder.new(params)
refunder.perform
render serializer: nil, json: {}
rescue ::Stripe::InvalidRequestError => error
render serializer: nil, json: { error: error.message }, status: 400
end
end
def cards
params[:object] = 'card'
getter = StripeSourcesGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_models(getter.records, {
context: { type: get_serializer_type('stripe_cards') },
meta: { count: getter.count },
include: ['customer']
})
end
def card
getter = StripeSourceGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_model(getter.record, {
context: { type: get_serializer_type('stripe_cards') },
skip_collection_check: true,
include: ['customer']
})
end
def invoices
getter = StripeInvoicesGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_models(getter.records, {
context: { type: get_serializer_type('stripe_invoices') },
meta: { count: getter.count },
include: ['customer']
})
end
def invoice
getter = StripeInvoiceGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_model(getter.record, {
context: { type: get_serializer_type('stripe_invoices') },
skip_collection_check: true,
include: ['customer']
})
end
def subscriptions
getter = StripeSubscriptionsGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_models(getter.records, {
context: { type: get_serializer_type('stripe_subscriptions') },
meta: { count: getter.count },
include: ['customer']
})
end
def subscription
getter = StripeSubscriptionGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_model(getter.record, {
context: { type: get_serializer_type('stripe_subscriptions') },
skip_collection_check: true,
include: ['customer']
})
end
def bank_accounts
params[:object] = 'bank_account'
getter = StripeSourcesGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_models(getter.records, {
context: { type: get_serializer_type('stripe_bank_accounts') },
meta: { count: getter.count },
include: ['customer']
})
end
def bank_account
getter = StripeSourceGetter.new(params, request.headers['Stripe-Secret-Key'],
request.headers['Stripe-Reference'])
getter.perform
render serializer: nil, json: serialize_model(getter.record, {
context: { type: get_serializer_type('stripe_bank_accounts') },
skip_collection_check: true,
include: ['customer']
})
end
def get_serializer_type(suffix)
"#{params[:collection]}_#{suffix}"
end
end
end