From aa7e5591154cac3ea0f763b02af7f308568549fb Mon Sep 17 00:00:00 2001 From: Brandur Date: Mon, 5 Oct 2015 12:24:53 -0700 Subject: [PATCH] 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. --- lib/stripe/account.rb | 2 +- lib/stripe/api_operations/create.rb | 12 +++--------- lib/stripe/bitcoin_receiver.rb | 2 +- lib/stripe/charge.rb | 2 +- lib/stripe/coupon.rb | 2 +- lib/stripe/customer.rb | 2 +- lib/stripe/dispute.rb | 2 +- lib/stripe/file_upload.rb | 2 +- lib/stripe/invoice.rb | 2 +- lib/stripe/invoice_item.rb | 2 +- lib/stripe/order.rb | 2 +- lib/stripe/plan.rb | 2 +- lib/stripe/product.rb | 2 +- lib/stripe/recipient.rb | 2 +- lib/stripe/refund.rb | 2 +- lib/stripe/sku.rb | 2 +- lib/stripe/token.rb | 2 +- lib/stripe/transfer.rb | 2 +- 18 files changed, 20 insertions(+), 26 deletions(-) diff --git a/lib/stripe/account.rb b/lib/stripe/account.rb index 2f4987eb..145422a4 100644 --- a/lib/stripe/account.rb +++ b/lib/stripe/account.rb @@ -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 diff --git a/lib/stripe/api_operations/create.rb b/lib/stripe/api_operations/create.rb index 4f2cca85..8347672b 100644 --- a/lib/stripe/api_operations/create.rb +++ b/lib/stripe/api_operations/create.rb @@ -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 diff --git a/lib/stripe/bitcoin_receiver.rb b/lib/stripe/bitcoin_receiver.rb index 5881350f..819c7b4d 100644 --- a/lib/stripe/bitcoin_receiver.rb +++ b/lib/stripe/bitcoin_receiver.rb @@ -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 diff --git a/lib/stripe/charge.rb b/lib/stripe/charge.rb index e286c1c4..e4d8491f 100644 --- a/lib/stripe/charge.rb +++ b/lib/stripe/charge.rb @@ -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={}) diff --git a/lib/stripe/coupon.rb b/lib/stripe/coupon.rb index 19928384..16a9b660 100644 --- a/lib/stripe/coupon.rb +++ b/lib/stripe/coupon.rb @@ -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 diff --git a/lib/stripe/customer.rb b/lib/stripe/customer.rb index f20e3fde..e926499e 100644 --- a/lib/stripe/customer.rb +++ b/lib/stripe/customer.rb @@ -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 diff --git a/lib/stripe/dispute.rb b/lib/stripe/dispute.rb index b55a9a43..f840bb50 100644 --- a/lib/stripe/dispute.rb +++ b/lib/stripe/dispute.rb @@ -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={}) diff --git a/lib/stripe/file_upload.rb b/lib/stripe/file_upload.rb index c0a6c2eb..e2a52c91 100644 --- a/lib/stripe/file_upload.rb +++ b/lib/stripe/file_upload.rb @@ -1,6 +1,6 @@ module Stripe class FileUpload < APIResource - include Stripe::APIOperations::Create + extend Stripe::APIOperations::Create extend Stripe::APIOperations::List def self.url diff --git a/lib/stripe/invoice.rb b/lib/stripe/invoice.rb index 5224f8fd..5bf29ab8 100644 --- a/lib/stripe/invoice.rb +++ b/lib/stripe/invoice.rb @@ -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) diff --git a/lib/stripe/invoice_item.rb b/lib/stripe/invoice_item.rb index 5fa4f42f..18031666 100644 --- a/lib/stripe/invoice_item.rb +++ b/lib/stripe/invoice_item.rb @@ -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 diff --git a/lib/stripe/order.rb b/lib/stripe/order.rb index da560a2d..1c4206a3 100644 --- a/lib/stripe/order.rb +++ b/lib/stripe/order.rb @@ -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={}) diff --git a/lib/stripe/plan.rb b/lib/stripe/plan.rb index e5e76267..ace5b66a 100644 --- a/lib/stripe/plan.rb +++ b/lib/stripe/plan.rb @@ -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 diff --git a/lib/stripe/product.rb b/lib/stripe/product.rb index 2507d167..d332d436 100644 --- a/lib/stripe/product.rb +++ b/lib/stripe/product.rb @@ -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 diff --git a/lib/stripe/recipient.rb b/lib/stripe/recipient.rb index 58c82ff7..e3f6efd6 100644 --- a/lib/stripe/recipient.rb +++ b/lib/stripe/recipient.rb @@ -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 diff --git a/lib/stripe/refund.rb b/lib/stripe/refund.rb index 3e509f5d..2ea88855 100644 --- a/lib/stripe/refund.rb +++ b/lib/stripe/refund.rb @@ -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 diff --git a/lib/stripe/sku.rb b/lib/stripe/sku.rb index 010768a3..3f4a2b1f 100644 --- a/lib/stripe/sku.rb +++ b/lib/stripe/sku.rb @@ -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 diff --git a/lib/stripe/token.rb b/lib/stripe/token.rb index 0ec95bb2..e6124ce9 100644 --- a/lib/stripe/token.rb +++ b/lib/stripe/token.rb @@ -1,5 +1,5 @@ module Stripe class Token < APIResource - include Stripe::APIOperations::Create + extend Stripe::APIOperations::Create end end diff --git a/lib/stripe/transfer.rb b/lib/stripe/transfer.rb index d81e5810..99483fd8 100644 --- a/lib/stripe/transfer.rb +++ b/lib/stripe/transfer.rb @@ -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