rbx 3.22.2__tar.gz → 3.22.2.dev189__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rbx-3.22.2 → rbx-3.22.2.dev189}/PKG-INFO +1 -1
- {rbx-3.22.2 → rbx-3.22.2.dev189}/pyproject.toml +2 -2
- rbx-3.22.2.dev189/rbx/__init__.py +1 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/__init__.py +13 -2
- rbx-3.22.2/rbx/clients/place.py → rbx-3.22.2.dev189/rbx/clients/place_exchange.py +23 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/PKG-INFO +1 -1
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/SOURCES.txt +1 -1
- rbx-3.22.2/rbx/__init__.py +0 -1
- {rbx-3.22.2 → rbx-3.22.2.dev189}/LICENSE +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/README.md +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/auth/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/auth/decorators.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/auth/id_token.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/auth/keystore.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/auth/mock.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/aws/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/aws/s3.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/cli.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/tasks/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/tasks/ec2.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/tasks/image.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/buildtools/tasks/misc.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/adsquare.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/broadsign.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/oxr.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/panels.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/reporting.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/clients/retry.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/exceptions.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/gcp/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/gcp/cloud_tasks.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/gcp/pubsub.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/gcp/storage.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/logging.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/settings.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/utils/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/utils/mdm.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/utils/vast.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/web/__init__.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx/web/handlers.py +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/dependency_links.txt +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/entry_points.txt +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/requires.txt +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/rbx.egg-info/top_level.txt +0 -0
- {rbx-3.22.2 → rbx-3.22.2.dev189}/setup.cfg +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rbx"
|
|
7
|
-
version = "3.22.2"
|
|
7
|
+
version = "3.22.2.dev189"
|
|
8
8
|
description = "A collection of common tools for Scoota services."
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "The Scoota Engineering Team", email = "engineering@scoota.com" }
|
|
@@ -80,7 +80,7 @@ homepage = "https://github.com/rockabox/rbx"
|
|
|
80
80
|
repository = "https://github.com/rockabox/rbx.git"
|
|
81
81
|
|
|
82
82
|
[tool.bumpversion]
|
|
83
|
-
current_version = "3.22.2"
|
|
83
|
+
current_version = "3.22.2.dev189"
|
|
84
84
|
commit = true
|
|
85
85
|
parse = """
|
|
86
86
|
(?P<major>\\d+)\\.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.22.2.dev189"
|
|
@@ -124,6 +124,7 @@ class Client(metaclass=Singleton):
|
|
|
124
124
|
headers=None,
|
|
125
125
|
params=None,
|
|
126
126
|
timeout=None,
|
|
127
|
+
include_headers=False,
|
|
127
128
|
):
|
|
128
129
|
"""Wrap the method call in common error handling."""
|
|
129
130
|
endpoint = endpoint if endpoint is not None else self.ENDPOINT
|
|
@@ -217,13 +218,15 @@ class Client(metaclass=Singleton):
|
|
|
217
218
|
|
|
218
219
|
# 204 "No Content" responses return nothing
|
|
219
220
|
if response.status_code == 204:
|
|
221
|
+
if include_headers:
|
|
222
|
+
return {"content": None, "headers": dict(response.headers)}
|
|
220
223
|
return
|
|
221
224
|
|
|
222
225
|
if content_type == "text/plain":
|
|
223
|
-
|
|
226
|
+
content = response.text
|
|
224
227
|
else:
|
|
225
228
|
try:
|
|
226
|
-
|
|
229
|
+
content = self.get_response(response)
|
|
227
230
|
except ValueError:
|
|
228
231
|
extra = {
|
|
229
232
|
"request": payload,
|
|
@@ -233,6 +236,12 @@ class Client(metaclass=Singleton):
|
|
|
233
236
|
"Invalid JSON response", details=extra, status_code=500, url=url
|
|
234
237
|
)
|
|
235
238
|
|
|
239
|
+
# Return content with headers if requested, otherwise just content
|
|
240
|
+
if include_headers:
|
|
241
|
+
return {"content": content, "headers": dict(response.headers)}
|
|
242
|
+
else:
|
|
243
|
+
return content
|
|
244
|
+
|
|
236
245
|
def request(
|
|
237
246
|
self,
|
|
238
247
|
method,
|
|
@@ -243,6 +252,7 @@ class Client(metaclass=Singleton):
|
|
|
243
252
|
headers=None,
|
|
244
253
|
params=None,
|
|
245
254
|
timeout=None,
|
|
255
|
+
include_headers=False,
|
|
246
256
|
):
|
|
247
257
|
"""Attempt to re-authenticate when the token has expired.
|
|
248
258
|
|
|
@@ -261,6 +271,7 @@ class Client(metaclass=Singleton):
|
|
|
261
271
|
headers=headers,
|
|
262
272
|
params=params,
|
|
263
273
|
timeout=timeout,
|
|
274
|
+
include_headers=include_headers,
|
|
264
275
|
)
|
|
265
276
|
|
|
266
277
|
try:
|
|
@@ -275,3 +275,26 @@ class PlaceExchangeClient(Client):
|
|
|
275
275
|
path=path,
|
|
276
276
|
params=params if params else None,
|
|
277
277
|
)
|
|
278
|
+
|
|
279
|
+
def get_screens(self, page=None):
|
|
280
|
+
"""Retrieve a page of screens from Place Exchange."""
|
|
281
|
+
path = f"v3/orgs/{self.org_id}/avails"
|
|
282
|
+
params = {"page_size": 1000}
|
|
283
|
+
|
|
284
|
+
if page:
|
|
285
|
+
params["page"] = page
|
|
286
|
+
|
|
287
|
+
response = self.request("get", path, params=params, include_headers=True)
|
|
288
|
+
|
|
289
|
+
# Extract the page for the next page from the Link header if it exists
|
|
290
|
+
next_page = None
|
|
291
|
+
if "Link" in response["headers"]:
|
|
292
|
+
links = response["headers"]["Link"].split(",")
|
|
293
|
+
for link in links:
|
|
294
|
+
if "rel='next'" in link:
|
|
295
|
+
# Extract the page parameter from the URL
|
|
296
|
+
url_part = link.split(";")[0].strip("<>")
|
|
297
|
+
if "page=" in url_part:
|
|
298
|
+
next_page = int(url_part.split("page=")[1].split("&")[0])
|
|
299
|
+
|
|
300
|
+
return response["content"], next_page
|
rbx-3.22.2/rbx/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "3.22.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|