Sha256: d666a447575c9b0e4dd9814d8ea232928e4c5deb8a8897a6f92c27d352af93b9

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module LedgerSync
  module Stripe
    class Customer
      module Operations
        class Find < Stripe::Operation::Find
          class Contract < LedgerSync::Ledgers::Contract
            params do
              required(:external_id).maybe(:string)
              required(:ledger_id).filled(:string)
              optional(:email).maybe(:string)
              optional(:name).maybe(:string)
              optional(:phone_number).maybe(:string)
            end
          end

          private

          def operate
            stripe_customer = ::Stripe::Customer.retrieve(
              resource.ledger_id
            )

            resource.external_id = stripe_customer.metadata['external_id']
            resource.email = stripe_customer.email
            resource.name = stripe_customer.name
            resource.phone_number = stripe_customer.phone

            resource.ledger_id = stripe_customer.id

            success(
              resource: resource,
              response: stripe_customer
            )
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ledger_sync-stripe-0.1.0 lib/ledger_sync/stripe/customer/operations/find.rb