Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/stripe/api_resources/list_object.py: 28%
67 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, six, util
4from stripe.stripe_object import StripeObject
6from stripe.six.moves.urllib.parse import quote_plus
9class ListObject(StripeObject):
10 OBJECT_NAME = "list"
12 def list(
13 self, api_key=None, stripe_version=None, stripe_account=None, **params
14 ):
15 stripe_object = self._request(
16 "get",
17 self.get("url"),
18 api_key=api_key,
19 stripe_version=stripe_version,
20 stripe_account=stripe_account,
21 **params
22 )
23 stripe_object._retrieve_params = params
24 return stripe_object
26 def create(
27 self,
28 api_key=None,
29 idempotency_key=None,
30 stripe_version=None,
31 stripe_account=None,
32 **params
33 ):
34 return self._request(
35 "post",
36 self.get("url"),
37 api_key=api_key,
38 idempotency_key=idempotency_key,
39 stripe_version=stripe_version,
40 stripe_account=stripe_account,
41 **params
42 )
44 def retrieve(
45 self,
46 id,
47 api_key=None,
48 stripe_version=None,
49 stripe_account=None,
50 **params
51 ):
52 url = "%s/%s" % (self.get("url"), quote_plus(util.utf8(id)))
53 return self._request(
54 "get",
55 url,
56 api_key=api_key,
57 stripe_version=stripe_version,
58 stripe_account=stripe_account,
59 **params
60 )
62 def _request(
63 self,
64 method_,
65 url_,
66 api_key=None,
67 idempotency_key=None,
68 stripe_version=None,
69 stripe_account=None,
70 **params
71 ):
72 api_key = api_key or self.api_key
73 stripe_version = stripe_version or self.stripe_version
74 stripe_account = stripe_account or self.stripe_account
76 requestor = api_requestor.APIRequestor(
77 api_key, api_version=stripe_version, account=stripe_account
78 )
79 headers = util.populate_headers(idempotency_key)
80 response, api_key = requestor.request(method_, url_, params, headers)
81 stripe_object = util.convert_to_stripe_object(
82 response, api_key, stripe_version, stripe_account
83 )
84 return stripe_object
86 def __getitem__(self, k):
87 if isinstance(k, six.string_types):
88 return super(ListObject, self).__getitem__(k)
89 else:
90 raise KeyError(
91 "You tried to access the %s index, but ListObject types only "
92 "support string keys. (HINT: List calls return an object with "
93 "a 'data' (which is the data array). You likely want to call "
94 ".data[%s])" % (repr(k), repr(k))
95 )
97 def __iter__(self):
98 return getattr(self, "data", []).__iter__()
100 def __len__(self):
101 return getattr(self, "data", []).__len__()
103 def __reversed__(self):
104 return getattr(self, "data", []).__reversed__()
106 def auto_paging_iter(self):
107 page = self
109 while True:
110 if (
111 "ending_before" in self._retrieve_params
112 and "starting_after" not in self._retrieve_params
113 ):
114 for item in reversed(page):
115 yield item
116 page = page.previous_page()
117 else:
118 for item in page:
119 yield item
120 page = page.next_page()
122 if page.is_empty:
123 break
125 @classmethod
126 def empty_list(
127 cls, api_key=None, stripe_version=None, stripe_account=None
128 ):
129 return cls.construct_from(
130 {"data": []},
131 key=api_key,
132 stripe_version=stripe_version,
133 stripe_account=stripe_account,
134 last_response=None,
135 )
137 @property
138 def is_empty(self):
139 return not self.data
141 def next_page(
142 self, api_key=None, stripe_version=None, stripe_account=None, **params
143 ):
144 if not self.has_more:
145 return self.empty_list(
146 api_key=api_key,
147 stripe_version=stripe_version,
148 stripe_account=stripe_account,
149 )
151 last_id = self.data[-1].id
153 params_with_filters = self._retrieve_params.copy()
154 params_with_filters.update({"starting_after": last_id})
155 params_with_filters.update(params)
157 return self.list(
158 api_key=api_key,
159 stripe_version=stripe_version,
160 stripe_account=stripe_account,
161 **params_with_filters
162 )
164 def previous_page(
165 self, api_key=None, stripe_version=None, stripe_account=None, **params
166 ):
167 if not self.has_more:
168 return self.empty_list(
169 api_key=api_key,
170 stripe_version=stripe_version,
171 stripe_account=stripe_account,
172 )
174 first_id = self.data[0].id
176 params_with_filters = self._retrieve_params.copy()
177 params_with_filters.update({"ending_before": first_id})
178 params_with_filters.update(params)
180 return self.list(
181 api_key=api_key,
182 stripe_version=stripe_version,
183 stripe_account=stripe_account,
184 **params_with_filters
185 )