Sha256: a8cdcfc6306f103a321081ae0a0ad8d684e4cf9ac8d5c3fa0201273063c57d39

Contents?: true

Size: 1.65 KB

Versions: 2

Compression:

Stored size: 1.65 KB

Contents

module Stripe
  class Account < APIResource
    extend Stripe::APIOperations::Create
    include Stripe::APIOperations::Delete
    extend Stripe::APIOperations::List
    include Stripe::APIOperations::Update

    def url
      if self['id']
        super
      else
        "/v1/account"
      end
    end

    # @override To make id optional
    def self.retrieve(id=ARGUMENT_NOT_PROVIDED, opts={})
      id = id.equal?(ARGUMENT_NOT_PROVIDED) ? nil : Util.check_string_argument!(id)
      # Account used to be a singleton, where this method's signature was `(opts={})`.
      # For the sake of not breaking folks who pass in an OAuth key in opts, let's lurkily
      # string match for it.
      if opts == {} && id.is_a?(String) && id.start_with?('sk_')
        # `super` properly assumes a String opts is the apiKey and normalizes as expected.
        opts = id
        id = nil
      end
      super(id, opts)
    end

    def protected_fields
      [:legal_entity]
    end

    def legal_entity
      self['legal_entity']
    end

    def legal_entity=(_)
      raise NoMethodError.new('Overridding legal_entity can cause cause serious issues. Instead, set the individual fields of legal_entity like blah.legal_entity.first_name = \'Blah\'')
    end

    def deauthorize(client_id, opts={})
      opts = {:api_base => Stripe.connect_base}.merge(Util.normalize_opts(opts))
      response, opts = request(:post, '/oauth/deauthorize', { 'client_id' => client_id, 'stripe_user_id' => self.id }, opts)
      opts.delete(:api_base) # the api_base here is a one-off, don't persist it
      Util.convert_to_stripe_object(response, opts)
    end

    ARGUMENT_NOT_PROVIDED = Object.new
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stripe-1.29.1 lib/stripe/account.rb
stripe-1.29.0 lib/stripe/account.rb