From 0658b94412ebfc890c78283bcc60b8a4b3263b15 Mon Sep 17 00:00:00 2001 From: felixmielcarek Date: Tue, 8 Nov 2022 11:22:48 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20classe=20track=20et=20de=20la?= =?UTF-8?q?=20r=C3=A9cup=C3=A9ration=20des=20informations=20d'un=20track?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/dafl_project_flutter/lib/api/api.dart | 23 ++++++++++++++++--- .../lib/api/in_app_browser.dart | 2 +- .../dafl_project_flutter/lib/api/track.dart | 11 +++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 Sources/dafl_project_flutter/lib/api/track.dart diff --git a/Sources/dafl_project_flutter/lib/api/api.dart b/Sources/dafl_project_flutter/lib/api/api.dart index 0adba79..628c6f7 100644 --- a/Sources/dafl_project_flutter/lib/api/api.dart +++ b/Sources/dafl_project_flutter/lib/api/api.dart @@ -2,6 +2,8 @@ import 'dart:convert'; import 'dart:math'; import 'package:http/http.dart' as http; +import 'track.dart'; + class Api { //from dashboard final _clientId = '7ceb49d874b9404492246027e4d68cf8'; @@ -99,15 +101,30 @@ class Api { //functional methods - getCurrentlyPlayingTrack() async { + Future getCurrentlyPlayingTrack() async { var url = Uri.https('api.spotify.com', 'v1/me/player/currently-playing'); var token = await _getToken(); var response = await _client.get(url, headers: { 'Authorization': '$_tokenType $token', 'Content-Type': 'application/json' }); - // Implement treatment of data's + print(response.statusCode); + var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map; + return decodedResponse['item']['id']; + } + + Future getTrackInfo(String id) async { + var url = Uri.https('api.spotify.com', 'v1/tracks/$id'); + var token = await _getToken(); + var response = await _client.get(url, headers: { + 'Authorization': '$_tokenType $token', + 'Content-Type': 'application/json' + }); var decodedResponse = jsonDecode(utf8.decode(response.bodyBytes)) as Map; - print(decodedResponse['item']['href']); + return Track( + decodedResponse['artists'][0]['name'], + decodedResponse['name'], + decodedResponse['album']['images'] + [decodedResponse['album']['images'].length - 1]['url']); } } diff --git a/Sources/dafl_project_flutter/lib/api/in_app_browser.dart b/Sources/dafl_project_flutter/lib/api/in_app_browser.dart index 1670995..705ca9e 100644 --- a/Sources/dafl_project_flutter/lib/api/in_app_browser.dart +++ b/Sources/dafl_project_flutter/lib/api/in_app_browser.dart @@ -1,4 +1,5 @@ import 'dart:io'; +import 'package:dafl_project_flutter/api/track.dart'; import 'package:dafl_project_flutter/main.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; @@ -25,7 +26,6 @@ class MyInAppBrowser extends InAppBrowser { Future onLoadStart(url) async { if (url!.origin + url.path == MyApp.api.redirectUri) { await MyApp.api.requestUserAuthorization(url); - await MyApp.api.getCurrentlyPlayingTrack(); close(); } } diff --git a/Sources/dafl_project_flutter/lib/api/track.dart b/Sources/dafl_project_flutter/lib/api/track.dart new file mode 100644 index 0000000..f4658d6 --- /dev/null +++ b/Sources/dafl_project_flutter/lib/api/track.dart @@ -0,0 +1,11 @@ +class Track { + final String _artist; + final String _name; + final String _albumImage; + + Track(this._artist, this._name, this._albumImage); + + String get artist => _artist; + String get name => _name; + String get albumImage => _albumImage; +}