deprecate inconsistent api endpoints
This commit is contained in:
parent
f92861105d
commit
1c082f8308
1 changed files with 94 additions and 64 deletions
158
catalog/api.py
158
catalog/api.py
|
@ -52,6 +52,84 @@ def fetch_item(request, url: str):
|
|||
return 202, {"message": "Fetch in progress"}
|
||||
|
||||
|
||||
def _get_item(cls, uuid, response):
|
||||
item = cls.get_by_url(uuid)
|
||||
if not item:
|
||||
return 404, {"message": "Item not found"}
|
||||
if item.merged_to_item:
|
||||
response["Location"] = item.merged_to_item.api_url
|
||||
return 302, {"message": "Item merged", "url": item.merged_to_item.api_url}
|
||||
if item.is_deleted:
|
||||
return 404, {"message": "Item not found"}
|
||||
return item
|
||||
|
||||
|
||||
@api.get(
|
||||
"/book/{uuid}",
|
||||
response={200: EditionSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_book(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Edition, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/movie/{uuid}",
|
||||
response={200: MovieSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_movie(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Movie, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/tv/{uuid}",
|
||||
response={200: TVShowSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_tv_show(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVShow, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/tv/season/{uuid}",
|
||||
response={200: TVSeasonSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_tv_season(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVSeason, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/podcast/{uuid}",
|
||||
response={200: PodcastSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_podcast(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Podcast, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/album/{uuid}",
|
||||
response={200: AlbumSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_album(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Album, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/game/{uuid}",
|
||||
response={200: GameSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_game(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Game, uuid, response)
|
||||
|
||||
|
||||
# Legacy API will be removed soon
|
||||
|
||||
|
||||
@api.post(
|
||||
"/catalog/search",
|
||||
response={200: SearchResult, 400: Result},
|
||||
|
@ -87,58 +165,32 @@ def fetch_item_legacy(request, url: str):
|
|||
return 202, {"message": "Fetch in progress"}
|
||||
|
||||
|
||||
def _get_item(cls, uuid, response):
|
||||
item = cls.get_by_url(uuid)
|
||||
if not item:
|
||||
return 404, {"message": "Item not found"}
|
||||
if item.merged_to_item:
|
||||
response["Location"] = item.merged_to_item.api_url
|
||||
return 302, {"message": "Item merged", "url": item.merged_to_item.api_url}
|
||||
if item.is_deleted:
|
||||
return 404, {"message": "Item not found"}
|
||||
return item
|
||||
|
||||
|
||||
@api.get(
|
||||
"/book/{uuid}/",
|
||||
response={200: EditionSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_book(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Edition, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/movie/{uuid}/",
|
||||
response={200: MovieSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
def get_movie(request, uuid: str, response: HttpResponse):
|
||||
def get_movie_legacy(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Movie, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/tv/{uuid}/",
|
||||
response={200: TVShowSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
def get_tv_show(request, uuid: str, response: HttpResponse):
|
||||
def get_tv_show_legacy(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVShow, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/tv/season/{uuid}/",
|
||||
response={200: TVSeasonSchema, 302: RedirectedResult, 404: Result},
|
||||
auth=None,
|
||||
)
|
||||
def get_tv_season(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(TVSeason, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/tvseason/{uuid}/",
|
||||
response={200: TVSeasonSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023; use /api/tv/season instead",
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
|
@ -149,53 +201,31 @@ def get_tv_season_legacy(request, uuid: str, response: HttpResponse):
|
|||
@api.get(
|
||||
"/podcast/{uuid}/",
|
||||
response={200: PodcastSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
def get_podcast(request, uuid: str, response: HttpResponse):
|
||||
def get_podcast_legacy(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Podcast, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/album/{uuid}/",
|
||||
response={200: AlbumSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
def get_album(request, uuid: str, response: HttpResponse):
|
||||
def get_album_legacy(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Album, uuid, response)
|
||||
|
||||
|
||||
@api.get(
|
||||
"/game/{uuid}/",
|
||||
response={200: GameSchema, 302: RedirectedResult, 404: Result},
|
||||
summary="This method is deprecated, will be removed by Aug 1 2023",
|
||||
auth=None,
|
||||
deprecated=True,
|
||||
)
|
||||
def get_game(request, uuid: str, response: HttpResponse):
|
||||
def get_game_legacy(request, uuid: str, response: HttpResponse):
|
||||
return _get_item(Game, uuid, response)
|
||||
|
||||
|
||||
# @api.get("/book", response=List[EditionSchema])
|
||||
# def list_editions(request):
|
||||
# qs = Edition.objects.all()
|
||||
# return qs
|
||||
|
||||
|
||||
# @api.post("/book/")
|
||||
# def create_edition(request, payload: EditionInSchema):
|
||||
# edition = Edition.objects.create(**payload.dict())
|
||||
# return {"id": edition.uuid}
|
||||
|
||||
|
||||
# @api.put("/book/{uuid}/")
|
||||
# def update_edition(request, uuid: str, payload: EditionInSchema):
|
||||
# edition = get_object_or_404(Item, uid=base62.decode(uuid))
|
||||
# for attr, value in payload.dict().items():
|
||||
# setattr(edition, attr, value)
|
||||
# edition.save()
|
||||
# return {"success": True}
|
||||
|
||||
|
||||
# @api.delete("/book/{uuid}/")
|
||||
# def delete_edition(request, uuid: str):
|
||||
# edition = get_object_or_404(Edition, uid=base62.decode(uuid))
|
||||
# edition.delete()
|
||||
# return {"success": True}
|
||||
|
|
Loading…
Add table
Reference in a new issue