summaryrefslogtreecommitdiff
path: root/lib/network/music_api.dart
diff options
context:
space:
mode:
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();
+ }
+}