Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/stripe/api_resources/search_result_object.py: 32%
46 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
7class SearchResultObject(StripeObject):
8 OBJECT_NAME = "search_result"
10 def search(
11 self, api_key=None, stripe_version=None, stripe_account=None, **params
12 ):
13 stripe_object = self._request(
14 "get",
15 self.get("url"),
16 api_key=api_key,
17 stripe_version=stripe_version,
18 stripe_account=stripe_account,
19 **params
20 )
21 stripe_object._retrieve_params = params
22 return stripe_object
24 def _request(
25 self,
26 method_,
27 url_,
28 api_key=None,
29 idempotency_key=None,
30 stripe_version=None,
31 stripe_account=None,
32 **params
33 ):
34 api_key = api_key or self.api_key
35 stripe_version = stripe_version or self.stripe_version
36 stripe_account = stripe_account or self.stripe_account
38 requestor = api_requestor.APIRequestor(
39 api_key, api_version=stripe_version, account=stripe_account
40 )
41 headers = util.populate_headers(idempotency_key)
42 response, api_key = requestor.request(method_, url_, params, headers)
43 stripe_object = util.convert_to_stripe_object(
44 response, api_key, stripe_version, stripe_account
45 )
46 return stripe_object
48 def __getitem__(self, k):
49 if isinstance(k, six.string_types):
50 return super(SearchResultObject, self).__getitem__(k)
51 else:
52 raise KeyError(
53 "You tried to access the %s index, but SearchResultObject types "
54 "only support string keys. (HINT: Search calls return an object "
55 "with a 'data' (which is the data array). You likely want to "
56 "call .data[%s])" % (repr(k), repr(k))
57 )
59 def __iter__(self):
60 return getattr(self, "data", []).__iter__()
62 def __len__(self):
63 return getattr(self, "data", []).__len__()
65 def auto_paging_iter(self):
66 page = self
68 while True:
69 for item in page:
70 yield item
71 page = page.next_search_result_page()
73 if page.is_empty:
74 break
76 @classmethod
77 def empty_search_result(
78 cls, api_key=None, stripe_version=None, stripe_account=None
79 ):
80 return cls.construct_from(
81 {"data": [], "has_more": False, "next_page": None},
82 key=api_key,
83 stripe_version=stripe_version,
84 stripe_account=stripe_account,
85 last_response=None,
86 )
88 @property
89 def is_empty(self):
90 return not self.data
92 def next_search_result_page(
93 self, api_key=None, stripe_version=None, stripe_account=None, **params
94 ):
95 if not self.has_more:
96 return self.empty_search_result(
97 api_key=api_key,
98 stripe_version=stripe_version,
99 stripe_account=stripe_account,
100 )
102 params_with_filters = self._retrieve_params.copy()
103 params_with_filters.update({"page": self.next_page})
104 params_with_filters.update(params)
106 return self.search(
107 api_key=api_key,
108 stripe_version=stripe_version,
109 stripe_account=stripe_account,
110 **params_with_filters
111 )