From 3c98b45ea03298a860140a3e7db0f100c7377211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Mielcarek?= Date: Thu, 17 Nov 2022 18:42:07 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20m=C3=A9thode=20permettant=20de=20jouer?= =?UTF-8?q?=20une=20musique=20sur=20Spotify.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/dafl_project_flutter/assets/logs.txt | 4 +++ Sources/dafl_project_flutter/lib/api/api.dart | 25 +++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 Sources/dafl_project_flutter/assets/logs.txt diff --git a/Sources/dafl_project_flutter/assets/logs.txt b/Sources/dafl_project_flutter/assets/logs.txt new file mode 100644 index 0000000..7d70a00 --- /dev/null +++ b/Sources/dafl_project_flutter/assets/logs.txt @@ -0,0 +1,4 @@ +postgres +mdpDaflBd +89.83.54.48 +BD-DaflMusic \ No newline at end of file diff --git a/Sources/dafl_project_flutter/lib/api/api.dart b/Sources/dafl_project_flutter/lib/api/api.dart index 5aca5d1..6331ff6 100644 --- a/Sources/dafl_project_flutter/lib/api/api.dart +++ b/Sources/dafl_project_flutter/lib/api/api.dart @@ -14,7 +14,7 @@ class Api { //for web api get redirectUri => 'https://daflmusic.000webhostapp.com/callback/'; final _scopes = - 'user-read-playback-state user-read-currently-playing user-read-recently-played playlist-modify-public ugc-image-upload'; + 'user-read-playback-state user-read-currently-playing user-read-recently-played playlist-modify-public ugc-image-upload user-modify-playback-state'; late String _state; dynamic _codeVerifier; dynamic _codeChallenge; @@ -143,13 +143,13 @@ class Api { 'Content-Type': 'application/json' }); if (response.statusCode == 204) { - return getRecentlyPlayedTrack(); + return _getRecentlyPlayedTrack(); } var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map; return decodedResponse['item']['id']; } - Future getRecentlyPlayedTrack() async { + Future _getRecentlyPlayedTrack() async { var url = Uri.https( 'api.spotify.com', 'v1/me/player/recently-played', {'limit': '1'}); var token = await _getAccessToken(); @@ -231,8 +231,7 @@ class Api { return null; } - _createPlaylist() async { - //create playlist + Future _createPlaylist() async { var idUser = await MyApp.controller.currentUser.getIdSpotify(); var token = await _getAccessToken(); var url = Uri.https('api.spotify.com', 'v1/users/$idUser/playlists'); @@ -253,6 +252,19 @@ class Api { return idPlaylist; } + playTrack(String idTrack) async { + var token = await _getAccessToken(); + var url = Uri.https('api.spotify.com', 'v1/me/player/play'); + _setResponse(await _client.put(url, + headers: { + 'Authorization': '$_tokenType $token', + 'Content-Type': 'application/json' + }, + body: jsonEncode({ + 'uris': ['spotify:track:$idTrack'] + }))); + } + removeFromPlaylist(String idTrack) async { var idPlaylist = await _getPlaylist(); if (idPlaylist == null) { @@ -262,11 +274,10 @@ class Api { var token = await _getAccessToken(); var url = Uri.https('api.spotify.com', 'v1/playlists/$idPlaylist/tracks'); var jsonVar = jsonEncode({ - "tracks": [ + 'tracks': [ {'uri': 'spotify:track:$idTrack'} ] }); - jsonEncode({'uri': 'spotify:track:$idTrack'}); _setResponse(await _client.delete(url, headers: { 'Authorization': '$_tokenType $token',