Sha256: 35e077d2b841eee6b44482c20969b39266ec2aa843ec7e75f2aef3f308ee1b39

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

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

          private

          def operate
            stripe_customer = ::Stripe::Customer.update(
              resource.ledger_id,
              email: resource.email,
              metadata: {
                external_id: resource.external_id
              },
              name: resource.name,
              phone: resource.phone_number
            )

            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/update.rb