mirror of
https://github.com/rommapp/romm.git
synced 2026-02-18 00:27:41 +01:00
Refactor + add tests for igdb handler
This commit is contained in:
@@ -21,7 +21,7 @@ async def search_rom_igdb(
|
||||
if search_term:
|
||||
log.info(f"Searching by {search_by}: {search_term}")
|
||||
if search_by == "ID":
|
||||
matched_roms = igdbh.get_matched_rom_by_id(search_term)
|
||||
matched_roms = igdbh.get_matched_roms_by_id(search_term)
|
||||
elif search_by == "Name":
|
||||
matched_roms = igdbh.get_matched_roms_by_name(search_term, rom["p_igdb_id"])
|
||||
else:
|
||||
@@ -30,9 +30,7 @@ async def search_rom_igdb(
|
||||
f":video_game: {rom['p_slug']}: {COLORS['orange']}{rom['file_name']}{COLORS['reset']}"
|
||||
)
|
||||
)
|
||||
matched_roms = igdbh.get_matched_roms(
|
||||
rom["file_name"], rom["p_igdb_id"], rom["p_slug"]
|
||||
)
|
||||
matched_roms = igdbh.get_matched_roms(rom["file_name"], rom["p_igdb_id"])
|
||||
|
||||
log.info("Results:")
|
||||
|
||||
|
||||
@@ -11,12 +11,11 @@ from logger.logger import log
|
||||
|
||||
class IGDBHandler:
|
||||
def __init__(self) -> None:
|
||||
base_url: str = "https://api.igdb.com/v4"
|
||||
self.platform_url: str = f"{base_url}/platforms/"
|
||||
self.games_url: str = f"{base_url}/games/"
|
||||
self.covers_url: str = f"{base_url}/covers/"
|
||||
self.screenshots_url: str = f"{base_url}/screenshots/"
|
||||
self.twitch_auth: TwitchAuth = TwitchAuth()
|
||||
self.platform_url = "https://api.igdb.com/v4/platforms/"
|
||||
self.games_url = "https://api.igdb.com/v4/games/"
|
||||
self.covers_url = "https://api.igdb.com/v4/covers/"
|
||||
self.screenshots_url = "https://api.igdb.com/v4/screenshots/"
|
||||
self.twitch_auth = TwitchAuth()
|
||||
self.headers = {
|
||||
"Client-ID": self.twitch_auth.client_id,
|
||||
"Authorization": f"Bearer {self.twitch_auth.get_oauth_token()}",
|
||||
@@ -41,35 +40,38 @@ class IGDBHandler:
|
||||
return requests.post(
|
||||
self.games_url,
|
||||
headers=self.headers,
|
||||
data=f'search "{search_term}"; \
|
||||
fields id, slug, name, summary, screenshots; \
|
||||
where platforms=[{p_igdb_id}] {category_filter};',
|
||||
data=f"""
|
||||
search "{search_term}";
|
||||
fields id, slug, name, summary, screenshots;
|
||||
where platforms=[{p_igdb_id}] {category_filter};
|
||||
""",
|
||||
).json()[0]
|
||||
except IndexError:
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
def _normalize_cover_url(url: str) -> str:
|
||||
url = f"https:{url.replace('https:', '')}"
|
||||
return url
|
||||
return f"https:{url.replace('https:', '')}"
|
||||
|
||||
def _search_cover(self, rom_id: str) -> str:
|
||||
try:
|
||||
res: dict = requests.post(
|
||||
res = requests.post(
|
||||
self.covers_url,
|
||||
headers=self.headers,
|
||||
data=f"fields url; where game={rom_id};",
|
||||
).json()[0]
|
||||
except IndexError:
|
||||
return ""
|
||||
|
||||
return self._normalize_cover_url(res["url"]) if "url" in res.keys() else ""
|
||||
|
||||
def _search_screenshots(self, rom_id: str) -> list:
|
||||
res: dict = requests.post(
|
||||
res = requests.post(
|
||||
self.screenshots_url,
|
||||
headers=self.headers,
|
||||
data=f"fields url; where game={rom_id}; limit 5;",
|
||||
).json()
|
||||
|
||||
return [
|
||||
self._normalize_cover_url(r["url"]).replace("t_thumb", "t_original")
|
||||
for r in res
|
||||
@@ -77,39 +79,42 @@ class IGDBHandler:
|
||||
]
|
||||
|
||||
@check_twitch_token
|
||||
def get_platform(self, slug: str) -> tuple:
|
||||
igdb_id: str = ""
|
||||
name: str = slug
|
||||
def get_platform(self, slug: str):
|
||||
try:
|
||||
res: dict = requests.post(
|
||||
res = requests.post(
|
||||
self.platform_url,
|
||||
headers=self.headers,
|
||||
data=f'fields id, name; where slug="{slug}";',
|
||||
).json()[0]
|
||||
igdb_id = res["id"]
|
||||
name = res["name"]
|
||||
|
||||
return {
|
||||
"igdb_id": res["id"],
|
||||
"name": res["name"],
|
||||
"slug": slug,
|
||||
}
|
||||
except IndexError:
|
||||
log.warning(f"{slug} not found in IGDB")
|
||||
return {"igdb_id": igdb_id, "name": name, "slug": slug, "logo_path": ""}
|
||||
|
||||
return {}
|
||||
|
||||
@check_twitch_token
|
||||
def get_rom(self, file_name: str, p_igdb_id: int) -> dict:
|
||||
search_term: str = uc(get_search_term(file_name))
|
||||
def get_rom(self, file_name: str, p_igdb_id: int):
|
||||
search_term = uc(get_search_term(file_name))
|
||||
res = (
|
||||
self._search_rom(search_term, p_igdb_id, 0)
|
||||
or self._search_rom(search_term, p_igdb_id, 10)
|
||||
or self._search_rom(search_term, p_igdb_id)
|
||||
)
|
||||
|
||||
r_igdb_id = res["id"] if "id" in res.keys() else ""
|
||||
r_slug = res["slug"] if "slug" in res.keys() else ""
|
||||
r_name = res["name"] if "name" in res.keys() else ""
|
||||
summary = res["summary"] if "summary" in res.keys() else ""
|
||||
r_igdb_id = res.get("id", "")
|
||||
r_slug = res.get("slug", "")
|
||||
r_name = res.get("name", search_term)
|
||||
summary = res.get("summary", "")
|
||||
|
||||
if not r_name:
|
||||
r_name = search_term
|
||||
if not r_igdb_id:
|
||||
log.warning(f"{r_name} not found in IGDB")
|
||||
return {}
|
||||
|
||||
return {
|
||||
"r_igdb_id": r_igdb_id,
|
||||
"r_slug": r_slug,
|
||||
@@ -120,100 +125,107 @@ class IGDBHandler:
|
||||
}
|
||||
|
||||
@check_twitch_token
|
||||
def get_rom_by_id(self, r_igdb_id: str) -> list:
|
||||
res: list = requests.post(
|
||||
def get_rom_by_id(self, r_igdb_id: str):
|
||||
res = requests.post(
|
||||
self.games_url,
|
||||
headers=self.headers,
|
||||
data=f"fields slug, name, summary; where id={r_igdb_id};",
|
||||
)
|
||||
if res.status_code == 200:
|
||||
rom: dict = res.json()[0]
|
||||
r_slug = rom["slug"] if "slug" in rom.keys() else ""
|
||||
r_name = rom["name"] if "name" in rom.keys() else ""
|
||||
summary = rom["summary"] if "summary" in rom.keys() else ""
|
||||
return [
|
||||
{
|
||||
"r_igdb_id": r_igdb_id,
|
||||
"r_slug": r_slug,
|
||||
"r_name": r_name,
|
||||
"summary": summary,
|
||||
"url_cover": self._search_cover(r_igdb_id),
|
||||
"url_screenshots": self._search_screenshots(r_igdb_id),
|
||||
}
|
||||
]
|
||||
else:
|
||||
return []
|
||||
|
||||
try:
|
||||
rom = res.json()[0]
|
||||
return {
|
||||
"r_igdb_id": r_igdb_id,
|
||||
"r_slug": rom.get("slug", ""),
|
||||
"r_name": rom.get("name", ""),
|
||||
"summary": rom.get("summary", ""),
|
||||
"url_cover": self._search_cover(r_igdb_id),
|
||||
"url_screenshots": self._search_screenshots(r_igdb_id),
|
||||
}
|
||||
except IndexError:
|
||||
return {}
|
||||
|
||||
@check_twitch_token
|
||||
def get_matched_rom_by_id(self, igdb_id: str) -> list:
|
||||
matched_roms: list = self.get_rom_by_id(igdb_id)
|
||||
for rom in matched_roms:
|
||||
rom["url_cover"] = rom["url_cover"].replace("t_thumb", f"t_cover_big")
|
||||
rom["url_screenshots"] = self._search_screenshots(igdb_id)
|
||||
return matched_roms
|
||||
def get_matched_roms_by_id(self, r_igdb_id: str):
|
||||
matched_rom = self.get_rom_by_id(r_igdb_id)
|
||||
matched_rom.update(
|
||||
url_cover=matched_rom["url_cover"].replace("t_thumb", "t_cover_big"),
|
||||
)
|
||||
return [matched_rom]
|
||||
|
||||
@check_twitch_token
|
||||
def get_matched_roms_by_name(self, search_term: str, p_igdb_id: int) -> list:
|
||||
matched_roms: list = requests.post(
|
||||
def get_matched_roms_by_name(self, search_term: str, p_igdb_id: int):
|
||||
matched_roms = requests.post(
|
||||
self.games_url,
|
||||
headers=self.headers,
|
||||
data=f'search "{uc(search_term)}"; \
|
||||
fields id, slug, name, summary; \
|
||||
where platforms=[{p_igdb_id}];',
|
||||
data=f"""
|
||||
search "{uc(search_term)}";
|
||||
fields id, slug, name, summary;
|
||||
where platforms=[{p_igdb_id}];
|
||||
""",
|
||||
).json()
|
||||
for rom in matched_roms:
|
||||
rom["url_cover"] = self._search_cover(rom["id"]).replace(
|
||||
"t_thumb", f"t_cover_big"
|
||||
|
||||
return [
|
||||
dict(
|
||||
rom,
|
||||
url_cover=self._search_cover(rom["id"]).replace(
|
||||
"t_thumb", "t_cover_big"
|
||||
),
|
||||
url_screenshots=self._search_screenshots(rom["id"]),
|
||||
r_igdb_id=rom.pop("id"),
|
||||
r_slug=rom.pop("slug"),
|
||||
r_name=rom.pop("name"),
|
||||
)
|
||||
rom["url_screenshots"] = self._search_screenshots(rom["id"])
|
||||
rom["r_igdb_id"] = rom.pop("id")
|
||||
rom["r_slug"] = rom.pop("slug")
|
||||
rom["r_name"] = rom.pop("name")
|
||||
return matched_roms
|
||||
for rom in matched_roms
|
||||
]
|
||||
|
||||
@check_twitch_token
|
||||
def get_matched_roms(self, file_name: str, p_igdb_id: int, p_slug: str) -> list:
|
||||
matched_roms: list[dict] = []
|
||||
if p_igdb_id:
|
||||
matched_roms: list = requests.post(
|
||||
self.games_url,
|
||||
headers=self.headers,
|
||||
data=f'search "{uc(get_search_term(file_name))}"; \
|
||||
fields id, slug, name, summary; \
|
||||
where platforms=[{p_igdb_id}];',
|
||||
).json()
|
||||
for rom in matched_roms:
|
||||
rom["url_cover"] = self._search_cover(rom["id"]).replace(
|
||||
"t_thumb", f"t_cover_big"
|
||||
)
|
||||
rom["url_screenshots"] = self._search_screenshots(rom["id"])
|
||||
rom["r_igdb_id"] = rom.pop("id")
|
||||
rom["r_slug"] = rom.pop("slug")
|
||||
rom["r_name"] = rom.pop("name")
|
||||
else:
|
||||
log.warning(f"{p_slug} is not supported!")
|
||||
return matched_roms
|
||||
def get_matched_roms(self, file_name: str, p_igdb_id: int):
|
||||
if not p_igdb_id:
|
||||
return []
|
||||
|
||||
matched_roms = requests.post(
|
||||
self.games_url,
|
||||
headers=self.headers,
|
||||
data=f"""
|
||||
search "{uc(get_search_term(file_name))}";
|
||||
fields id, slug, name, summary;
|
||||
where platforms=[{p_igdb_id}];
|
||||
""",
|
||||
).json()
|
||||
|
||||
return [
|
||||
dict(
|
||||
rom,
|
||||
url_cover=self._search_cover(rom["id"]).replace(
|
||||
"t_thumb", "t_cover_big"
|
||||
),
|
||||
url_screenshots=self._search_screenshots(rom["id"]),
|
||||
r_igdb_id=rom.pop("id"),
|
||||
r_slug=rom.pop("slug"),
|
||||
r_name=rom.pop("name"),
|
||||
)
|
||||
for rom in matched_roms
|
||||
]
|
||||
|
||||
|
||||
class TwitchAuth:
|
||||
def __init__(self) -> None:
|
||||
self.base_url: str = "https://id.twitch.tv/oauth2/token"
|
||||
self.token: str = ""
|
||||
self.token_checkout: int = int(time())
|
||||
self.SECURE_SECONDS_OFFSET: int = 10 # seconds offset to avoid invalid token
|
||||
self.token_valid_seconds: int = 0
|
||||
self.client_id: str = CLIENT_ID
|
||||
self.client_secret: str = CLIENT_SECRET
|
||||
self.base_url = "https://id.twitch.tv/oauth2/token"
|
||||
self.token = ""
|
||||
self.token_checkout = int(time())
|
||||
self.SECURE_SECONDS_OFFSET = 10 # seconds offset to avoid invalid token
|
||||
self.token_valid_seconds = 0
|
||||
self.client_id = CLIENT_ID
|
||||
self.client_secret = CLIENT_SECRET
|
||||
|
||||
def _is_token_valid(self) -> str:
|
||||
def _is_token_valid(self) -> bool:
|
||||
return (
|
||||
True
|
||||
if int(time()) + self.SECURE_SECONDS_OFFSET - self.token_checkout
|
||||
int(time()) + self.SECURE_SECONDS_OFFSET - self.token_checkout
|
||||
< self.token_valid_seconds
|
||||
else False
|
||||
)
|
||||
|
||||
def _update_twitch_token(self) -> str:
|
||||
def _update_twitch_token(self):
|
||||
res = requests.post(
|
||||
url=self.base_url,
|
||||
params={
|
||||
@@ -222,19 +234,22 @@ class TwitchAuth:
|
||||
"grant_type": "client_credentials",
|
||||
},
|
||||
).json()
|
||||
|
||||
self.token_checkout = int(time())
|
||||
try:
|
||||
self.token_valid_seconds = res["expires_in"]
|
||||
self.token = res["access_token"]
|
||||
log.info("Twitch token fetched!")
|
||||
except KeyError:
|
||||
self.token_valid_seconds = res.get("expires_in", 0)
|
||||
self.token = res.get("access_token", "")
|
||||
|
||||
if not self.token:
|
||||
log.error(
|
||||
"Could not get twitch auth token: check client_id and client_secret"
|
||||
)
|
||||
sys.exit(2)
|
||||
|
||||
log.info("Twitch token fetched!")
|
||||
|
||||
def get_oauth_token(self) -> str:
|
||||
if not self._is_token_valid():
|
||||
log.warning("Twitch token invalid: fetching a new one")
|
||||
log.warning("Twitch token invalid: fetching a new one...")
|
||||
self._update_twitch_token()
|
||||
|
||||
return self.token
|
||||
|
||||
1481
backend/handler/tests/cassettes/test_get_matched_roms.yaml
Normal file
1481
backend/handler/tests/cassettes/test_get_matched_roms.yaml
Normal file
File diff suppressed because it is too large
Load Diff
224
backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml
Normal file
224
backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml
Normal file
@@ -0,0 +1,224 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: fields slug, name, summary; where id=3340;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '42'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 3340,\n \"name\": \"Paper Mario\",\n \"slug\":
|
||||
\"paper-mario\",\n \"summary\": \"Paper Mario, a turn-based JRPG entry
|
||||
in the Mario franchise with a paper-based aesthetic and platforming elements,
|
||||
sees the titular character working his way through the Mushroom Kingdom\\u0027s
|
||||
diverse locales and biomes, meeting its inhabitants, fighthing unruly enemies
|
||||
and recruiting an array of companions in order to once again save Princess
|
||||
Peach from the clutches of the evil Koopa King Bowser.\"\n }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f8e8bc453f5-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=xtfZeK7uBDr86XujM6iIOQYiv3cNr.yyHfzPq6q.gQA-1690862548-0-Adn2oVSNHyz3zkUKoiYctDk401IEBYM1lCBJhYQLyvuwrkv8m0924r88Ey3L9jLjQN+9upnHofwB2UHJSUQ3S/c=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:28 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 ea419f8269940bd7231c70acd36c430c.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- oSeRLJDNh64iq4Oa7phTz1fEzWBmFr3j1sAcqWEL8ctCLWCnp1iMEA==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mJNHhpvHcFxCA=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '500'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
x-amzn-RequestId:
|
||||
- 9b7ad635-7643-44af-9987-c9fb2a458d90
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '28'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/covers/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 80830,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co1qda.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f8fb8fd36b5-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=yNJu1ibhp40_6PgfMgGYBiqNxKPrfsQFShgYpY4WxQM-1690862548-0-Af673p44x+pWQi71RPf/Zhg4rjs+sXc1QNcgrKNzIBarYDMUuZZERK32ZWOmLbsfhtCWvb8Nt8zRTTYz4oUbgDc=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:28 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 5fa5e473f638d77357bb0fccef4ca526.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- 8ITHHHNUbl01MAfMxeGtvTkhNVmfQdtfC3n-qu5uDaErnfSEEKCRyw==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mJPHKmPHcFUQQ=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '96'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
x-amzn-RequestId:
|
||||
- ff503170-c13e-4a2a-a198-9ca8efba711c
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340; limit 5;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '37'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/screenshots/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 24169,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/ig9ainu9fershqdinox1.jpg\"\n
|
||||
\ },\n {\n \"id\": 24168,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/hdxgs9nruycvrzcgvseu.jpg\"\n
|
||||
\ },\n {\n \"id\": 24171,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/kjnf90jnud6njmwto3th.jpg\"\n
|
||||
\ },\n {\n \"id\": 24170,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/jz66se3deczeta6hd4ys.jpg\"\n
|
||||
\ },\n {\n \"id\": 24167,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/a5r3k2lf3lgvifrycqeg.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f911f7da1ea-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=ELyvBYDrdPts7Yqom8z4cavFvX7vyy0VSh5m0XAHo3E-1690862548-0-AcSP+8MNTVBljob9DL6joLYyAmTvEqVm5O4CtgteK+7ffW0tQZp6urfN2FIcwgdsUK6a2isuKDoFjP5N84D90Jo=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:28 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 ae7bbb23871eba9dda7f1abdc6bacfa0.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- cElB3EVKq35RBD8P-iH1fs5r1TQFoEGXTShvRl-DqQufBz38-AmbDA==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '5'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mJSGLdPHcFylA=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '542'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:28 GMT
|
||||
x-amzn-RequestId:
|
||||
- 88315c38-509b-4718-a1f3-0b4c60adc236
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
1645
backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml
Normal file
1645
backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml
Normal file
File diff suppressed because it is too large
Load Diff
140
backend/handler/tests/cassettes/test_get_platform.yaml
Normal file
140
backend/handler/tests/cassettes/test_get_platform.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: fields id, name; where slug="n64";
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '34'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/platforms/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 4,\n \"name\": \"Nintendo 64\"\n }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efafe519dff36fa-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:28:51 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=ogRLRqNLcmzY9DuPASpJJgZP7GOQO7CzhkyaysJcWjE-1690860531-0-ARduDIuE+vLnjg/+BxKioPkiVn8IvsCy40FTHe5aWssHrRxze80F9ZmLKVBae2p+ziG0x8c81rNPOjNnQeqInio=;
|
||||
path=/; expires=Tue, 01-Aug-23 03:58:51 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 684b7c29b4b69bec2dc5afe5ef9c1c50.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- MCUfdjr5_Oa3JFybL0W1L3S4Lk0uOgLa3AgCYidvHZuywEONlKzuEw==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9hOGFFFvHcFa7Q=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '50'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:28:51 GMT
|
||||
x-amzn-RequestId:
|
||||
- 057e4982-ea50-4eba-8e2b-33d3b62e5500
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields id, name; where slug="not_real";
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '39'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/platforms/
|
||||
response:
|
||||
body:
|
||||
string: '[]'
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efafe52ec035485-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:28:51 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=8buhT4UoR0ySLoSLRnJgCt4tQOqiMrYn34dxSyZN4o4-1690860531-0-AX2HFUVAJ3Flj8uJauUGylBmi/nAxFqNougeTZdXaJViv3wumKplwUN6baGBeuDkm+4va5qx07vvCnKeC+ko8NM=;
|
||||
path=/; expires=Tue, 01-Aug-23 03:58:51 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 6477e7b623b71ec66bc28ed8e271db7e.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- jkLi93MCTST-3fs8nFUpKm-yPrWLxo9rtwYefCMiYMIObbST8bLE1w==
|
||||
X-Amz-Cf-Pop:
|
||||
- YTO50-P1
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '0'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9hOIE27vHcFT1Q=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '2'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:28:51 GMT
|
||||
x-amzn-RequestId:
|
||||
- ffb19bbc-123d-4bc3-a2d4-52640ffab302
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
486
backend/handler/tests/cassettes/test_get_rom.yaml
Normal file
486
backend/handler/tests/cassettes/test_get_rom.yaml
Normal file
@@ -0,0 +1,486 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: "\n search \"Paper Mario\";\n fields
|
||||
id, slug, name, summary, screenshots;\n where platforms=[4]
|
||||
;\n "
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '166'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 3340,\n \"name\": \"Paper Mario\",\n \"screenshots\":
|
||||
[\n 24167,\n 24168,\n 24169,\n 24170,\n 24171\n ],\n
|
||||
\ \"slug\": \"paper-mario\",\n \"summary\": \"Paper Mario, a turn-based
|
||||
JRPG entry in the Mario franchise with a paper-based aesthetic and platforming
|
||||
elements, sees the titular character working his way through the Mushroom
|
||||
Kingdom\\u0027s diverse locales and biomes, meeting its inhabitants, fighthing
|
||||
unruly enemies and recruiting an array of companions in order to once again
|
||||
save Princess Peach from the clutches of the evil Koopa King Bowser.\"\n },\n
|
||||
\ {\n \"id\": 257636,\n \"name\": \"Paper Mario TTYD64\",\n \"screenshots\":
|
||||
[\n 1093074,\n 1093075\n ],\n \"slug\": \"paper-mario-ttyd64\",\n
|
||||
\ \"summary\": \"TTYD64 is a PM64 romhack that adds TTYD\\u0027s gameplay
|
||||
into the original Paper Mario plus all new items, badges, and recipes from
|
||||
that game, and a lot of new areas to explore plus other additions.\"\n },\n
|
||||
\ {\n \"id\": 159343,\n \"name\": \"Paper Mario: Black Pit\",\n \"screenshots\":
|
||||
[\n 552543,\n 552544\n ],\n \"slug\": \"paper-mario-black-pit\",\n
|
||||
\ \"summary\": \"Paper Mario: Black Pit is a ROM hack/mod of Paper Mario
|
||||
64, developed by elDexter. It adds a new level layout to the game, based on
|
||||
roguelike mechanics.\"\n },\n {\n \"id\": 187873,\n \"name\": \"Paper
|
||||
Mario: Master Quest\",\n \"screenshots\": [\n 714703,\n 714704\n
|
||||
\ ],\n \"slug\": \"paper-mario-master-quest\",\n \"summary\": \"Paper
|
||||
Mario: Master Quest is a mod made for \\\"Paper Mario\\\" on the N64. It was
|
||||
created by Emperor_Thamz, Rainchus, JaThePlayer, and Brotenko. It revamps
|
||||
old content and adds plenty of new as well.\\nOften considered \\\"The Dark
|
||||
Souls of Paper Mario\\\", the mod is incredibly difficult.\"\n },\n {\n
|
||||
\ \"id\": 159325,\n \"name\": \"Paper Mario Multiplayer\",\n \"screenshots\":
|
||||
[\n 552513,\n 552514\n ],\n \"slug\": \"paper-mario-multiplayer\",\n
|
||||
\ \"summary\": \"Paper Mario Multiplayer is a ROM hack/mod of Paper Mario
|
||||
(Nintendo 64) developed by SKELUX which adds support for multiplayer, with
|
||||
the second player controlling Mario\\u0027s partner.\"\n },\n {\n \"id\":
|
||||
248349,\n \"name\": \"Paper Mario: Master Quest + Jr.\",\n \"screenshots\":
|
||||
[\n 1044412,\n 1044413,\n 1044414,\n 1044415\n ],\n
|
||||
\ \"slug\": \"paper-mario-master-quest-plus-jr\",\n \"summary\": \"Paper
|
||||
Mario: Master Quest is a mod made for \u201CPaper Mario\u201D on the N64.
|
||||
It revamps old content and adds plenty of new as well. Often considered \u201CThe
|
||||
Dark Souls of Paper Mario\u201D, the mod is incredibly difficult. It was designed
|
||||
with elite challenge runners in mind, and unless you have extensive knowledge
|
||||
of Paper Mario, you may struggle with much of the content.\\n\\nFor those
|
||||
players there is Paper Mario: Master Quest Jr. which has all of the content
|
||||
the original has, with a much more reasonable difficulty curve. If you want
|
||||
to stream the mod, starting with Jr. is recommended.\"\n },\n {\n \"id\":
|
||||
186399,\n \"name\": \"The Paper Mario Christmas Special\",\n \"screenshots\":
|
||||
[\n 705997,\n 705998\n ],\n \"slug\": \"the-paper-mario-christmas-special\",\n
|
||||
\ \"summary\": \"Paper Mario Christmas Special is a ROM Hack of Paper Mario.
|
||||
It was developed by Rain, Alex, Fish, Fewffwa, and Den of the Paper Mario
|
||||
Modding Discord.\"\n },\n {\n \"id\": 245039,\n \"name\": \"Paper
|
||||
Mario Eggstraordinary Egg Hunt\",\n \"screenshots\": [\n 1030891\n
|
||||
\ ],\n \"slug\": \"paper-mario-eggstraordinary-egg-hunt\",\n \"summary\":
|
||||
\"Join Mario \\u0026 Luigi for the annual Easter Egg Hunt in Toad Town and
|
||||
close regions like Koopa Village and Shooting Star Summit!\\n\\nA Paper Mario
|
||||
Mod made by BOSS05 / Miigle and Den / DenNya as a easter present for the Paper
|
||||
Mario Modding Community.\"\n },\n {\n \"id\": 155012,\n \"name\":
|
||||
\"Bowser\\u0027s Dark Story\",\n \"screenshots\": [\n 689665\n ],\n
|
||||
\ \"slug\": \"bowsers-dark-story\",\n \"summary\": \"Bowser\\u0027s Dark
|
||||
Story is a ROM hack/mod of Paper Mario. The game is an alternative take on
|
||||
the story, from the perspective that tells how it would be if Bowser won against
|
||||
Mario and conquered the Mushroom Kingdom. The player controls the villain,
|
||||
Bowser, through an adventure, finding allies and battling enemies.\"\n }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fb27c3e36aa-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Length:
|
||||
- '1595'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:38 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=tYA7FoYlhkvK11e1rJDYoJt29z8zKtCvnmg8sPCYy_w-1690861898-0-ASwvhl+zouXVmGAkLbYiKnPdKOQ6xYLcGnBq1drKyeM+YI3JH1+pcgdQL83tpDQiC5tG4Nz5FxYZq6Vn+7hyogM=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:38 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 9b4f2014232c90b3056e1fb1e00215fc.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- EA2iGalDUXwdsoMCIP37qOnRHah6i_BN6JQldcQlsMh01zmE-ekC0g==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '9'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kjtGKUPHcF1UA=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '1595'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:38 GMT
|
||||
x-amzn-RequestId:
|
||||
- 30db0468-6dbe-405c-90ff-e093ab4278b3
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '28'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/covers/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 80830,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co1qda.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fb3ddbc3972-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=FebkrRmEuOVhHBzP67Y1M.MHYCqs2.KHGanFcKnJwtY-1690861899-0-Aa3c0EjIqiyw9FVxJ+xIDPLINDtXRrbCILNW1XwQdTvepDk4De9O/h9jUlQOGkLqjUP9rj9p/YqiVUyFZ+bUB8g=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:39 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 8dc256e43720ba0f5d01b9e6cd4ce544.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- 1scVQqMoUooKOfXS0lws7_9VyShFnWjK7DuktBdhV1zhXFZHvD7d2Q==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kjxG6QvHcFSow=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '96'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
x-amzn-RequestId:
|
||||
- 72a26163-8ddb-404e-b38b-53000cb45683
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340; limit 5;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '37'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/screenshots/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 24169,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/ig9ainu9fershqdinox1.jpg\"\n
|
||||
\ },\n {\n \"id\": 24167,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/a5r3k2lf3lgvifrycqeg.jpg\"\n
|
||||
\ },\n {\n \"id\": 24168,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/hdxgs9nruycvrzcgvseu.jpg\"\n
|
||||
\ },\n {\n \"id\": 24171,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/kjnf90jnud6njmwto3th.jpg\"\n
|
||||
\ },\n {\n \"id\": 24170,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/jz66se3deczeta6hd4ys.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fb65cd639de-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=qfMe0jDOv8xQfLkSSinTP1gVgDoHSboKutTITBGpNko-1690861899-0-ASgSGgVP6uJf8v+WMpKmHJzoUWQgZ0ggJp/UtHk44GLjV53xbwto6jGb1TuvlSE/58hv51O2kP5w04/7tZ+c3Ug=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:39 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 6f5a63f08c741820abad2a0b2a35176c.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- HygNsNp7_JpnKV9rmFiS3LOxgPhY6PeuZCZyiFWIlA55KduOoFh41Q==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '5'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kjzFzpvHcFwHQ=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '542'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
x-amzn-RequestId:
|
||||
- dbb64f4c-cda6-4e13-985c-4fc3341a7aa7
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: "\n search \"Not a real game title\";\n fields
|
||||
id, slug, name, summary, screenshots;\n where platforms=[4]
|
||||
;\n "
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '176'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: '[]'
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fb8da23a1ec-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=RG06o5ZAUvWQyEzHnXvfRVTloGQS83LkqSsc5UQNcb8-1690861899-0-AdCsYBB6/xTNt5afaJTa5HAx3kvwaVLUeZzBPCxKX8CoLDQnkI2/evtllKYoNFDCkF+IJbeIgVY7BvVoq9hAKWE=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:39 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 de0a592002999100a0085e087a370864.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- setlZZdf1Scj7w0ozugKvNf9nIFZ5p-VdxGYCOZmXlhR_Ld3q0tOdw==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '0'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kj5GR3PHcFzLQ=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '2'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:39 GMT
|
||||
x-amzn-RequestId:
|
||||
- 929c1657-ed53-4ddf-b7a3-3910fb3c570b
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: "\n search \"Not a real game title\";\n fields
|
||||
id, slug, name, summary, screenshots;\n where platforms=[4]
|
||||
& category=10;\n "
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '189'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: '[]'
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fbad99c38e1-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:40 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=p3M51f.3s3v0XVTOYUcs8CgZzgsK7h660K1uoCEvmt8-1690861900-0-AWjW0oaIJvojYqMLrDZP4VXSXX0zN4XNn8Aq4QSVIybhc6K4bAlSG/1A4pW7+YlRqpZ2g/LLyUYdydm0lq0DK94=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:40 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 238ef6b7fcc1fd30826738c560d235e0.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- m4ZjInTbkJ3_eFzi0xUOsrCIiE0DoMdaFP7WH5ePbpVd3isKHXOhIg==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '0'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kj7E5EPHcFkrg=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '2'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:40 GMT
|
||||
x-amzn-RequestId:
|
||||
- 9e50a8b9-3d3e-427c-96a6-6c15255cd97a
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: "\n search \"Not a real game title\";\n fields
|
||||
id, slug, name, summary, screenshots;\n where platforms=[4]
|
||||
;\n "
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '176'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: '[]'
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb1fbc1b1439e3-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 03:51:40 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=U3ZQXP_dXJL0kmdH0AIGc7JuaJQkf7mdnSEgrTbI8I4-1690861900-0-ARqes4hdr46xpGPIGkKXMnFhNlGvzKiETWH/8D+B/lA0xZhJs5QjGhkrZ9xLcivT5UxjXHl1Q81KyYhNAKKlmyU=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:21:40 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 2b26355dcf9bbc955d60730f6007457c.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- 0_vqElusi94bElcjGQTL9WOQWTeXGfgaNzlsVsOWIco8jf68DQpm6A==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '0'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9kj-F3svHcFgag=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '2'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 03:51:40 GMT
|
||||
x-amzn-RequestId:
|
||||
- 268c4d22-166e-4591-b866-90f1068f8d33
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
292
backend/handler/tests/cassettes/test_get_rom_by_id.yaml
Normal file
292
backend/handler/tests/cassettes/test_get_rom_by_id.yaml
Normal file
@@ -0,0 +1,292 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: fields slug, name, summary; where id=3340;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '42'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 3340,\n \"name\": \"Paper Mario\",\n \"slug\":
|
||||
\"paper-mario\",\n \"summary\": \"Paper Mario, a turn-based JRPG entry
|
||||
in the Mario franchise with a paper-based aesthetic and platforming elements,
|
||||
sees the titular character working his way through the Mushroom Kingdom\\u0027s
|
||||
diverse locales and biomes, meeting its inhabitants, fighthing unruly enemies
|
||||
and recruiting an array of companions in order to once again save Princess
|
||||
Peach from the clutches of the evil Koopa King Bowser.\"\n }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f259ab73870-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:11 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=i1hnIQq6bEFhrB2wW7JvWnYsLWIqXJLP9Jn16rgAY1w-1690862531-0-AYORyWCnwE/sCsm1RJBSMdbevZODJ3XvSL06vzGQSPfSLWewPhrhcTPYtjjAYY4uVWdiWtlhNa15RBhDTPD3S7Y=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:11 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 a809017c4252ec777a5d97cf31a304ca.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- iCVEVASOjkhjT0cQgtwNq0crI1ss_8nxlIDvKL23G77DeF0q7UQodA==
|
||||
X-Amz-Cf-Pop:
|
||||
- ORD51-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mGmHwuPHcF2KA=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '500'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:11 GMT
|
||||
x-amzn-RequestId:
|
||||
- 3cb33f97-7ad8-4c7b-a60f-6c5bf5f73b9f
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '28'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/covers/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 80830,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co1qda.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f27ab6b36ab-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:11 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=ZRpxsQoxQ.HQInPWr4VEQ9brPyqcESO99fIHGQgAHlU-1690862531-0-AbmRtWRInI30r/HsyVkRxrj7aUTYZgNklYyth2oSTTZgATrTCIXYTODot3L2TeyBVb6h/6VDnIKozYHkTb681oo=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:11 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 ea419f8269940bd7231c70acd36c430c.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- e1xv9uKddvoJLnXLASmmYRxGa2VgGp0PuSZ8io9Io-uZ_Vj0jrRHHw==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '1'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mGpErpvHcFSGQ=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '96'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:11 GMT
|
||||
x-amzn-RequestId:
|
||||
- 544f3939-7665-4d02-af04-680d7599d0d0
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields url; where game=3340; limit 5;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '37'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/screenshots/
|
||||
response:
|
||||
body:
|
||||
string: "[\n {\n \"id\": 24169,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/ig9ainu9fershqdinox1.jpg\"\n
|
||||
\ },\n {\n \"id\": 24167,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/a5r3k2lf3lgvifrycqeg.jpg\"\n
|
||||
\ },\n {\n \"id\": 24168,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/hdxgs9nruycvrzcgvseu.jpg\"\n
|
||||
\ },\n {\n \"id\": 24171,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/kjnf90jnud6njmwto3th.jpg\"\n
|
||||
\ },\n {\n \"id\": 24170,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/jz66se3deczeta6hd4ys.jpg\"\n
|
||||
\ }\n]"
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f290e18a217-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Encoding:
|
||||
- gzip
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:12 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=EJdO3isAaJKcMeRXmcpkDHGzRtf84ozt_8U5533aulQ-1690862532-0-AVrDAo5KNUkaxQaTm8cMRdJyEuas79edlHrvJnJM+hOnOyHFgxbG111AXMb7ERhb4wmV9d19adlJyyfbs+x//gc=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:12 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Transfer-Encoding:
|
||||
- chunked
|
||||
Via:
|
||||
- 1.1 5fa5e473f638d77357bb0fccef4ca526.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- J5OvOqDUVGCxwmEhjXXyYsRQCwTUfmwgyErgvio59zTrJGWR8N6uXQ==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '5'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mGsGw8PHcF8aQ=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '542'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:12 GMT
|
||||
x-amzn-RequestId:
|
||||
- 8168b675-4621-40e5-91ec-b042cebc7dfb
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
- request:
|
||||
body: fields slug, name, summary; where id=-1;
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Authorization:
|
||||
- Bearer xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Client-ID:
|
||||
- xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '40'
|
||||
User-Agent:
|
||||
- python-requests/2.31.0
|
||||
method: POST
|
||||
uri: https://api.igdb.com/v4/games/
|
||||
response:
|
||||
body:
|
||||
string: '[]'
|
||||
headers:
|
||||
CF-Cache-Status:
|
||||
- DYNAMIC
|
||||
CF-RAY:
|
||||
- 7efb2f2b8feaa1e6-YYZ
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '2'
|
||||
Content-Type:
|
||||
- application/json
|
||||
Date:
|
||||
- Tue, 01 Aug 2023 04:02:12 GMT
|
||||
Server:
|
||||
- cloudflare
|
||||
Set-Cookie:
|
||||
- __cf_bm=cAyTHDqftrQxH5Z3aRJHN1p.yQspBQkbZ2cbiAhy5QU-1690862532-0-AUabkaAZQnn/lqEyNlFeakrJXyr9Kc+fMb+5G1ikER0JscWmu5mWg/JCnHVg1+5U7UYOhVR+eU+lFtGnZqybYhk=;
|
||||
path=/; expires=Tue, 01-Aug-23 04:32:12 GMT; domain=.igdb.com; HttpOnly; Secure;
|
||||
SameSite=None
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000; includeSubDomains; preload
|
||||
Via:
|
||||
- 1.1 ae7bbb23871eba9dda7f1abdc6bacfa0.cloudfront.net (CloudFront)
|
||||
X-Amz-Cf-Id:
|
||||
- l4vuNKT3tVbbwCD55voSuiHCPxDMw9RB0bvrMfu51uyiOOGKsgLMlA==
|
||||
X-Amz-Cf-Pop:
|
||||
- YUL62-C2
|
||||
X-Cache:
|
||||
- Miss from cloudfront
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Count:
|
||||
- '0'
|
||||
alt-svc:
|
||||
- h3=":443"; ma=86400
|
||||
x-amz-apigw-id:
|
||||
- I9mGwFWGPHcFQDA=
|
||||
x-amzn-Remapped-Content-Length:
|
||||
- '2'
|
||||
x-amzn-Remapped-Date:
|
||||
- Tue, 01 Aug 2023 04:02:12 GMT
|
||||
x-amzn-RequestId:
|
||||
- ba25354a-8333-4029-9d1f-35203c031ed7
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
84
backend/handler/tests/test_igdb_handler.py
Normal file
84
backend/handler/tests/test_igdb_handler.py
Normal file
@@ -0,0 +1,84 @@
|
||||
from handler.igdb_handler import IGDBHandler, TwitchAuth
|
||||
import pytest
|
||||
|
||||
igdbh = IGDBHandler()
|
||||
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_platform():
|
||||
platform = igdbh.get_platform("n64")
|
||||
assert platform["igdb_id"] == 4
|
||||
assert platform["name"] == "Nintendo 64"
|
||||
assert platform["slug"] == "n64"
|
||||
|
||||
platform = igdbh.get_platform("not_real")
|
||||
assert platform == {}
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_rom():
|
||||
rom = igdbh.get_rom("Paper Mario (USA).n64", 4)
|
||||
assert rom["r_igdb_id"] == 3340
|
||||
assert rom["r_slug"] == "paper-mario"
|
||||
assert rom["r_name"] == "Paper Mario"
|
||||
assert rom["summary"]
|
||||
assert "images.igdb.com" in rom["url_cover"]
|
||||
assert "images.igdb.com" in rom["url_screenshots"][0]
|
||||
|
||||
rom = igdbh.get_rom("Not a real game title", 4)
|
||||
assert rom == {}
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_rom_by_id():
|
||||
rom = igdbh.get_rom_by_id(3340)
|
||||
assert rom["r_igdb_id"] == 3340
|
||||
assert rom["r_slug"] == "paper-mario"
|
||||
assert rom["r_name"] == "Paper Mario"
|
||||
assert rom["summary"]
|
||||
assert "images.igdb.com" in rom["url_cover"]
|
||||
assert "images.igdb.com" in rom["url_screenshots"][0]
|
||||
|
||||
rom = igdbh.get_rom_by_id(-1)
|
||||
assert rom == {}
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_matched_roms_by_id():
|
||||
roms = igdbh.get_matched_roms_by_id(3340)
|
||||
assert len(roms) == 1
|
||||
|
||||
assert roms[0]["r_igdb_id"] == 3340
|
||||
assert roms[0]["r_slug"] == "paper-mario"
|
||||
assert "t_cover_big" in roms[0]["url_cover"]
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_matched_roms_by_name():
|
||||
roms = igdbh.get_matched_roms_by_name("Mario", 4)
|
||||
assert len(roms) == 10
|
||||
|
||||
assert roms[0]["r_igdb_id"] == 132642
|
||||
assert roms[0]["r_slug"] == "super-mario-64-shindou-pak-taiou-version"
|
||||
assert roms[0]["r_name"] == "Super Mario 64: Shindou Pak Taiou Version"
|
||||
|
||||
assert roms[1]["r_igdb_id"] == 3475
|
||||
assert roms[1]["r_slug"] == "dr-mario-64"
|
||||
assert roms[1]["r_name"] == "Dr. Mario 64"
|
||||
|
||||
roms = igdbh.get_matched_roms_by_name("Notarealgametitle", 4)
|
||||
assert roms == []
|
||||
|
||||
@pytest.mark.vcr()
|
||||
def test_get_matched_roms():
|
||||
roms = igdbh.get_matched_roms("Paper Mario (USA).n64", 4)
|
||||
assert len(roms) == 9
|
||||
|
||||
assert roms[0]["r_igdb_id"] == 3340
|
||||
assert roms[0]["r_slug"] == "paper-mario"
|
||||
assert roms[0]["r_name"] == "Paper Mario"
|
||||
assert roms[0]["summary"]
|
||||
assert "images.igdb.com" in roms[0]["url_cover"]
|
||||
assert "images.igdb.com" in roms[0]["url_screenshots"][0]
|
||||
|
||||
roms = igdbh.get_matched_roms("Paper Mario (USA).n64", None)
|
||||
assert roms == []
|
||||
|
||||
roms = igdbh.get_matched_roms("Notarealgametitle", 4)
|
||||
assert roms == []
|
||||
@@ -1,3 +1,3 @@
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import declarative_base
|
||||
|
||||
BaseModel = declarative_base()
|
||||
|
||||
287
poetry.lock
generated
287
poetry.lock
generated
@@ -613,6 +613,89 @@ files = [
|
||||
[package.dependencies]
|
||||
traitlets = "*"
|
||||
|
||||
[[package]]
|
||||
name = "multidict"
|
||||
version = "6.0.4"
|
||||
description = "multidict implementation"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
|
||||
{file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
|
||||
{file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
|
||||
{file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
|
||||
{file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
|
||||
{file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
|
||||
{file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "23.1"
|
||||
@@ -840,6 +923,21 @@ pytest = ">=7.3.1"
|
||||
[package.extras]
|
||||
test = ["coverage (>=7.2.7)", "pytest-mock (>=3.10)"]
|
||||
|
||||
[[package]]
|
||||
name = "pytest-vcr"
|
||||
version = "1.0.2"
|
||||
description = "Plugin for managing VCR.py cassettes"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "pytest-vcr-1.0.2.tar.gz", hash = "sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896"},
|
||||
{file = "pytest_vcr-1.0.2-py2.py3-none-any.whl", hash = "sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pytest = ">=3.6.0"
|
||||
vcrpy = "*"
|
||||
|
||||
[[package]]
|
||||
name = "python-dateutil"
|
||||
version = "2.8.2"
|
||||
@@ -1207,6 +1305,22 @@ h11 = ">=0.8"
|
||||
[package.extras]
|
||||
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
|
||||
|
||||
[[package]]
|
||||
name = "vcrpy"
|
||||
version = "5.1.0"
|
||||
description = "Automatically mock your HTTP interactions to simplify and speed up testing"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "vcrpy-5.1.0-py2.py3-none-any.whl", hash = "sha256:605e7b7a63dcd940db1df3ab2697ca7faf0e835c0852882142bafb19649d599e"},
|
||||
{file = "vcrpy-5.1.0.tar.gz", hash = "sha256:bbf1532f2618a04f11bce2a99af3a9647a32c880957293ff91e0a5f187b6b3d2"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
PyYAML = "*"
|
||||
wrapt = "*"
|
||||
yarl = "*"
|
||||
|
||||
[[package]]
|
||||
name = "wcwidth"
|
||||
version = "0.2.6"
|
||||
@@ -1297,7 +1411,178 @@ files = [
|
||||
{file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wrapt"
|
||||
version = "1.15.0"
|
||||
description = "Module for decorators, wrappers and monkey patching."
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||
files = [
|
||||
{file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"},
|
||||
{file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"},
|
||||
{file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"},
|
||||
{file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"},
|
||||
{file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"},
|
||||
{file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"},
|
||||
{file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"},
|
||||
{file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"},
|
||||
{file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"},
|
||||
{file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"},
|
||||
{file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yarl"
|
||||
version = "1.9.2"
|
||||
description = "Yet another URL library"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"},
|
||||
{file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"},
|
||||
{file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"},
|
||||
{file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"},
|
||||
{file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"},
|
||||
{file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"},
|
||||
{file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
idna = ">=2.0"
|
||||
multidict = ">=4.0"
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "fdce215f954e232e1e650bb8c8a8c9a49c9eb16ba0468abb0282831636fb6b36"
|
||||
content-hash = "897d3d7a13b638d6f80acc6087f5d4f31e200740ce9f77e9f9b0bb6fa9f336d9"
|
||||
|
||||
@@ -25,6 +25,7 @@ sqlakeyset = "^2.0.1684285512"
|
||||
pydash = "^7.0.6"
|
||||
pytest = "^7.4.0"
|
||||
pytest-env = "^0.8.2"
|
||||
pytest-vcr = "^1.0.2"
|
||||
|
||||
|
||||
[build-system]
|
||||
|
||||
@@ -5,4 +5,3 @@ env =
|
||||
DB_NAME=romm_test
|
||||
DB_USER=romm_test
|
||||
DB_PASSWD=passwd
|
||||
|
||||
|
||||
Reference in New Issue
Block a user