Compare commits
4 Commits
727af5899a
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e4807f95a | |||
| 88f6bbb7db | |||
| c7ffb2608d | |||
| 93644882a0 |
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "oxidespotify"
|
name = "oxidespotify"
|
||||||
version = "0.1.0"
|
version = "0.2.2"
|
||||||
description = "Client for Spotify API"
|
description = "Client for Spotify API"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }]
|
authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }]
|
||||||
|
|||||||
@ -36,7 +36,9 @@ class SpotifyAPIClient(OxideHTTP):
|
|||||||
async def _process[T: BaseModel](
|
async def _process[T: BaseModel](
|
||||||
self, req: Response | CachedResponse, schema: type[T] | None
|
self, req: Response | CachedResponse, schema: type[T] | None
|
||||||
) -> T | None:
|
) -> T | None:
|
||||||
if req.status_code == 204:
|
if req.status_code == 204 or (
|
||||||
|
req.status_code == 200 and schema is None
|
||||||
|
):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if req.status_code >= 500:
|
if req.status_code >= 500:
|
||||||
@ -128,11 +130,27 @@ class SpotifyAPIClient(OxideHTTP):
|
|||||||
async def pause_playback(self) -> NoReturn:
|
async def pause_playback(self) -> NoReturn:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def skip_to_next(self) -> NoReturn:
|
async def skip_to_next(self, access_token: str, device_id: str) -> None:
|
||||||
raise NotImplementedError
|
req = self.post(
|
||||||
|
'/me/player/next',
|
||||||
|
params={'device_id': device_id},
|
||||||
|
headers=self._auth(access_token),
|
||||||
|
)
|
||||||
|
|
||||||
async def skip_to_previous(self) -> NoReturn:
|
req = await self._process_request(req)
|
||||||
raise NotImplementedError
|
return await self._process(req, None)
|
||||||
|
|
||||||
|
async def skip_to_previous(
|
||||||
|
self, access_token: str, device_id: str
|
||||||
|
) -> None:
|
||||||
|
req = self.post(
|
||||||
|
'/me/player/previous',
|
||||||
|
params={'device_id': device_id},
|
||||||
|
headers=self._auth(access_token),
|
||||||
|
)
|
||||||
|
|
||||||
|
req = await self._process_request(req)
|
||||||
|
return await self._process(req, None)
|
||||||
|
|
||||||
async def seek_to_position(self) -> NoReturn:
|
async def seek_to_position(self) -> NoReturn:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|||||||
@ -41,14 +41,15 @@ class SpotifyAuthClient(OxideHTTP):
|
|||||||
|
|
||||||
data = await req.json()
|
data = await req.json()
|
||||||
if req.status_code >= 400:
|
if req.status_code >= 400:
|
||||||
raise s.ClientError(req.status_code, data['error']['message'])
|
err = f'{data["error"]}: {data["error_description"]}'
|
||||||
|
raise s.ClientError(req.status_code, err)
|
||||||
|
|
||||||
return schema.model_validate(data)
|
return schema.model_validate(data)
|
||||||
|
|
||||||
async def user_access_token(self, code: str) -> s.UserAccessToken:
|
async def user_access_token(self, code: str) -> s.UserAccessToken:
|
||||||
req = await self.post(
|
req = await self.post(
|
||||||
'/token',
|
'/token',
|
||||||
json={
|
form={
|
||||||
'grant_type': 'authorization_code',
|
'grant_type': 'authorization_code',
|
||||||
'code': code,
|
'code': code,
|
||||||
'redirect_uri': self.__redirect_uri,
|
'redirect_uri': self.__redirect_uri,
|
||||||
@ -60,7 +61,7 @@ class SpotifyAuthClient(OxideHTTP):
|
|||||||
async def refresh_access_token(self, refresh_token: str) -> s.Token:
|
async def refresh_access_token(self, refresh_token: str) -> s.Token:
|
||||||
req = await self.post(
|
req = await self.post(
|
||||||
'/token',
|
'/token',
|
||||||
json={
|
form={
|
||||||
'grant_type': 'refresh_token',
|
'grant_type': 'refresh_token',
|
||||||
'refresh_token': refresh_token,
|
'refresh_token': refresh_token,
|
||||||
'client_id': self.__client_id,
|
'client_id': self.__client_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user