module Stripe::APIOperations::NestedResource
def define_operation(
def define_operation( ce, ion, ce_url_method, ce_plural peration create ne_singleton_method(:"create_#{resource}") \ do |id, params = {}, opts = {}| quest_stripe_object( method: :post, path: send(resource_url_method, id), params: params, opts: opts retrieve ne_singleton_method(:"retrieve_#{resource}") \ do |id, nested_id, opts = {}| quest_stripe_object( method: :get, path: send(resource_url_method, id, nested_id), params: {}, opts: opts update ne_singleton_method(:"update_#{resource}") \ do |id, nested_id, params = {}, opts = {}| quest_stripe_object( method: :post, path: send(resource_url_method, id, nested_id), params: params, opts: opts delete ne_singleton_method(:"delete_#{resource}") \ do |id, nested_id, params = {}, opts = {}| quest_stripe_object( method: :delete, path: send(resource_url_method, id, nested_id), params: params, opts: opts list ne_singleton_method(:"list_#{resource_plural}") \ do |id, params = {}, opts = {}| quest_stripe_object( method: :get, path: send(resource_url_method, id), params: params, opts: opts e ArgumentError, "Unknown operation: #{operation.inspect}"
def nested_resource_class_methods(resource, path: nil, operations: nil,
def nested_resource_class_methods(resource, path: nil, operations: nil, resource_plural: nil) resource_plural ||= "#{resource}s" path ||= resource_plural raise ArgumentError, "operations array required" if operations.nil? resource_url_method = :"#{resource}s_url" define_singleton_method(resource_url_method) do |id, nested_id = nil| url = "#{resource_url}/#{CGI.escape(id)}/#{CGI.escape(path)}" url += "/#{CGI.escape(nested_id)}" unless nested_id.nil? url end operations.each do |operation| define_operation( resource, operation, resource_url_method, resource_plural ) end end