From ebe557c6f03501f5a9a855c76c92737be56d128b Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Tue, 1 Aug 2023 00:16:51 -0400 Subject: [PATCH] Refactor + add tests for igdb handler --- backend/endpoints/search.py | 6 +- backend/handler/igdb_handler.py | 225 +-- .../cassettes/test_get_matched_roms.yaml | 1481 +++++++++++++++ .../test_get_matched_roms_by_id.yaml | 224 +++ .../test_get_matched_roms_by_name.yaml | 1645 +++++++++++++++++ .../tests/cassettes/test_get_platform.yaml | 140 ++ .../handler/tests/cassettes/test_get_rom.yaml | 486 +++++ .../tests/cassettes/test_get_rom_by_id.yaml | 292 +++ backend/handler/tests/test_igdb_handler.py | 84 + backend/models/base.py | 2 +- poetry.lock | 287 ++- pyproject.toml | 1 + pytest.ini | 1 - 13 files changed, 4762 insertions(+), 112 deletions(-) create mode 100644 backend/handler/tests/cassettes/test_get_matched_roms.yaml create mode 100644 backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml create mode 100644 backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml create mode 100644 backend/handler/tests/cassettes/test_get_platform.yaml create mode 100644 backend/handler/tests/cassettes/test_get_rom.yaml create mode 100644 backend/handler/tests/cassettes/test_get_rom_by_id.yaml create mode 100644 backend/handler/tests/test_igdb_handler.py diff --git a/backend/endpoints/search.py b/backend/endpoints/search.py index cbb9b0d4e..73ab2c896 100644 --- a/backend/endpoints/search.py +++ b/backend/endpoints/search.py @@ -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:") diff --git a/backend/handler/igdb_handler.py b/backend/handler/igdb_handler.py index e0b694f83..971c3a9ca 100644 --- a/backend/handler/igdb_handler.py +++ b/backend/handler/igdb_handler.py @@ -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 diff --git a/backend/handler/tests/cassettes/test_get_matched_roms.yaml b/backend/handler/tests/cassettes/test_get_matched_roms.yaml new file mode 100644 index 000000000..2c8447d04 --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_matched_roms.yaml @@ -0,0 +1,1481 @@ +interactions: +- request: + body: "\n search \"Paper Mario \";\n fields id, + slug, name, summary;\n where platforms=[4];\n " + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '137' + 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 {\n \"id\": + 257636,\n \"name\": \"Paper Mario TTYD64\",\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 \"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 \"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 + \ \"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 \"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 + \ \"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 \"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 \"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: + - 7efb43929d8f3a00-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Length: + - '1461' + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:08 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=GYeUripn0YGPjhopFH7y3zLWOAIMipE9INMi1Tvc7cs-1690863368-0-AcoJBiDgRqLKxwv1ZC1tqsDaydwR7vHiVJDvfYANs9cRT5BuZ0i5AHt2cgxTa/T3NhIUkbtHeOj/gRI7Y0q8Lok=; + path=/; expires=Tue, 01-Aug-23 04:46:08 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Via: + - 1.1 1469d4976bc2a36b5840519c9e3dbad6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - UlfsArYIK2BjqBBCIs1xuNmVTBi_didAPDjknDPLy0S-VKsPklNKpg== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '9' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJUG5zvHcF3gg= + x-amzn-Remapped-Content-Length: + - '1461' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:08 GMT + x-amzn-RequestId: + - 2a013082-f91f-4384-9c8e-5cbe4d6dd9ba + 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: + - 7efb4393ceb253dd-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:08 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=czKZHQUzv.Bg5tlH6uWj8r0_3lUACKEA_C5pd5khC94-1690863368-0-ASpscyxrIl9EFcxY+bHR1KURHohB7fdQEAKapbf1fklLvJU69hHqMMHkZtNp2vcxC5rmPxSeNZ/6HB+UFeOiBZE=; + path=/; expires=Tue, 01-Aug-23 04:46:08 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: + - Jwa6vXPGqe4v7nsS4r4ZIuGQtcYqYvUTgEXakknswAfUvQAyOnkWyQ== + 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: + - I9oJWHrYPHcFoEg= + x-amzn-Remapped-Content-Length: + - '96' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:08 GMT + x-amzn-RequestId: + - 197db96b-9f5e-4cb6-bad2-17c1590cb200 + 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: + - 7efb439558a236d3-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:08 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=Hu6z07DRLy2CyjpAWIKXbiJ6yfUSqRa.8QrWODQv14s-1690863368-0-AbqBnLwrklVyazlpeE9EU1cFQixlobDwC3m6CtZ4n03WwZvaHBnQhH6gyP2GO9079b9xbM9Ls7YavVNfH1Y96dk=; + path=/; expires=Tue, 01-Aug-23 04:46:08 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 f92b450b48c98e711c027c1986c59944.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - D-OPYGGWU-p4AWGaa_8VGRhcsBngE0cCulEZgukRV2WNXJcGvT3wQQ== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '5' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJZGrwvHcFRkA= + x-amzn-Remapped-Content-Length: + - '542' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:08 GMT + x-amzn-RequestId: + - 57eb446f-d727-446b-bb70-581b3983ad8f + status: + code: 200 + message: OK +- request: + body: fields url; where game=257636; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 317813,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6t85.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43987fbc3773-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:09 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=3UNCqRF0IL4oB0KKt_s2bAGk1rlZgLPW_8YBHPWiDzE-1690863369-0-AS7gEQomab+qRM81wnG95gWUfwISBnf1texxL13C/enP0Whj0E2NDf0ng6Iubesd9c4OUVPwLl7hwCt2ywr8Bts=; + path=/; expires=Tue, 01-Aug-23 04:46:09 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 d7e35fb15b3339fbd8a9457f22308ea0.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - lL2BBB07TWQlDMqPgmAhufdH1CgXHqichbhwlEHAoiGWw4n_sUs-Xw== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJeEcSPHcF4FA= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:09 GMT + x-amzn-RequestId: + - f91b6796-6da4-4b08-84b6-102eac9ebef3 + status: + code: 200 + message: OK +- request: + body: fields url; where game=257636; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 1093075,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scnff7.jpg\"\n + \ },\n {\n \"id\": 1093074,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scnff6.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb439b1e3439dd-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:09 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=72hco49n5BwtCxKKW7R.y3yG2cy2S6L3choKmecwuo8-1690863369-0-ASMZeHVqlJofOeg6UEOagO6e1nqCzPGuyeDrdi8qrpl+0a1M5N1eVtYZxUDNt6mfBENHpB+pjMmilo/1/CG6vP0=; + path=/; expires=Tue, 01-Aug-23 04:46:09 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 1469d4976bc2a36b5840519c9e3dbad6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - KBdHkbZtzxZOkya8wxwzT-UnmZ2InfQRezBHQuXDCOOQfNLWfSiOvQ== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '2' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJhGA2PHcFhow= + x-amzn-Remapped-Content-Length: + - '194' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:09 GMT + x-amzn-RequestId: + - 3df422f3-9593-4673-abc5-18e2da52b52d + status: + code: 200 + message: OK +- request: + body: fields url; where game=159343; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 162594,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co3hgi.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb439d9f3736fa-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:10 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=ohLocjpKGJfluxzZEznXhthRC_ELN.vGrUmv02UkDz4-1690863370-0-AWIZ4fWZ7FPF4Bmebn/QFF5SWJ2LRDuSsxKCRM/lAspBLKIQcswK1ear1NPeJ7kD2q0RusPg8lbqPhSnsMtcHhQ=; + path=/; expires=Tue, 01-Aug-23 04:46:10 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 875d50fae2ec2fc798461398e3cf2a5a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - pkh1mGp1hfTHcSkMTbI3M9WsvW0IX46V8KsVD83iiL6rnGq7S25Nig== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJmEN9vHcFyJg= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:10 GMT + x-amzn-RequestId: + - 568e02fd-5ee1-4387-be14-c9fb1758ecb1 + status: + code: 200 + message: OK +- request: + body: fields url; where game=159343; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 552543,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scbucf.jpg\"\n + \ },\n {\n \"id\": 552544,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scbucg.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43a01dcf39f6-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:10 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=jjlTVA.8CUq7CZqsgEGGQ3UZScEIjK_P30um0Z8B7NY-1690863370-0-AeNKouEjp8bj5wX45gvOvXRE/FX/ACmjdcRU95xhORBHyuRF44k3qUMz0+gKkVKkBPgKoN0WSvqnm+LwCvQqMhk=; + path=/; expires=Tue, 01-Aug-23 04:46:10 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 1469d4976bc2a36b5840519c9e3dbad6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 8Yb82wdbaKAsKwXLWwEcyPCeeTm8pkyUFHiChwQdD5ohRjZVfy6CSw== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '2' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJqHHSvHcF81g= + x-amzn-Remapped-Content-Length: + - '192' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:10 GMT + x-amzn-RequestId: + - 93ec81b1-52d0-4a76-b449-2a49dc20fd6c + status: + code: 200 + message: OK +- request: + body: fields url; where game=187873; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 302664,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6hjc.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43a2abb9a21c-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:10 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=0XKp8nM7JHYnNbKReUK6F0Xdg3ur5jQYHmhyfnKeL8k-1690863370-0-AfrBNeia2U1JzzBbt0OmKfciEV/dU8ewh9x15JGcuOMmjMiTRKhz78ACCjNc2N1ETzU1whkap56lH5/kJbRXnCE=; + path=/; expires=Tue, 01-Aug-23 04:46:10 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: + - zz7IvgDxJTVff1EUbejcaQFcLDHXyU0bLZet4TOjsivAVODIrFcj9g== + 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: + - I9oJvHtEvHcFfJQ= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:10 GMT + x-amzn-RequestId: + - d3bc09ab-d0f6-493d-84d7-32d0af32a019 + status: + code: 200 + message: OK +- request: + body: fields url; where game=187873; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 714704,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scfbgw.jpg\"\n + \ },\n {\n \"id\": 714703,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scfbgv.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43a5a80f38e2-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:11 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=uShERsABORJIRQQ76as2Yy2cyBOajuMzDFdqAjehtfE-1690863371-0-Afv4clHtmFrtWvySAaKbfn935mdj1j/wKZn4pK6FZPkSUWDZGmIVIQXrv5T44TR5FNuR6FbDUMsyhXV2JQ/sMqs=; + path=/; expires=Tue, 01-Aug-23 04:46:11 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 d7e35fb15b3339fbd8a9457f22308ea0.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - MrQxDfZNL-BHHpI0BclzlLGEuwFxSTr6SI4MABra_CDGjteMfNqPuw== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '2' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJyGz6vHcFi7g= + x-amzn-Remapped-Content-Length: + - '192' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:11 GMT + x-amzn-RequestId: + - 26242736-d40d-4b92-af58-8710f6f9087d + status: + code: 200 + message: OK +- request: + body: fields url; where game=159325; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 162585,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co3hg9.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43a829c339d5-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:11 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=ZFtuSOSAD3rQ.UvUqZGxTNASThSxb9B5uz4DoHKWKy0-1690863371-0-AUh4y70WRFD6dWJitp5IR6BXuJtt7dM+ehoJ4J3faRbCRbKrFHbL+0oF0HSUDanZtmT5lsU9WK1A7AkSD/OkteI=; + path=/; expires=Tue, 01-Aug-23 04:46:11 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 f92b450b48c98e711c027c1986c59944.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - h3qpu6rGhWNAKZPXNXCAovFfE6SLt3_iLKxHFCIncRmbpU1VCD-gwQ== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJ3FHtPHcF8aw= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:11 GMT + x-amzn-RequestId: + - d8d0bddc-082e-40e2-a7b8-656a42515661 + status: + code: 200 + message: OK +- request: + body: fields url; where game=159325; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 552513,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scbubl.jpg\"\n + \ },\n {\n \"id\": 552514,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scbubm.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43aa4cc6a1f8-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:12 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=Ru.yXZAZHjVFgOXqrXg8fcHzQBMTAMgnuoBxvd14CAY-1690863372-0-AURWMASariDFrO8UMYU3PDXn/klKUxk0maYmTHVAWQD/IJHhMTOwSUdES3lPw92W2KOBLlTZJ7dEQTuXjc7URuk=; + path=/; expires=Tue, 01-Aug-23 04:46:12 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 c83536c4e12f4a229fa27266fc5fdd56.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - csk5xMLD7LRQ1rqmXkNEPGt75UH1RhqQC3b06Hn0YklEahSR9RvNUQ== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '2' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oJ8FYLvHcFywg= + x-amzn-Remapped-Content-Length: + - '192' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:12 GMT + x-amzn-RequestId: + - 56620ce8-df6a-4f5e-86ec-37e8204530a0 + status: + code: 200 + message: OK +- request: + body: fields url; where game=248349; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 302670,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6hji.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43adac435401-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:12 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=XlRptgMn3fwG5mB4OAU33yJlC5DrgO6pCEVxlYawRPo-1690863372-0-Af00KJipvb3qhnuHZL/Fm9XJdRR/VC2zg8j/xpnsL+pAWdVnRzFFYxCGVaGYANTZm7vDcwde/G21uqPMBEVzj4I=; + path=/; expires=Tue, 01-Aug-23 04:46:12 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 5632fe5930775cf7bdf993a5c3c6fa2e.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - bDD7DPiYUXV4H62fmV7Z4vMqK1XCT8gjsUcqrgauDZn1RBKP9CavMg== + 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: + - I9oKAEdAPHcFxww= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:12 GMT + x-amzn-RequestId: + - eaa5fdae-6546-4179-b1d2-4b3e03455e74 + status: + code: 200 + message: OK +- request: + body: fields url; where game=248349; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 1044412,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scmdvg.jpg\"\n + \ },\n {\n \"id\": 1044413,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scmdvh.jpg\"\n + \ },\n {\n \"id\": 1044415,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scmdvj.jpg\"\n + \ },\n {\n \"id\": 1044414,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scmdvi.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43afbac639db-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:13 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=qYdKq7dVsnBhXp5HxO0ESFIwhoueU7_E3BMkXdmppNI-1690863373-0-AQjW9qYw5gsgvvqjPHzDRmLs0YAWOof5omfEx23vGRJ5/2kQMKbLg1zm/uwD2Tx+AHJ3YozOtBP6qziYFouvmLA=; + path=/; expires=Tue, 01-Aug-23 04:46:13 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 875d50fae2ec2fc798461398e3cf2a5a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 9Zup2o7jhJ32lWdWqx4-sdzhhdxycMpFq4LyWJkfrrd_SALalUtvkw== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '4' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKDGZBvHcFqwg= + x-amzn-Remapped-Content-Length: + - '386' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:12 GMT + x-amzn-RequestId: + - eff5c16e-b2c7-4fae-bd00-d7ec715c6cda + status: + code: 200 + message: OK +- request: + body: fields url; where game=186399; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 302389,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6hbp.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43b29f9b39f9-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:13 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=TxKPjgbWzgaybN3UaPr2otXTvipiqMXtN5M3jQh_DNU-1690863373-0-Af+IaQ/fr5dPkaG9iZcU4O6kh11Ro6MaFDhMROfmAubFJWsjSSQ44df4QOFM9fYEo+XvehtX4j02P5oPgSlmwBQ=; + path=/; expires=Tue, 01-Aug-23 04:46:13 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 4eb35caa679bb95c591a03f41b151b8c.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - YzXpauUSmEVJp57rV-6mPMsdUqMUD2tXtcUhu1bUfwacMtpYZVgDIg== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKHFOePHcFppA= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:13 GMT + x-amzn-RequestId: + - 18198777-060d-44f7-9f2a-cc620b326c10 + status: + code: 200 + message: OK +- request: + body: fields url; where game=186399; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 705998,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scf4r2.jpg\"\n + \ },\n {\n \"id\": 705997,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scf4r1.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43b3f8165467-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:13 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=5MJl3kI.9HEkVWtcy8qfbqgLXQ2XLGKjF6OVMkKIgnQ-1690863373-0-AZ2cfu3UODHT0fbeaCj07zgt70zG+dD/onCzbosEvHg5F1ZFGw336t582nJj9HCq1HP/xsht9oJQyTY7oOvadWs=; + path=/; expires=Tue, 01-Aug-23 04:46:13 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 612d3e065148a94cbbe94139733f662e.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - T8HGjTXzBTu573ur95zbgVbmWMFjJVAxzr2DVfFHPPsQp7z1TdUeMA== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '2' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKLHiIPHcFW2w= + x-amzn-Remapped-Content-Length: + - '192' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:13 GMT + x-amzn-RequestId: + - f0eb965c-06b5-466e-b7b0-71f7b8f014ed + status: + code: 200 + message: OK +- request: + body: fields url; where game=245039; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 297342,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6dfi.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43b69e9d39c6-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:14 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=l6aDm.BOHQ_CLdFrD7gpAT0aegQlN7fo6KRscs6Lig4-1690863374-0-ASM47ocaQKchIdE+yuT4dB0NujvdI4BH6GcxPJSNyt5uQA8XUsMMGmDrwlxs1jQ8VBmwb6AjUglVBl1uSIwElWg=; + path=/; expires=Tue, 01-Aug-23 04:46:14 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 875d50fae2ec2fc798461398e3cf2a5a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - RKJldRGzxUueLG85s09xjbRC4yYRH-QZCi43w78KBSAhHyhCdUGupg== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKPHAoPHcFjPQ= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:14 GMT + x-amzn-RequestId: + - dd601157-ea6d-4638-be39-d52149217a37 + status: + code: 200 + message: OK +- request: + body: fields url; where game=245039; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 1030891,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scm3fv.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43b90c4ea205-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:14 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=n91xUBSXus8g61hwX0maA0xhx3PyYq3MLLCOqlkYhZw-1690863374-0-AdpnwR5EzlYlk/DKfqv+knW49TgrJf7NWcL1nEUVJHvvfcaBA7EmutLSAyZQhemJlwFgqwV1CvEzzdJq4gMZBcM=; + path=/; expires=Tue, 01-Aug-23 04:46:14 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 612d3e065148a94cbbe94139733f662e.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - PHzlIRh6Ju4SiJRJ_-YA92IOJwD1rVLS80LNnAl6nGuvL6gQ-rVNRQ== + 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: + - I9oKRE-xvHcFfBQ= + x-amzn-Remapped-Content-Length: + - '98' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:14 GMT + x-amzn-RequestId: + - 2d38fc0e-1474-445f-b0a6-eb26023ac24d + status: + code: 200 + message: OK +- request: + body: fields url; where game=155012; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 157875,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co3dtf.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43bade9036ca-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:14 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=A.nA_gUjbLMICSS7GWCsazIyt1BTMvFOa7E8tXot.RU-1690863374-0-ATuw4+xXLj9n8GfojSCgMrezFsIDv8/NwFKbtBq+WDMBzpM4KjWhuvcpn9vVwLhm1VpZbzD7T/CKVikRvB/mKD0=; + path=/; expires=Tue, 01-Aug-23 04:46:14 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 875d50fae2ec2fc798461398e3cf2a5a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - gATfJZOw-Y4zzv9YIa65_ORHmYPQRKdEYwO3bGnb2XpWYOz0U_6zrQ== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKVFfiPHcF_SQ= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:14 GMT + x-amzn-RequestId: + - a0b1e664-6a74-49fe-9f9a-e3bd1efd1370 + status: + code: 200 + message: OK +- request: + body: fields url; where game=155012; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 689665,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sces5d.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb43bd892a37d0-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:15 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=d3LKca87imb3mB5RFkdtvNkTKCf.goW0CiQTnMpqs3c-1690863375-0-ASlNL5T7fFc8EYp94n/8pjALqgm3FefFIJF3Uie2aRIXqmwvNNIzOagU1wRF81LUtA2H8HgLxL9m6Ky2M8unV6E=; + path=/; expires=Tue, 01-Aug-23 04:46:15 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 d7e35fb15b3339fbd8a9457f22308ea0.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 1jyKAYzibOHLtuK1ixWOCi75d_EPU4_PsyetqkV-xnZuIYX0OMez0Q== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '1' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9oKaHNuvHcFh-g= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:15 GMT + x-amzn-RequestId: + - 231a24e9-0746-4e03-a55e-984c6ce54e3c + status: + code: 200 + message: OK +- request: + body: "\n search \"Notarealgametitle\";\n fields + id, slug, name, summary;\n where platforms=[4];\n " + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '142' + 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: + - 7efb43c0bc0d3700-YYZ + Connection: + - keep-alive + Content-Length: + - '2' + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:16:15 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=lZw6Mrff.nnVcb.zr4DbchxtimumyFhCiVXPEMzDLc0-1690863375-0-AVO0n5WLOvMP0ZAhU8yKAoa+54KqQFFqczLcueoNTKEoNNiBGvvVoITUukeBIQwNVnT57jj1fsKLKKoYyjKtMjo=; + path=/; expires=Tue, 01-Aug-23 04:46:15 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Via: + - 1.1 f92b450b48c98e711c027c1986c59944.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 2OY1n6CJRP5Pf9bxiWayEKz_MPGyDfqvBJaeBw70h8udFRp6ZmxI6g== + 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: + - I9oKfGVaPHcF4og= + x-amzn-Remapped-Content-Length: + - '2' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:16:15 GMT + x-amzn-RequestId: + - 81279507-197f-4278-935f-a8113e46920c + status: + code: 200 + message: OK +version: 1 diff --git a/backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml b/backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml new file mode 100644 index 000000000..152bb518e --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_matched_roms_by_id.yaml @@ -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 diff --git a/backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml b/backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml new file mode 100644 index 000000000..a17f08e88 --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_matched_roms_by_name.yaml @@ -0,0 +1,1645 @@ +interactions: +- request: + body: "\n search \"Mario\";\n fields id, slug, name, + summary;\n where platforms=[4];\n " + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '130' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/games/ + response: + body: + string: "[\n {\n \"id\": 132642,\n \"name\": \"Super Mario 64: Shindou + Pak Taiou Version\",\n \"slug\": \"super-mario-64-shindou-pak-taiou-version\",\n + \ \"summary\": \"This version of Super Mario 64, originally released only + in Japan, is an enhancement over the International release of the game, as + it retains all of the glitch fixes as well as graphical and sound changes. + The main differences of this version are the Rumble Pak support, some small + glitch fixes, the most notorious being the removal of the backwards long jump, + a very important technique for the speedrunning scene, and a new title screen + easter egg. This version would later be released on the iQue Player in China + (without Rumble support), on the Japanese Wii and Wii U Virtual Console. It + was finally localized and released internationally as part of Super Mario + 3D All-Stars (under the name of \\\"Super Mario 64\\\"), with small visual + enhancements.\"\n },\n {\n \"id\": 3475,\n \"name\": \"Dr. Mario 64\",\n + \ \"slug\": \"dr-mario-64\",\n \"summary\": \"The flu season has come + about, and it\\u0027s Dr. Mario\\u0027s duty to use his Megavitamins to heal + the people of the land. However, Wario, wanting to have the fame that Dr. + Mario has, attempts to steal the Megavitamins, but to no avail. Afterwards, + Mad Scienstein and Rudy the Clown (from Wario Land 3) steal the Megavitamins, + and both Dr. Mario and Wario give chase.\"\n },\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 {\n \"id\": 235173,\n \"name\": \"Super Mario + Sunshine in Super Mario 64\",\n \"slug\": \"super-mario-sunshine-in-super-mario-64\",\n + \ \"summary\": \"A mod which adds F.L.U.D.D. from Super Mario Sunshine into + Super Mario 64.\"\n },\n {\n \"id\": 2342,\n \"name\": \"Mario Kart + 64\",\n \"slug\": \"mario-kart-64\",\n \"summary\": \"Mario Kart 64 + is the second main installment of the Mario Kart series. It is the first game + in the series to use three-dimensional graphics, however, the characters and + items in this game are still two-dimensional, pre-rendered sprites. The game + offers two camera angles and three engine sizes: 50cc, 100cc and 150cc. Each + kart has distinctive handling, acceleration and top speed capabilities. Shells + that you fire at rival racers, Bananas that make them skid out and Lightning + Bolts that make them small and very slow are just a few of the game\\u0027s + unique power-ups.\"\n },\n {\n \"id\": 1074,\n \"name\": \"Super Mario + 64\",\n \"slug\": \"super-mario-64\",\n \"summary\": \"The first three + dimensional entry in the Mario franchise, Super Mario 64 follows Mario as + he puts his broadened 3D movement arsenal to use in order to rescue Princess + Peach from the clutches of his arch rival Bowser. Mario has to jump into worlds-within-paintings + ornamenting the walls of Peach\\u0027s castle, uncover secrets and hidden + challenges and collect golden stars as reward for platforming trials.\"\n + \ },\n {\n \"id\": 195027,\n \"name\": \"Mario\\u0027s New Earth\",\n + \ \"slug\": \"marios-new-earth\",\n \"summary\": \"Mario\\u0027s New + Earth is a ROM hack/mod of Super Mario 64 created by PixelSM64, with 125 Stars.\"\n + \ },\n {\n \"id\": 165257,\n \"name\": \"Mario 64 and Yoshi\",\n \"slug\": + \"mario-64-and-yoshi\",\n \"summary\": \"Mario 64 and Yoshi is a ROM hack/mod + by Kaze Emanuar which adds rideable Yoshis to Super Mario 64.\"\n },\n {\n + \ \"id\": 135268,\n \"name\": \"The Super Mario Bros. Super Show! 64\",\n + \ \"slug\": \"the-super-mario-bros-super-show-64\",\n \"summary\": \"The + Super Mario Brothers Super Show 64 is a ROM hack/mod of Super Mario 64 based + on the The Super Mario Brothers Super Show TV show from the 80\\u0027s. The + game recreates some episodes of the show as courses to explore and find Power + Stars.\"\n },\n {\n \"id\": 172833,\n \"name\": \"LEGO Mario 64\",\n + \ \"slug\": \"lego-mario-64\",\n \"summary\": \"Lego Mario 64 is a ROMhack/mod + of Super Mario 64, made to replicate the LEGO set based on the Nintendo 64 + game. It has a small low poly Mario jumping on miniature versions of some + Nintendo 64 stages, in search for five hidden Power Stars.\"\n }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32786e4036bd-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Length: + - '1838' + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:27 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=v0i.6hErvauso_XERpSKH_Nv3aBwe8cjMD4Hr8eOh34-1690862667-0-ASr02mXVJzw65hJ6RW/UZB7UZE7au0ApgLBWKbEF6HcIhaRNmIxSM/xEt6IUNtOsKpZTiiIC3RLVGzf7btPmoeg=; + path=/; expires=Tue, 01-Aug-23 04:34:27 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Via: + - 1.1 7b7a74be3f83934f1626addcfeaed2d6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - BmGMuIduOXO9V_CwyEKCcfWthaAxDQFHtkKDF39yFwdp-k6hMDjnlA== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '108' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mb3F9mPHcF93g= + x-amzn-Remapped-Content-Length: + - '1838' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:27 GMT + x-amzn-RequestId: + - 22eb1c66-2203-4e2b-ba29-8d1db905c797 + status: + code: 200 + message: OK +- request: + body: fields url; where game=132642; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 277580,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co5y6k.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb3279dce8a1ec-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:27 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=Tfv8YuQs.qBWLGEX5RsBPCsTi9cNR1.24d6mOzu4sJc-1690862667-0-AdVbcn4vuFFkOE/r2bEuksRrjrTHRQta960eI/5O05FGX3wyjf3uZAVzodh5R1M7Dm17L4GoDbYdNEsCDlGfzcQ=; + path=/; expires=Tue, 01-Aug-23 04:34:27 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: + - LN5FnkPkt6Her7WmvGSc83CC71y85uh2WlrNsZqXnRkT2DfpwteIIQ== + 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: + - I9mb5FkvvHcFomA= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:27 GMT + x-amzn-RequestId: + - 861dc467-9565-4b2e-8caf-3683eb75dd8e + status: + code: 200 + message: OK +- request: + body: fields url; where game=132642; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 664841,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sce8zt.jpg\"\n + \ },\n {\n \"id\": 384858,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc88yi.jpg\"\n + \ },\n {\n \"id\": 384857,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc88yh.jpg\"\n + \ },\n {\n \"id\": 664839,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sce8zr.jpg\"\n + \ },\n {\n \"id\": 664836,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sce8zo.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb327b4d9139c3-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:28 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=k6o3O47AWPhbevcAQc19MFpEZg5D7Y_6CYqSUAcotIs-1690862668-0-AQc8C0W7+LQHw+/WSMJYRjAnIvUVFnirgYnjgdiehhTY2+lV5CvQG4Vx6rcBqam+wyU4yGtSswf2JrrQ/MhswaQ=; + path=/; expires=Tue, 01-Aug-23 04:34:28 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 0c43b7c17036347829f4f27cf79cf47a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 3QpVN8RMIyM6YnaZRpvP6hW5Sxfy0VUSPiva8uH56KwiiapfktYFDQ== + X-Amz-Cf-Pop: + - ORD51-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '10' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mb8EervHcF1zA= + x-amzn-Remapped-Content-Length: + - '477' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:28 GMT + x-amzn-RequestId: + - 6dda6b86-3aec-4613-8b0f-20cf4ec365f8 + status: + code: 200 + message: OK +- request: + body: fields url; where game=3475; + 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\": 95584,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co21r4.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb327d8cf7a238-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:28 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=_4gp2C9VOvdgTeSQQZWxleCQbOiyd_cMxyTx5iZEYu8-1690862668-0-AWEZejSxgE66VOPhqAHPM+YLwQlqYc2XUATl9QSld3UPSdrOttuu8j6Goy4KUz75Gd4GH3BP77Fy5tT09gC50aQ=; + path=/; expires=Tue, 01-Aug-23 04:34:28 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 0588a12f9163167120c7c5e825e9110a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - tOKwZrP_YG7KX65-F9AUUdsCF5VhBUJsNG4GXh1ehewfh9a1XVuJmA== + 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: + - I9mb_GQ6PHcFilw= + x-amzn-Remapped-Content-Length: + - '96' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:28 GMT + x-amzn-RequestId: + - 7177c7f4-5d8f-4759-aa29-db5f478d3f21 + status: + code: 200 + message: OK +- request: + body: fields url; where game=3475; 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\": 818138,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/schja2.jpg\"\n + \ },\n {\n \"id\": 818137,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/schja1.jpg\"\n + \ },\n {\n \"id\": 818139,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/schja3.jpg\"\n + \ },\n {\n \"id\": 818136,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/schja0.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb327f0c8da1fc-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:28 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=s2UpenBqdrgaeLy7rCwJrT.jrDkECgfSwOOxj3z2_o8-1690862668-0-AcHmMhaAKKywvdZtAd5N++g2rMj+oRusp7udCmwGo2sQn4AT3YgnCV/+FV3csO5wSS3wyKXPSsvfX5L802THGto=; + path=/; expires=Tue, 01-Aug-23 04:34: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: + - 6z02OxX6HH0EWRWF29nefHoT1wrAoetsruu34oVfZ6Qj5CcyLQJ0GA== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '4' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mcBFBaPHcFilg= + x-amzn-Remapped-Content-Length: + - '382' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:28 GMT + x-amzn-RequestId: + - 066a2cf0-2e48-4cdc-bd2e-7af21ab79113 + 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: + - 7efb3280fcbea21a-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:29 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=b6aH8xtUZVcY61PsXJAt7P63_VCcjp81zTz29ravTeE-1690862669-0-AZNK802IzpvjB9WyoE4cbnVSby3QeYsrTpETb+KBlTeeO0IMFisa4Kx49K7Rq3QThG4CmIzMgZ8YgplsoxwjK9o=; + path=/; expires=Tue, 01-Aug-23 04:34:29 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 0588a12f9163167120c7c5e825e9110a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - fOhfbMFyT6tyh_42GkLi53rPm3c_Y-83NG3tv4F_VF4-CvvAcxJndw== + 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: + - I9mcGHT3PHcFkPA= + x-amzn-Remapped-Content-Length: + - '96' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:29 GMT + x-amzn-RequestId: + - d9b4804f-0542-4d05-b052-e399ffe98252 + 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\": 24167,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/a5r3k2lf3lgvifrycqeg.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: + - 7efb328308a939e4-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:29 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=QbX_nhS1Lq3WkmjZkDXTjUqJ0PELpffzllGvgSF0YyI-1690862669-0-AVVj2at5KvnUPyI/3IE1Ho7/mbMNNuYaW81Urrj8dWEI6z72e5waUVBeovmYdJZ6DOsEaO3ORKzC+CX6ENyubDU=; + path=/; expires=Tue, 01-Aug-23 04:34:29 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 7b7a74be3f83934f1626addcfeaed2d6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - B8KbtPH3ou-mMQVEXfk7o7VzUVJVVL2ZgJNiKcu7Mhoq3KzhgvUbKw== + X-Amz-Cf-Pop: + - YTO50-P1 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '5' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mcIGgovHcFaTg= + x-amzn-Remapped-Content-Length: + - '542' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:29 GMT + x-amzn-RequestId: + - d5b0971a-133a-47a9-a6c0-969bf5df818f + status: + code: 200 + message: OK +- request: + body: fields url; where game=235173; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 287617,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co65xd.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb3284fb7139cc-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:29 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=dvCN4ddRkA04Ne7FLmE9F60ES1mX85jZfIfdOxZwMLU-1690862669-0-Aa5vg4tvhpFdzUYSgCG/JxQ57dgUg5mzii39uvV3FSU9iZFVUxOtP1K045OKtQkbYLL9k9GQpnnvU0rBFlt7VWM=; + path=/; expires=Tue, 01-Aug-23 04:34:29 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 7da0231bd1c514f0dd4d36905f23fd72.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - FsrFCAUdzIg2msNkldj5G1ZLafPosmZ44ratjNpOLhby6_JQgdxvDQ== + 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: + - I9mcMEeovHcFXjA= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:29 GMT + x-amzn-RequestId: + - af1b4959-d965-4fd1-8953-c6b1acaa2997 + status: + code: 200 + message: OK +- request: + body: fields url; where game=235173; limit 5; + 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/screenshots/ + response: + body: + string: '[]' + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32870f6d37d0-YYZ + Connection: + - keep-alive + Content-Length: + - '2' + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:30 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=gNcyDFzWhP_ojJig_y5BBA0KP.RqYQFG.PMWWN4DSu8-1690862670-0-ASlYP8IGvAivUH06uG96ioRjw8SNzTZNwKU8nllK+2KUfo8Famd8/rj62d+0nPDDNFnGEORT93pfBe+1a4RlYHs=; + path=/; expires=Tue, 01-Aug-23 04:34:30 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Via: + - 1.1 7b7a74be3f83934f1626addcfeaed2d6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 9sfFB2Rw5fvQIrAWNOGaJ23LLe7XHoRiU-iS31c3Wv1dBfGtG_ofWA== + 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: + - I9mcPEOcPHcFRbQ= + x-amzn-Remapped-Content-Length: + - '2' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:30 GMT + x-amzn-RequestId: + - 5541fd2d-c0b3-4418-a828-87a119aabfda + status: + code: 200 + message: OK +- request: + body: fields url; where game=2342; + 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\": 289642,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co67hm.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32899c6236a9-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:30 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=kf4w4YeuiqrEF1PGN5NKW5sSZGMU2LEplw.F70lSfXE-1690862670-0-AUrZRDokSYIsxMSd9Ib5SKSr3X4cyiYYGRVxJ29MOOq1HJzVUj6I6CD3VcGqdVz02th7xEEmonPAqtbwHnXl+KA=; + path=/; expires=Tue, 01-Aug-23 04:34:30 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: + - PcFgkF_lomzLUPKCyx2bMAUqjcQ5SE1o73LoT3Odyee5vGh2roj8IA== + 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: + - I9mcSFGvPHcFjSQ= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:30 GMT + x-amzn-RequestId: + - d1edf0f1-4a06-4804-bc9d-b85858b8f4ec + status: + code: 200 + message: OK +- request: + body: fields url; where game=2342; 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\": 383314,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc87rm.jpg\"\n + \ },\n {\n \"id\": 383316,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc87ro.jpg\"\n + \ },\n {\n \"id\": 383313,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc87rl.jpg\"\n + \ },\n {\n \"id\": 383318,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc87rq.jpg\"\n + \ },\n {\n \"id\": 383319,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc87rr.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb328b2e5e36d9-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:30 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=q.aoFfI5pfNhDmlDphViHuHgv0B0hAJdeuNpLPW7.hU-1690862670-0-Acq0BDD75Y30mZGLWKrQLmSRU37laMRjYA/ZFDoH7IlLHq4xp8v5fnPF1xTqLQKAGjEMtCoc3wuhTM9uk/WhZu4=; + path=/; expires=Tue, 01-Aug-23 04:34:30 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 981fd743d9643ae0100d9c3fcfb96f78.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - v_eFS2jZyBeii35XyHXOU1tR034KMDFg03NHqFxsb-rC9jgdoFUawA== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '7' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mcVE0_PHcF2vw= + x-amzn-Remapped-Content-Length: + - '477' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:30 GMT + x-amzn-RequestId: + - 5ea51b90-b1fa-4de0-897e-fd3df219e40a + status: + code: 200 + message: OK +- request: + body: fields url; where game=1074; + 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\": 296245,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co6cl1.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb328d7f9da244-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:31 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=.kXPBv6U8LS3b8xDf7W4w35RE.H0zVBE26RB.hIHQjc-1690862671-0-Ach/DFgkMDt0gGT0+AC7INMpWkGlYooEFWwa1CzNyzrYEk67vYQhycdrdJ9hNYP7KRrN1D50nVkx+ioJ8+CTQC4=; + path=/; expires=Tue, 01-Aug-23 04:34:31 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: + - -D39hFduNavaR2-aMEv_UIAyFbPI95RMS-etIn4UZWsntdBtZ3sZOw== + 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: + - I9mcaGLhvHcFx4Q= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:31 GMT + x-amzn-RequestId: + - 8450d35e-5927-4d0d-9d6a-a2d7dc087278 + status: + code: 200 + message: OK +- request: + body: fields url; where game=1074; 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\": 664843,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sce8zv.jpg\"\n + \ },\n {\n \"id\": 664844,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sce8zw.jpg\"\n + \ },\n {\n \"id\": 391484,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8e2k.jpg\"\n + \ },\n {\n \"id\": 391489,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8e2p.jpg\"\n + \ },\n {\n \"id\": 391488,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8e2o.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb328f9e55a1e4-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:31 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=TfOo0CIZRJUskzHr1Pbiiszti4u.w1hPqBIC4HlX4iU-1690862671-0-AQdGYQoLMjJUc+VbSqLeXxIjMD7oSai/+mkAletCJEb3Kfkt7wUO9e72RlNkjGs5mRzjQXuPvqxSs16DxU49414=; + path=/; expires=Tue, 01-Aug-23 04:34:31 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: + - VzWWyA6gmP5tCLGy2h4y91-5juMGXKBQ9d8GMWG9D8gbUPOxmW8ICQ== + 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: + - I9mcdHTnvHcFzgg= + x-amzn-Remapped-Content-Length: + - '477' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:31 GMT + x-amzn-RequestId: + - aef7c0fa-4c27-4d66-ac94-03775f5c6f4a + status: + code: 200 + message: OK +- request: + body: fields url; where game=195027; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 214352,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co4le8.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb3292995a39d5-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:31 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=1Dcih5I0fdsWOA1pJP2LrTzf_tbc0rFO1b7N1WMiJ4g-1690862671-0-AXxNrJSM8An7/QEDnRV0i0Dfxr61itUyaocKkcR3p9E9FCp3b44Z452KbKob5uM10P5QpLtujqPrspuRehg+muo=; + path=/; expires=Tue, 01-Aug-23 04:34:31 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 7da0231bd1c514f0dd4d36905f23fd72.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - 4GfiTzi6dlgHOEiC7hbC_cHveDHRyyyNhRgEhIJ8EzmjGm3USA-Cuw== + 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: + - I9mchGXGPHcFn2Q= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:31 GMT + x-amzn-RequestId: + - e4d222a7-64ba-4cf5-b502-07510b36875c + status: + code: 200 + message: OK +- request: + body: fields url; where game=195027; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 759695,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scga6n.jpg\"\n + \ },\n {\n \"id\": 759697,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scga6p.jpg\"\n + \ },\n {\n \"id\": 759696,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scga6o.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32941db6ab3b-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:32 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=5L8K.gvbjafX66tM0RXbC1TJ1qW1n9x7sWF8qOIhssQ-1690862672-0-Ae7KY/CGrm9zQ6isHReWjLFPbArun0BV6KADzS5gKGnzYYcN1g0GwLt5YK6rBbKVkKMzv8tpsjNvsGMruvFbTkE=; + path=/; expires=Tue, 01-Aug-23 04:34:32 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: + - Dhmh2qhogcFhc5I8oR6E1sbVKQV7gevJplBjfbBNTE3JlpzY08tYmw== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '3' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mcjH4UPHcFfAQ= + x-amzn-Remapped-Content-Length: + - '287' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:32 GMT + x-amzn-RequestId: + - 60b72694-1725-4311-ab6e-8e90e0d8090f + status: + code: 200 + message: OK +- request: + body: fields url; where game=165257; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 169415,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co3mpz.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb3296783ea240-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:32 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=NgzKZW5enTVjBJuJzLPAFflMlbI8OnP8TcS8I_.v9ms-1690862672-0-ARJIwF4XLwotREwajO9eJ0wAFyC5ZpUSGtRBhf/tsQD5mHi0Tfuj4mGTafrfdCf0bAiE9awL1naJVxvY1RHnIhc=; + path=/; expires=Tue, 01-Aug-23 04:34:32 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: + - AN285_WG2viktUPemKxQhX76MNXQ79WZVK9XVp4kQhtphhyG2Xw3Ag== + 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: + - I9mcoF-0PHcFwRw= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:32 GMT + x-amzn-RequestId: + - 8374763c-9d31-42bf-85b6-1d02049cd676 + status: + code: 200 + message: OK +- request: + body: fields url; where game=165257; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 594953,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sccr2h.jpg\"\n + \ },\n {\n \"id\": 594952,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sccr2g.jpg\"\n + \ },\n {\n \"id\": 594950,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sccr2e.jpg\"\n + \ },\n {\n \"id\": 594951,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sccr2f.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32990c78a1f6-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:33 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=btg5moZePnpLYTAjCMetLBgTGYIFr2WAeUdhJpLXqKQ-1690862673-0-AXw8zl9etWoEAHmFsTQs9mHMfqbMH++OL64VZyouH1Ra3E3c1SZ7ri00WxN3OPCpjuol655X5k9vK8OoUBOdyjI=; + path=/; expires=Tue, 01-Aug-23 04:34:33 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: + - k6TSzqrbZev8pmULLahuE1_9eEvO3WluNboWmSP196ypeLMxpG2Jwg== + X-Amz-Cf-Pop: + - YUL62-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '4' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mcsEbpPHcFvoQ= + x-amzn-Remapped-Content-Length: + - '382' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:33 GMT + x-amzn-RequestId: + - c9828e37-952c-4f01-bfaf-53eb920f8533 + status: + code: 200 + message: OK +- request: + body: fields url; where game=135268; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 200488,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co4ap4.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb329c3e7836ff-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:33 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=1Nj9.nr3HrPhN2Ic2la2H0A6V2jgfawx9XfN8MDlMWQ-1690862673-0-ASmO9sC7vXqjwgCAwYWpKVqR4E65ru5ZH5BuLAEv9RZeCeSV+yjYfXcEnWvI48onN5JvOFwkJ4UisJdFzvAKHs4=; + path=/; expires=Tue, 01-Aug-23 04:34:33 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 981fd743d9643ae0100d9c3fcfb96f78.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - XIatv3gXw4oMa9_3Ji4bN5vtSRGV_Shus2jSy2aA47GXLvZRhR35-A== + 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: + - I9mcxFdrPHcFSWw= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:33 GMT + x-amzn-RequestId: + - 642d6c1c-7a17-4f38-9ed4-16d496d33b7d + status: + code: 200 + message: OK +- request: + body: fields url; where game=135268; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 389480,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8ciw.jpg\"\n + \ },\n {\n \"id\": 389479,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8civ.jpg\"\n + \ },\n {\n \"id\": 389478,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8ciu.jpg\"\n + \ },\n {\n \"id\": 389481,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/sc8cix.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb329ecd123702-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:33 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=k3GlN0U.vqFbY.9XuFFOOoos7eQaaayakh2Ahy5Kir4-1690862673-0-AbgqBb9sVXiQrBzuyNrRpbdRvLAawUzSm4MrQzr1Bdd8wn6D2oBKxaKIheWg4FVes7sDAVRaTx8VDRLEDzbh4Ko=; + path=/; expires=Tue, 01-Aug-23 04:34:33 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 0c43b7c17036347829f4f27cf79cf47a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - Oq3Zn5kW311Lep0cmCVvLYxLNYWEKiMFwjqecUpRwsMH8Qm6AQA00w== + X-Amz-Cf-Pop: + - ORD51-C2 + X-Cache: + - Miss from cloudfront + X-Content-Type-Options: + - nosniff + X-Count: + - '4' + alt-svc: + - h3=":443"; ma=86400 + x-amz-apigw-id: + - I9mc0HLQvHcF35g= + x-amzn-Remapped-Content-Length: + - '382' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:33 GMT + x-amzn-RequestId: + - ae824888-6f21-42ca-bb9f-1a4ad52ac88a + status: + code: 200 + message: OK +- request: + body: fields url; where game=172833; + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '30' + User-Agent: + - python-requests/2.31.0 + method: POST + uri: https://api.igdb.com/v4/covers/ + response: + body: + string: "[\n {\n \"id\": 183639,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/co3xp3.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32a0af9fa22e-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:34 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=DRPPj1bwhx4b9RYTksNhAA11YggI2x8bqAw_yPCV29M-1690862674-0-Ac1cmU2v8VNuq1GrVFWxISGpPj8Hg0ux2htKsuBLJ5bfFR2koGAOJlKYGP90i9g659dnMV34hzUelnL/MF4PW+M=; + path=/; expires=Tue, 01-Aug-23 04:34:34 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Via: + - 1.1 0588a12f9163167120c7c5e825e9110a.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - cJlkI3We45QLwy9TCvoPD5GJJ8EceHceoARNcGn-U_4le0GIfVKTBw== + 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: + - I9mc4G3nPHcFexg= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:34 GMT + x-amzn-RequestId: + - 6963efb7-f489-452b-9d66-8cbe84ddf60b + status: + code: 200 + message: OK +- request: + body: fields url; where game=172833; limit 5; + 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/screenshots/ + response: + body: + string: "[\n {\n \"id\": 644424,\n \"url\": \"//images.igdb.com/igdb/image/upload/t_thumb/scdt8o.jpg\"\n + \ }\n]" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 7efb32a34b8236a7-YYZ + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:34 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=G5sIw7Xyp0iFeirepMOBb4U8saB.NJHFGw2eXhCtQ.0-1690862674-0-AXfldVAtWiQ5xe6Yu4ESO3tlofzDEH/URJuTkyqdZl/FIu0LOOBrqEbALu0+9zNXYmWYmRMN5kpYdP8+f0ORRS4=; + path=/; expires=Tue, 01-Aug-23 04:34:34 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: + - HRSNlFytTUR2xcjTjO3v0F95k_KAXvnPZ4QumhsTqkHsPl5POpC2Lg== + 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: + - I9mc9Fz2vHcFU_A= + x-amzn-Remapped-Content-Length: + - '97' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:34 GMT + x-amzn-RequestId: + - 43db2cf0-e41c-4944-b6f7-320b24b80ae8 + status: + code: 200 + message: OK +- request: + body: "\n search \"Notarealgametitle\";\n fields + id, slug, name, summary;\n where platforms=[4];\n " + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer xxxxxxxxxxxxxxxxxxxxxxxx + Client-ID: + - xxxxxxxxxxxxxxxxxxxxxxxx + Connection: + - keep-alive + Content-Length: + - '142' + 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: + - 7efb32a68aed36cc-YYZ + Connection: + - keep-alive + Content-Length: + - '2' + Content-Type: + - application/json + Date: + - Tue, 01 Aug 2023 04:04:35 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=k8.97Eo03DjSRf_KMLxZjqtQQBU7_8VC.MYZxytF_8c-1690862675-0-Ac84UtG2Fi0ZmFWxAMmWZR95/itcKW869lU4jExGxVzjwAi57rMlAwA2AHaMSUbLJUTgIlnNpZi214dnHP4wGuo=; + path=/; expires=Tue, 01-Aug-23 04:34:35 GMT; domain=.igdb.com; HttpOnly; Secure; + SameSite=None + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Via: + - 1.1 7b7a74be3f83934f1626addcfeaed2d6.cloudfront.net (CloudFront) + X-Amz-Cf-Id: + - UQUXQGffj0bVtc8p2IGBLSXNKv8l001uKanzpKtdtmUEvWZ7yqoX9g== + 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: + - I9mdCGJOPHcFldA= + x-amzn-Remapped-Content-Length: + - '2' + x-amzn-Remapped-Date: + - Tue, 01 Aug 2023 04:04:35 GMT + x-amzn-RequestId: + - 292557b0-72a5-4f24-8b2b-95f264305e27 + status: + code: 200 + message: OK +version: 1 diff --git a/backend/handler/tests/cassettes/test_get_platform.yaml b/backend/handler/tests/cassettes/test_get_platform.yaml new file mode 100644 index 000000000..3c1cf8e05 --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_platform.yaml @@ -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 diff --git a/backend/handler/tests/cassettes/test_get_rom.yaml b/backend/handler/tests/cassettes/test_get_rom.yaml new file mode 100644 index 000000000..30b6623dc --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_rom.yaml @@ -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 diff --git a/backend/handler/tests/cassettes/test_get_rom_by_id.yaml b/backend/handler/tests/cassettes/test_get_rom_by_id.yaml new file mode 100644 index 000000000..0aaf8bff3 --- /dev/null +++ b/backend/handler/tests/cassettes/test_get_rom_by_id.yaml @@ -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 diff --git a/backend/handler/tests/test_igdb_handler.py b/backend/handler/tests/test_igdb_handler.py new file mode 100644 index 000000000..1b1032951 --- /dev/null +++ b/backend/handler/tests/test_igdb_handler.py @@ -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 == [] diff --git a/backend/models/base.py b/backend/models/base.py index f3eb68ee1..ebdfe6cb0 100644 --- a/backend/models/base.py +++ b/backend/models/base.py @@ -1,3 +1,3 @@ -from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import declarative_base BaseModel = declarative_base() diff --git a/poetry.lock b/poetry.lock index ee7bf70e1..fecdc2c5d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -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" diff --git a/pyproject.toml b/pyproject.toml index eadd12c82..254c02ac0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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] diff --git a/pytest.ini b/pytest.ini index 249766632..1da8ec053 100644 --- a/pytest.ini +++ b/pytest.ini @@ -5,4 +5,3 @@ env = DB_NAME=romm_test DB_USER=romm_test DB_PASSWD=passwd -