summaryrefslogtreecommitdiff
path: root/lib/network/music_api.dart
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-04-23 17:24:03 -0600
committerIván Ávalos <avalos@disroot.org>2023-04-23 20:53:58 -0600
commite6699735a68763787a74941b3402007738683c03 (patch)
treecd59324e108a298a1a657c30a73582f718a379bf /lib/network/music_api.dart
parent80bad7a1b1c31fb7a28d74796adcf44ee319f586 (diff)
downloadpmsna1-e6699735a68763787a74941b3402007738683c03.tar.gz
pmsna1-e6699735a68763787a74941b3402007738683c03.tar.bz2
pmsna1-e6699735a68763787a74941b3402007738683c03.zip
Initial WIP for practice 6
Diffstat (limited to 'lib/network/music_api.dart')
-rw-r--r--lib/network/music_api.dart32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/network/music_api.dart b/lib/network/music_api.dart
new file mode 100644
index 0000000..490c51d
--- /dev/null
+++ b/lib/network/music_api.dart
@@ -0,0 +1,32 @@
+import 'dart:convert';
+
+import 'package:http/http.dart' as http;
+import 'package:pmsna1/models/album.dart';
+import 'package:pmsna1/models/artist.dart';
+
+class MusicApi {
+ Uri artistUri(String artistId) => Uri.parse(
+ 'https://musicbrainz.org/ws/2/artist/$artistId?inc=release-groups&fmt=json');
+
+ Uri releaseGroupUri(String releaseGroupId) => Uri.parse(
+ 'https://musicbrainz.org/ws/2/release-group/$releaseGroupId?inc=artists&fmt=json');
+
+ Future<List<Album>?> getAlvvaysAlbums() async {
+ String id = '99450990-b24e-4132-bb68-235f8c3e2564';
+ http.Response result = await http.get(artistUri(id));
+ var list = jsonDecode(result.body)['release-groups'] as List;
+ if (result.statusCode != 200) {
+ return null;
+ }
+ return list.map((map) => Album.fromMap(map)).toList();
+ }
+
+ Future<List<Artist>?> getAlbumArtists(String id) async {
+ http.Response result = await http.get(releaseGroupUri(id));
+ var list = jsonDecode(result.body)['artist-credit'] as List;
+ if (result.statusCode != 200) {
+ return null;
+ }
+ return list.map((map) => Artist.fromMap(map["artist"])).toList();
+ }
+}