Skip to content

Commit da17b94

Browse files
authored
Merge pull request #85 from avatar29A/dev
Prepare version 4.0 release
2 parents d142760 + 4ebd6f9 commit da17b94

File tree

16 files changed

+186
-66
lines changed

16 files changed

+186
-66
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Implementation of the [MusicBrainz](https://musicbrainz.org/) API version 2 for
1010

1111
- First class MusicBrainz entities `Artist`, `Label`, `ReleaseGroup`, `Release` and `Recording` supporting asynchronous `Get` (lookup by MBID), `Search` and `Browse`.
1212
- Advanced `Search` using Lucene query syntax (see [search documentation](https://musicbrainz.org/doc/MusicBrainz_API/Search) for supported fields).
13-
- Support for sub-queries in lookup requests (see MusicBrainz [documentation](https://musicbrainz.org/doc/MusicBrainz_API#inc=_arguments_which_affect_subqueries) and [wiki](https://wiki.musicbrainz.org/User:Nikki/ws/2) for a list of supported `inc` parameters).
13+
- Support for sub-queries in lookup requests (see MusicBrainz [documentation](https://musicbrainz.org/doc/MusicBrainz_API#Subqueries) and [wiki](https://wiki.musicbrainz.org/User:Nikki/ws/2) for a list of supported `inc` parameters).
1414
- Limited support for entity relationships.
1515

1616
More information about the MusicBrainz API can be found in the [documentation](https://musicbrainz.org/doc/MusicBrainz_API).

assets/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Implementation of the [MusicBrainz](https://musicbrainz.org/) API version 2 for
66

77
- First class MusicBrainz entities `Artist`, `Label`, `ReleaseGroup`, `Release` and `Recording` supporting asynchronous `Get` (lookup by MBID), `Search` and `Browse`.
88
- Advanced `Search` using Lucene query syntax (see [search documentation](https://musicbrainz.org/doc/MusicBrainz_API/Search) for supported fields).
9-
- Support for sub-queries in lookup requests (see MusicBrainz [documentation](https://musicbrainz.org/doc/MusicBrainz_API#inc=_arguments_which_affect_subqueries) and [wiki](https://wiki.musicbrainz.org/User:Nikki/ws/2) for a list of supported `inc` parameters).
9+
- Support for sub-queries in lookup requests (see MusicBrainz [documentation](https://musicbrainz.org/doc/MusicBrainz_API#Subqueries) and [wiki](https://wiki.musicbrainz.org/User:Nikki/ws/2) for a list of supported `inc` parameters).
1010
- Limited support for entity relationships.
1111

1212
More information about the MusicBrainz API can be found [here](https://musicbrainz.org/doc/MusicBrainz_API).

src/Hqub.MusicBrainz.Client/Example5.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ private static async Task Browse(MusicBrainzClient client, string name)
3636
Console.WriteLine();
3737

3838
// Show official albums.
39-
foreach (var item in groups.Items.Where(g => IsOfficial(g)).OrderBy(g => g.FirstReleaseDate))
39+
foreach (var item in groups.Items.Where(IsOfficial).OrderBy(g => g.FirstReleaseDate))
4040
{
4141
Console.WriteLine(" {0} - {1} {2} {3}", item.FirstReleaseDate.ToShortDate(),
4242
item.Id, GetRating(item.Rating, 10), item.Title);
@@ -47,7 +47,7 @@ private static async Task Browse(MusicBrainzClient client, string name)
4747
Console.WriteLine();
4848

4949
// Show compilations.
50-
foreach (var item in groups.Items.Where(g => IsCompilation(g)).OrderBy(g => g.FirstReleaseDate))
50+
foreach (var item in groups.Items.Where(IsCompilation).OrderBy(g => g.FirstReleaseDate))
5151
{
5252
Console.WriteLine(" {0} - {1} {2} {3}", item.FirstReleaseDate.ToShortDate(),
5353
item.Id, GetRating(item.Rating, 10), item.Title);

src/Hqub.MusicBrainz.Client/Example7.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Hqub.MusicBrainz.Client
88

99
/// <summary>
1010
/// Search for a label using <c>client.Labels.SearchAsync()</c> and lookup label details
11-
/// like releases and related urls using <c>clients.Label.GetAsync()</c>.
11+
/// like releases and related urls using <c>client.Labels.GetAsync()</c>.
1212
/// </summary>
1313
public class Example7
1414
{

src/Hqub.MusicBrainz.Client/FetchTestData.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public static async Task Download(bool overwrite = false)
4343
foreach (var item in Data)
4444
{
4545
await Get(client, item.Key, item.Value, overwrite);
46-
4746
}
4847

4948
Console.Write("Done. Press any key to quit.");

src/Hqub.MusicBrainz.Client/Program.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ private static async Task Main(string[] args)
1414
{
1515
await RunExamples();
1616
}
17+
catch (WebServiceException e)
18+
{
19+
Error(e);
20+
}
1721
catch (Exception e)
1822
{
1923
Console.WriteLine(e.Message);
@@ -66,5 +70,23 @@ private static void Header(string title)
6670

6771
Console.ForegroundColor = color;
6872
}
73+
74+
private static void Error(WebServiceException e)
75+
{
76+
var color = Console.ForegroundColor;
77+
78+
Console.ForegroundColor = ConsoleColor.DarkRed;
79+
80+
Console.WriteLine();
81+
Console.WriteLine("MusicBrainz web service reported an error");
82+
83+
Console.ForegroundColor = color;
84+
85+
Console.WriteLine(" Requested URL: " + e.Uri);
86+
Console.WriteLine(" Status Code: " + e.StatusCode);
87+
Console.WriteLine(" Message: " + e.Message);
88+
Console.WriteLine();
89+
90+
}
6991
}
7092
}

src/Hqub.MusicBrainz.Tests/Hqub.MusicBrainz.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050

5151
<ItemGroup>
5252
<PackageReference Include="NUnit" Version="4.4.0" />
53-
<PackageReference Include="NUnit3TestAdapter" Version="5.1.0" />
54-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
53+
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0" />
54+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
5555
</ItemGroup>
5656

5757
<ItemGroup>

src/Hqub.MusicBrainz.Tests/ReleaseGetTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void TestReleaseElements()
3636
Assert.That(release.Date, Is.EqualTo("2012-06-11"));
3737
Assert.That(release.Country, Is.EqualTo("US"));
3838
Assert.That(release.Barcode, Is.EqualTo("809236126221"));
39+
Assert.That(release.Packaging, Is.EqualTo("Cardboard/Paper Sleeve"));
3940
}
4041

4142
[Test]
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
namespace Hqub.MusicBrainz.Tests
2+
{
3+
using NUnit.Framework;
4+
5+
public class UrlBuilder
6+
{
7+
private MusicBrainzClient client;
8+
9+
[OneTimeSetUp]
10+
public void Init()
11+
{
12+
client = new MusicBrainzClient();
13+
}
14+
15+
[Test]
16+
public void TestLookupRequest()
17+
{
18+
var request = client.Releases.Get("00000000-0000-0000-0000-000000000000");
19+
20+
const string expected = "release/00000000-0000-0000-0000-000000000000?fmt=json";
21+
22+
Assert.That(request.ToString(), Is.EqualTo(expected));
23+
24+
request.Include("artists", "tags");
25+
26+
Assert.That(request.ToString(), Is.EqualTo(expected + "&inc=artists+tags"));
27+
}
28+
29+
[Test]
30+
public void TestSearchRequest()
31+
{
32+
var request = client.Releases.Search("search-string");
33+
34+
const string expected = "release?query=search-string&fmt=json";
35+
36+
Assert.That(request.ToString(), Is.EqualTo(expected));
37+
38+
request.Limit(10);
39+
40+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10"));
41+
42+
request.Offset(20);
43+
44+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10&offset=20"));
45+
}
46+
47+
[Test]
48+
public void TestBrowseRequest()
49+
{
50+
var request = client.Releases.Browse("label", "00000000-0000-0000-0000-000000000000");
51+
52+
const string expected = "release?label=00000000-0000-0000-0000-000000000000&fmt=json";
53+
54+
Assert.That(request.ToString(), Is.EqualTo(expected));
55+
56+
request.Limit(10);
57+
58+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10"));
59+
60+
request.Offset(20);
61+
62+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10&offset=20"));
63+
64+
request.Include("artist-credits", "tags");
65+
66+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10&offset=20&inc=artist-credits+tags"));
67+
68+
request.Type("album|ep");
69+
70+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10&offset=20&inc=artist-credits+tags&type=album|ep"));
71+
72+
request.Status("official");
73+
74+
Assert.That(request.ToString(), Is.EqualTo(expected + "&limit=10&offset=20&inc=artist-credits+tags&type=album|ep&status=official"));
75+
}
76+
}
77+
}

src/Hqub.MusicBrainz/Entities/Release.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ public class Release : IEntity
6868
[DataMember(Name = "barcode")]
6969
public string Barcode { get; set; }
7070

71+
/// <summary>
72+
/// Gets or sets the packaging.
73+
/// </summary>
74+
[DataMember(Name = "packaging")]
75+
public string Packaging { get; set; }
76+
7177
/// <summary>
7278
/// Gets or sets the release-group.
7379
/// </summary>

0 commit comments

Comments
 (0)