Releases: Zastai/MetaBrainz.MusicBrainz
Releases · Zastai/MetaBrainz.MusicBrainz
6.1.0
6.0.0
This version targets net6.0
and net8.0
only.
💥 Breaking Changes
- More OAuth2 extensions (#61) @Zastai
- Update support libraries (and drop
QueryException
) (#57) @Zastai
🚀 New Features and Improvements
- More OAuth2 extensions (#61) @Zastai
- Extend OAuth2 (#60) @Zastai
- Use trace sources for debug output (#58) @Zastai
- Refresh the package icon (#55) @Zastai
- Update the build SDK to version 3.1.0 (#53) @Zastai
📦 Dependency Updates
- Bump
MetaBrainz.Common.Json
to v6.0.2 (#63) @Zastai - Update support libraries (and drop
QueryException
) (#57) @Zastai - Update
MetaBrainz.Build.Sdk
to v3.1.1 (#56) @Zastai - Update the build SDK to version 3.1.0 (#53) @Zastai
- Bump JetBrains.Annotations from 2023.2.0 to 2023.3.0 (#50) @dependabot
📝 Documentation Updates
👻 Maintenance
5.0.1
🐛 Bug Fixes
📦 Dependency Updates
- Bump JetBrains.Annotations from 2021.3.0 to 2023.2.0 (#47) @dependabot
5.0.0
💥 Breaking Changes
- Make all async operations cancelable (#39) @Zastai
- This adds an optional cancellation token to all async methods, breaking binary compatibility.
Client code will need to be recompiled.
- This adds an optional cancellation token to all async methods, breaking binary compatibility.
🚀 New Features and Improvements
- Add a
RateLimitInfo
property toQuery
(#43) @Zastai- This enables manual request volume management while setting the request delay to 0.
- Make all async operations cancelable (#39) @Zastai
- Enumerable query results (#37) @Zastai
- This adds new
BrowseAll...
andFindAll...
methods, which return a newIStreamingQueryResults
interface.
That interface includes bothIEnumerable
andIAsyncEnumerabe
, enabling easy bulk processing of browse/search results usingforeach
orawait foreach
.
- This adds new
📦 Dependency Updates
👻 Maintenance
4.0.1
4.0.0
💥 API Changes (Breaking)
OAuth2
is now sealed andIDisposable
OAuth2.DefaultWebSite
was renamed toOAuth2.DefaultServer
OAuth2.WebSite
was renamed toOAuth2.Server
- Removed string constant:
Query.UserAgentUrl
- The
Query
constructor taking an optional string (a User-Agent header string) has been dropped- Instead, there is a zero-argument constructor, plus one taking one or more
ProductInfoHeaderValue
objects
- Instead, there is a zero-argument constructor, plus one taking one or more
Query.DefaultWebSite
was renamed toQuery.DefaultServer
Query.WebSite
was renamed toQuery.Server
- The type of
Query.DefaultUserAgent
andQuery.UserAgent
has changed toIList<ProductInfoHeaderValue>
Query.RemoveFromCollectionAsyncAsync
was renamed toQuery.RemoveFromCollectionAsync
- The
QueryException
constructor taking only a string was dropped (the cause in the two-argument constructor is now nullable and optional, so this change is source compatible)
🚀 API Changes (Non-Breaking)
- New string constant:
OAuth2.TokenRequestBodyType
OAuth2
has a new constructor, taking anHttpClient
and a flag to indicate whether it should take ownership of it- New method:
OAuth2.Close()
- New methods:
OAuth2.ConfigureClient()
andOAuth2.ConfigureClientCreation()
- The
PartialDate
constructor taking a string will now acceptnull
- The
PartialDate
relational operators will now accept null for either operand Query
has new constructor overloads for application/version/contact, with version and contact now acceptingnull
Query
has a new constructor, taking anHttpClient
and a flag to indicate whether it should take ownership of it- New methods:
Query.ConfigureClient()
andQuery.ConfigureClientCreation()
QueryException
has newCode
andReason
fieldsIRecording
now has aFirstReleaseDate
propertyIWork
now has aLanguages
property
💥 Breaking Changes
🚀 New Features and Improvements
🐛 Bug Fixes
📦 Dependency Updates
JetBrains.Annotation
→ 2021.3.0 (#26) @ZastaiMetaBrainz.Common.Json
→ 5.0.0 (#26) @ZastaiMetaBrainz.Build.Sdk
→ 2.1.1 (#26) @Zastai- New dependency
System.Net.Http
(#32) @Zastai System.Text.Json
→ 6.0.0 (#26) @Zastai
👻 Maintenance
3.0.2
3.0.1
3.0.0
v3.0.0 (2020-04-26)
This release has a completely rewritten JSON backend, using custom converters for flexibility.
Search processing was changed significantly. Instead of every searchable entity having a Score property, searches now return lists of ISearchResult<T>
, which contain the found item and its score. In addition, all the FindXXX()
methods now take an optional simple
parameter, to disable the advanced query syntax.
This release also adds proper support for genres, including lookups, using a new IGenre
interface.
Note that there are several breaking API changes in this release (hence the major version bump).
API Additions
- Entity Interface:
IAliasedEntity
- this contains the
Aliases
property, moved fromINamedEntity
andITitledEntity
- this contains the
- Entity Interface:
IGenre
(derives fromITag
) - Property:
IArea.SortName
- Property:
ILabel.SortName
- Property:
IRelationship.AttributeIds
- Search Interface:
ISearchAttribute<T>
- this adds an
Item
property of typeT
to theScore
provided by the baseISearchResult
- this adds an
- Method:
Query.LookupGenre()
- Method:
Query.LookupGenreAsync()
API Removals
- Entity Interface:
IUserRating
- Entity Interface:
IUserTag
- Property:
ICollection.ContentTypeText
ContentType
will be set toEntityType.Unknown
when an unknown value was found (which will then be stored inUnhandledProperties
)
- Property:
IDisc.OffsetCount
(the count is already available viaOffsets
) - Property:
IDiscIdLookupResult.Id
- Property:
INamedEntity.Aliases
(moved toIAliasedEntity
) - Property:
IRelationship.TargetTypeText
TargetType
will be set toEntityType.Unknown
when an unknown value was found (which will then be stored inUnhandledProperties
)
- Property:
ITitledEntity.Aliases
(moved toIAliasedEntity
) - Search Interface:
IFoundAnnotation
- Search Interface:
IFoundArea
- Search Interface:
IFoundArtist
- Search Interface:
IFoundCdStub
- Search Interface:
IFoundEvent
- Search Interface:
IFoundInstrument
- Search Interface:
IFoundLabel
- Search Interface:
IFoundPlace
- Search Interface:
IFoundRecording
- Search Interface:
IFoundRelease
- Search Interface:
IFoundReleaseGroup
- Search Interface:
IFoundSeries
- Search Interface:
IFoundTag
- Search Interface:
IFoundUrl
- Search Interface:
IFoundWork
API Changes
- Global:
- the
MbId
property was renamed to justId
- the
Genres
andUserGenres
properties now return objects of typeIGenre
- the
UserRating
property now returns objects of typeIRating
(with a null vote count) - the
UserTags
property now returns objects of typeITag
(with a null vote count)
- the
IAlias
:- the
Name
andPrimary
properties are no longer nullable
- the
IAnnotation
:- moved from
MetaBrainz.MusicBrainz.Interfaces.Searches
toMetaBrainz.MusicBrainz.Interfaces.Entities
- the
Type
property now has typeEntityType
- it will be set to
EntityType.Unknown
when an unknown value was found (which will then be stored inUnhandledProperties
)
- it will be set to
- moved from
IAuthorizationToken
:- the
AccessToken
,RefreshToken
andTokenType
properties are no longer nullable
- the
ICdStub
:- the
Id
,Title
andTrackCount
properties are no longer nullable
- the
IDisc
:- the
Id
andOffsets
properties are no longer nullable
- the
IIsrc
:- the
Recordings
andValue
properties are no longer nullable
- the
IRating
:- the
VoteCount
property is now nullable
- the
IRecording
:- the
Length
property is now a (nullable)TimeSpan
instead of anint
- the
IRelationship
:- the
TargetType
property is now nullable
- the
- renamed
IRelease.BarCode
toBarcode
ISearchResult
is now anIJsonBasedObject
ISearchResults<T>.Created
is now a (nullable)DateTimeOffset
ISimpleTrack
:- the
Length
property is now a (nullable)TimeSpan
instead of anint
- the
ITag
:- the
Name
property is no longer nullable - the
VoteCount
property is now nullable
- the
ITrack
:- the
Length
property is now a (nullable)TimeSpan
instead of anint
- the
- the
Query.FindXxx()
methods:- return value is now
ISearchResults<ISearchResult<IXxx>>
- in other words, the score is now moved up into a wrapper object
- extra optional parameter
simple
- if passed as
true
, the advanced query syntax is disabled, making for a simpler use case
- if passed as
- the doc comments were updated and tweaked
- return value is now
Other Changes
- a workaround for SEARCH-444 was added for URL entities too
- minor tweaks to the
OAuth2
class, slightly improving its async processing
Dependency Updates
- JetBrainz.Annotations → 2020.1.0
- MetaBrainz.Common.Json → 3.0.0
- System.Text.Json → 4.7.1
2.0.1
v2.0.1 (2020-04-17)
GitHub Issues
- #1: a workaround has been applied for
SEARCH-579.
Other Changes
QueryException
now has itsHelpLink
field set to the contents of thehelp
field in the JSON error response body.- Fixed a build issue causing the XML documentation to be missing from the NuGet package.