Skip to content

Commit

Permalink
API Updates (#783)
Browse files Browse the repository at this point in the history
  • Loading branch information
pakrym-stripe authored Mar 28, 2022
1 parent 8a45c2b commit 73cb0c0
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 2 deletions.
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

0 comments on commit 73cb0c0

Please sign in to comment.