Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/stripe/api_resources/abstract/api_resource.py: 38%
39 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1from __future__ import absolute_import, division, print_function
3from stripe import api_requestor, error, util, six
4from stripe.stripe_object import StripeObject
5from stripe.six.moves.urllib.parse import quote_plus
8class APIResource(StripeObject):
9 @classmethod
10 def retrieve(cls, id, api_key=None, **params):
11 instance = cls(id, api_key, **params)
12 instance.refresh()
13 return instance
15 def refresh(self):
16 self.refresh_from(self.request("get", self.instance_url()))
17 return self
19 @classmethod
20 def class_url(cls):
21 if cls == APIResource:
22 raise NotImplementedError(
23 "APIResource is an abstract class. You should perform "
24 "actions on its subclasses (e.g. Charge, Customer)"
25 )
26 # Namespaces are separated in object names with periods (.) and in URLs
27 # with forward slashes (/), so replace the former with the latter.
28 base = cls.OBJECT_NAME.replace(".", "/")
29 return "/v1/%ss" % (base,)
31 def instance_url(self):
32 id = self.get("id")
34 if not isinstance(id, six.string_types):
35 raise error.InvalidRequestError(
36 "Could not determine which URL to request: %s instance "
37 "has invalid ID: %r, %s. ID should be of type `str` (or"
38 " `unicode`)" % (type(self).__name__, id, type(id)),
39 "id",
40 )
42 id = util.utf8(id)
43 base = self.class_url()
44 extn = quote_plus(id)
45 return "%s/%s" % (base, extn)
47 # The `method_` and `url_` arguments are suffixed with an underscore to
48 # avoid conflicting with actual request parameters in `params`.
49 @classmethod
50 def _static_request(
51 cls,
52 method_,
53 url_,
54 api_key=None,
55 idempotency_key=None,
56 stripe_version=None,
57 stripe_account=None,
58 **params
59 ):
60 requestor = api_requestor.APIRequestor(
61 api_key, api_version=stripe_version, account=stripe_account
62 )
63 headers = util.populate_headers(idempotency_key)
64 response, api_key = requestor.request(method_, url_, params, headers)
65 return util.convert_to_stripe_object(
66 response, api_key, stripe_version, stripe_account
67 )
69 # The `method_` and `url_` arguments are suffixed with an underscore to
70 # avoid conflicting with actual request parameters in `params`.
71 @classmethod
72 def _static_request_stream(
73 cls,
74 method_,
75 url_,
76 api_key=None,
77 idempotency_key=None,
78 stripe_version=None,
79 stripe_account=None,
80 **params
81 ):
82 requestor = api_requestor.APIRequestor(
83 api_key, api_version=stripe_version, account=stripe_account
84 )
85 headers = util.populate_headers(idempotency_key)
86 response, _ = requestor.request_stream(method_, url_, params, headers)
87 return response