Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API Updates #783

Merged
merged 4 commits into from
Mar 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion stripe/api_resources/charge.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@
from stripe import util
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
from stripe.api_resources.abstract import custom_method


@custom_method("capture", http_verb="post")
class Charge(
CreateableAPIResource, ListableAPIResource, UpdateableAPIResource
CreateableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "charge"

Expand All @@ -21,6 +25,14 @@ def capture(self, idempotency_key=None, **params):
self.refresh_from(self.request("post", url, params, headers))
return self

@classmethod
def search(cls, *args, **kwargs):
return cls._search(search_url="/v1/charges/search", *args, **kwargs)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()

def refund(self, idempotency_key=None, **params):
url = self.instance_url() + "/refund"
headers = util.populate_headers(idempotency_key)
Expand Down
10 changes: 10 additions & 0 deletions stripe/api_resources/customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import DeletableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
from stripe.api_resources.abstract import custom_method
from stripe.api_resources.abstract import nested_resource_class_methods
Expand Down Expand Up @@ -33,6 +34,7 @@ class Customer(
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "customer"
Expand All @@ -45,6 +47,14 @@ def list_payment_methods(self, idempotency_key=None, **params):
stripe_object._retrieve_params = params
return stripe_object

@classmethod
def search(cls, *args, **kwargs):
return cls._search(search_url="/v1/customers/search", *args, **kwargs)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()

def delete_discount(self, **params):
requestor = api_requestor.APIRequestor(
self.api_key,
Expand Down
10 changes: 10 additions & 0 deletions stripe/api_resources/invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import DeletableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
from stripe.api_resources.abstract import custom_method

Expand All @@ -19,6 +20,7 @@ class Invoice(
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "invoice"
Expand Down Expand Up @@ -53,6 +55,14 @@ def void_invoice(self, idempotency_key=None, **params):
self.refresh_from(self.request("post", url, params, headers))
return self

@classmethod
def search(cls, *args, **kwargs):
return cls._search(search_url="/v1/invoices/search", *args, **kwargs)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()

@classmethod
def upcoming(
cls, api_key=None, stripe_version=None, stripe_account=None, **params
Expand Down
12 changes: 12 additions & 0 deletions stripe/api_resources/payment_intent.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from stripe import util
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
from stripe.api_resources.abstract import custom_method

Expand All @@ -15,6 +16,7 @@
class PaymentIntent(
CreateableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "payment_intent"
Expand Down Expand Up @@ -42,3 +44,13 @@ def verify_microdeposits(self, idempotency_key=None, **params):
headers = util.populate_headers(idempotency_key)
self.refresh_from(self.request("post", url, params, headers))
return self

@classmethod
def search(cls, *args, **kwargs):
return cls._search(
search_url="/v1/payment_intents/search", *args, **kwargs
)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()
16 changes: 15 additions & 1 deletion stripe/api_resources/price.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,22 @@

from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource


class Price(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource):
class Price(
CreateableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "price"

@classmethod
def search(cls, *args, **kwargs):
return cls._search(search_url="/v1/prices/search", *args, **kwargs)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()
10 changes: 10 additions & 0 deletions stripe/api_resources/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,23 @@
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import DeletableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource


class Product(
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "product"

@classmethod
def search(cls, *args, **kwargs):
return cls._search(search_url="/v1/products/search", *args, **kwargs)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()
12 changes: 12 additions & 0 deletions stripe/api_resources/subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import DeletableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
from stripe.api_resources.abstract import custom_method

Expand All @@ -14,10 +15,21 @@ class Subscription(
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "subscription"

@classmethod
def search(cls, *args, **kwargs):
return cls._search(
search_url="/v1/subscriptions/search", *args, **kwargs
)

@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()

def delete_discount(self, **params):
requestor = api_requestor.APIRequestor(
self.api_key,
Expand Down
16 changes: 16 additions & 0 deletions tests/api_resources/test_charge.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,22 @@ def test_is_listable(self, request_mock):
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], stripe.Charge)

def test_is_searchable(self, request_mock):
resources = stripe.Charge.search(query='currency:"USD"')
request_mock.assert_requested(
"get", "/v1/charges/search", {"query": 'currency:"USD"'}
)
assert resources.total_count == 1
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], stripe.Charge)

cnt = 0
for c in resources.auto_paging_iter():
assert isinstance(c, stripe.Charge)
cnt += 1

assert cnt == 1

def test_is_retrievable(self, request_mock):
resource = stripe.Charge.retrieve(TEST_RESOURCE_ID)
request_mock.assert_requested(
Expand Down