You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ombi/src/Ombi.Api.MusicBrainz/MusicBrainzApi.cs

51 lines
1.5 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
5 years ago
using Ombi.Api.MusicBrainz.Models;
5 years ago
using Ombi.Api.MusicBrainz.Models.Browse;
using Ombi.Api.MusicBrainz.Models.Search;
namespace Ombi.Api.MusicBrainz
{
public class MusicBrainzApi : IMusicBrainzApi
{
public MusicBrainzApi(IApi api)
{
_api = api;
}
private readonly IApi _api;
private const string _baseUrl = "https://musicbrainz.org/ws/2/";
public async Task<IEnumerable<Artist>> SearchArtist(string artistQuery)
{
var request = new Request("artist", _baseUrl, HttpMethod.Get);
request.AddQueryString("query", artistQuery);
AddHeaders(request);
var albums = await _api.Request<MusicBrainzResult<Artist>>(request);
return albums.Data.Where(x => !x.type.Equals("Person", StringComparison.CurrentCultureIgnoreCase));
}
5 years ago
public async Task<IEnumerable<Release>> GetReleaseForArtist(string artistId)
{
5 years ago
var request = new Request("release", _baseUrl, HttpMethod.Get);
request.AddQueryString("artist", artistId);
5 years ago
request.AddQueryString("inc", "recordings");
AddHeaders(request);
5 years ago
var releases = await _api.Request<ReleaseResult>(request);
return releases.releases;
}
private void AddHeaders(Request req)
{
req.AddHeader("Accept", "application/json");
}
}
}