Extend Stripe::APIOperations::Create instead of including

Lets not be too shy about just using `extend` instead of `include` here
when it's more appropriate to do so. The advantage to this approach is
that the module can be either extended _or_ included with this change,
but couldn't be without it due to the `ClassMethods` meta-magic.

List has already started doing this as of #314, so we don't have to be
afraid of breaking convention here.
This commit is contained in:
Brandur 2015-10-05 12:24:53 -07:00
parent e2692e9805
commit aa7e559115
18 changed files with 20 additions and 26 deletions

View File

@ -1,6 +1,6 @@
module Stripe
class Account < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Delete
extend Stripe::APIOperations::List
include Stripe::APIOperations::Update

View File

@ -1,15 +1,9 @@
module Stripe
module APIOperations
module Create
module ClassMethods
def create(params={}, opts={})
response, opts = request(:post, url, params, opts)
Util.convert_to_stripe_object(response, opts)
end
end
def self.included(base)
base.extend(ClassMethods)
def create(params={}, opts={})
response, opts = request(:post, url, params, opts)
Util.convert_to_stripe_object(response, opts)
end
end
end

View File

@ -1,6 +1,6 @@
module Stripe
class BitcoinReceiver < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
include Stripe::APIOperations::Delete
extend Stripe::APIOperations::List

View File

@ -1,7 +1,7 @@
module Stripe
class Charge < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
def refund(params={}, opts={})

View File

@ -1,6 +1,6 @@
module Stripe
class Coupon < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
include Stripe::APIOperations::Delete
extend Stripe::APIOperations::List

View File

@ -1,6 +1,6 @@
module Stripe
class Customer < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Delete
include Stripe::APIOperations::Update
extend Stripe::APIOperations::List

View File

@ -1,7 +1,7 @@
module Stripe
class Dispute < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
def close(params={}, opts={})

View File

@ -1,6 +1,6 @@
module Stripe
class FileUpload < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
extend Stripe::APIOperations::List
def self.url

View File

@ -2,7 +2,7 @@ module Stripe
class Invoice < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Update
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
def self.upcoming(params, opts={})
response, opts = request(:get, upcoming_url, params, opts)

View File

@ -1,7 +1,7 @@
module Stripe
class InvoiceItem < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Delete
include Stripe::APIOperations::Update
end

View File

@ -1,7 +1,7 @@
module Stripe
class Order < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
def pay(params, opts={})

View File

@ -1,6 +1,6 @@
module Stripe
class Plan < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Delete
extend Stripe::APIOperations::List
include Stripe::APIOperations::Update

View File

@ -1,7 +1,7 @@
module Stripe
class Product < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
# Keep APIResource#url as `api_url` to avoid letting the external URL

View File

@ -1,6 +1,6 @@
module Stripe
class Recipient < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Delete
include Stripe::APIOperations::Update
extend Stripe::APIOperations::List

View File

@ -1,6 +1,6 @@
module Stripe
class Refund < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
extend Stripe::APIOperations::List
include Stripe::APIOperations::Update
end

View File

@ -1,7 +1,7 @@
module Stripe
class SKU < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
end

View File

@ -1,5 +1,5 @@
module Stripe
class Token < APIResource
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
end
end

View File

@ -1,7 +1,7 @@
module Stripe
class Transfer < APIResource
extend Stripe::APIOperations::List
include Stripe::APIOperations::Create
extend Stripe::APIOperations::Create
include Stripe::APIOperations::Update
def cancel