Releases: Archomeda/Gw2Sharp
Releases · Archomeda/Gw2Sharp
v0.7.1
Services
Lifetime
- Because of the introduction of the
Gw2MumbleClient
that implementsIDisposable
(because it holds a reference to a memory mapped file that needs to be disposed),Gw2Client
now implementsIDisposable
as well and should be disposed accordingly
Note: This is a breaking change if you decide to start using the Mumble Link client, because it will only create disposable resources on the first call to.Update()
in theGw2MumbleClient
Fixes
- Fix
RecipesClient
to correctly inherit fromBaseEndpointBulkClient
instead ofBaseEndpointBulkAllClient
(/v2/recipes
doesn't support expanding all items at once, and this was incorrectly set on the implementation, the interface was correct) (#14 by @darthmaim)
v0.7.0
Endpoints
- Breaking:
Gw2Sharp.WebApi.V2.Models.CharacterCraftingDiscipline
has had the type of its propertyDiscipline
changed fromstring
toApiEnum<CraftingDisciplineType>
- Breaking:
Gw2Sharp.WebApi.V2.Models.MasteryLevel
has had the type of its propertyIcon
fixed fromstring
toRenderUrl
- Breaking: Enum value
TwoHandedToy
inGw2Sharp.WebApi.V2.Models.ItemWeaponType
has had its name fixed toToyTwoHanded
- Add
/v2/recipes
- Add
/v2/recipes/search
- Add missing enum
AgonyResistance
inGw2Sharp.WebApi.V2.Models.ItemAttributeType
- Add missing enums
Currency
,RandomUnlock
andMountRandomUnlock
inGw2Sharp.WebApi.V2.Models.ItemConsumableType
- Add missing enum
Immediate
inGw2Sharp.WebApi.V2.Models.ItemContainerType
- Add missing enum
Female
inGw2Sharp.WebApi.V2.Models.ItemRestriction
- Add missing enum
Key
inGw2Sharp.WebApi.V2.Models.ItemType
- Add missing enums
SharedSlot
,Minipet
andMountSkin
inGw2Sharp.WebApi.V2.Models.ItemUnlockType
- Add missing item type
Key
asGw2Sharp.WebApi.V2.Models.ItemKey
for pattern matching
Fixes
- Classes that implement
Gw2Sharp.WebApi.V2.Models.ICastableType
to support polymorphism (e.g. various items from/v2/items
) should no longer fail to deserialize withRenderUrl
properties (#12)
Refactoring
- The endpoint clients
Gw2Sharp.WebApi.V2.Clients.CommerceExchangeCoinsClient
andGw2Sharp.WebApi.V2.Clients.CommerceExchangeGemsClient
no longer inherit fromGw2Sharp.WebApi.V2.Clients.BaseEndpointBlobClient
and instead inherit fromGw2Sharp.WebApi.BlobClient
(they require the quantity to be given and cannot return a valid blob response without it)
v0.6.1
Endpoints
- Change property
Emblem
inGw2Sharp.WebApi.V2.Models.Guild
to be nullable because the API might leave this property out (#10)
Fixes
- Fix default instantiations of
ApiEnum
andApiFlags
that might causeInvalidCastException
s when requesting data by removing the non-genericApiEnum
andApiFlags
variants (they were only used internally for easy casting when deserializing) (#10)
v0.6.0
Endpoints
- Breaking:
Gw2Sharp.WebApi.V2.Models.GuildTeam
has had the type of its propertyLadders
changed fromPvpStatsLadders
toIReadOnlyDictionary<string, PvpStatsAggregate>
(reason: the keys in this property of this endpoint (/v2/guild/:id/teams
) are actually dynamic, just like the ones in/v2/pvp/stats
) - Hitting the rate limit will now throw a
TooManyRequestsException
instead ofUnexpectedStatusException
(#8) - Fix guild id from not being used in guild endpoints (#9)
- Add
/v2/pvp/amulets
- Add
/v2/pvp/games
- Add
/v2/pvp/heroes
- Add
/v2/pvp/ranks
- Add
/v2/pvp/seasons
- Add
/v2/pvp/seasons/:id/leaderboards
- Add
/v2/pvp/seasons/:id/leaderboards/:board/:region
- Add
/v2/pvp/standings
- Add
/v2/pvp/stats
- Add
/v2/quaggans
- Add
/v2/quests
- Add
/v2/races
- Add
/v2/raids
- Change
ICharactersIdClient
to useIBlobClient<Character>
in order to consistently acceptGetAsync()
(/v2/characters/:id
) - Change
IContinentsIdClient
to useIBlobClient<Continent>
in order to consistently acceptGetAsync()
(/v2/continents/:continent_id
) - Change
IContinentsFloorsIdClient
to useIBlobClient<ContinentFloor>
in order to consistently acceptGetAsync()
(/v2/continents/:continent_id/floors/:floor_id
) - Change
IContinentsFloorsRegionsIdClient
to useIBlobClient<ContinentFloorRegion>
in order to consistently acceptGetAsync()
(/v2/continents/:id/floors/:floor_id/regions/:region_id
) - Change
IContinentsFloorsRegionsMapsIdClient
to useIBlobClient<ContinentFloorRegionMap>
in order to consistently acceptGetAsync()
(/v2/continents/:id/floors/:floor_id/regions/:region_id/maps/:map_id
)
Caching
- Fix locale setting from being ignored when generating the cache id for cachable endpoints
Refactoring
- Breaking: The class
Gw2Sharp.WebApi.V2.Models.PvpStatsLadders
has been fully removed since it's no longer used - Breaking: The following properties have had their types changed from
DateTime
toDateTimeOffset
:LastModified
andCreated
inGw2Sharp.WebApi.V2.Models.Account
LastModified
andCreated
inGw2Sharp.WebApi.V2.Models.Character
LastModified
andCreated
inGw2Sharp.WebApi.V2.Models.CharactersCore
Created
inGw2Sharp.WebApi.V2.Models.CommerceTransactionCurrent
Created
andPurchased
inGw2Sharp.WebApi.V2.Models.CommerceTransactionHistory
Time
inGw2Sharp.WebApi.V2.Models.GuildLog
Joined
inGw2Sharp.WebApi.V2.Models.GuildMember
Started
andEnded
inGw2Sharp.WebApi.V2.Models.GuildTeamGame
ExpiresAt
andIssuedAt
inGw2Sharp.WebApi.V2.Models.SubTokenInfo
- Breaking: The following arguments have had their types changed from
DateTime
toDateTimeOffset
:expire
inGw2Sharp.WebApi.V2.Clients.ICreateSubtokenClient.Expires()
expire
inGw2Sharp.WebApi.V2.Clients.CreateSubtokenClient.Expires()
v0.5.0
Endpoints
- Add render service which can be found under
IGw2WebApiClient.Render
(right next toIGw2WebApiClient.V2
) (#6) - Add
RenderUrl
type to directly access download methods from the render client - Add
/v2/novelties
- Add
/v2/outfits
- Add
/v2/pets
- Add
/v2/professions
Caching
- Add
ArchiveCacheMethod
to support caching large blobs of data in a ZIP archive on disk (e.g. images from render)
Fixes
- Breaking: Fix types of
Coordinates2.X
andCoordinates2.Y
from int to double
Refactoring
- Breaking: All web API v2 properties that are URLs have been changed from type
string
to typeGw2Sharp.WebApi.RenderUrl
- Breaking:
Gw2Sharp.WebApi.Gw2WebApiClient
can no longer be instantiated directly; useGw2Sharp.Gw2Client
instead - Breaking:
Gw2Sharp.WebApi.IConnection
andGw2Sharp.WebApi.Connection
have been moved into the rootGw2Sharp
namespace - Breaking:
Gw2Sharp.WebApi.V2.Models.Maps.MapType
andGw2Sharp.WebApi.V2.Models.Coordinates2
have been moved into theGw2Sharp.Models
namespace - Breaking: A bunch of overloaded constructors of
Gw2Sharp.Connection
have been simplified into one constructor with optional parameters - Breaking:
Gw2Sharp.IConnection.RequestAsync
has its signature changed to include a parameter of typeGw2Sharp.IGw2Client
- Breaking: All custom JSON converters inside the
Gw2Sharp.WebApi.V2.Models.Converters
namespace have been moved into theGw2Sharp.Json.Converters
namespace - Breaking: All web API clients no longer have public constructors; access them through
Gw2Sharp.Gw2Client
instead
Deprecation removals
- Following up on version 0.4.0, the methods
ICacheMethod.HasAsync
,ICacheMethod.GetAsync
andICacheMethod.GetOrNullAsync
have been removed
v0.4.1
v0.4.0
Endpoints
- Add
/v2/account/novelties
- Add
/v2/characters/:id/quests
- Add
/v2/mailcarriers
- Add
/v2/mapchests
- Add
/v2/maps
- Add
/v2/masteries
- Add
/v2/materials
- Add
/v2/minis
- Add
/v2/mounts/skills
- Add
/v2/mounts/types
- Add
/v2/worldbosses
- Add
IColorsClient.Fur
(/v2/colors
)
Fixes
- Fix
ApiEnum<T>.IsUnknown
detection when the API uses snake_case or camelCase enums instead of PascalCase - Add HTTP 401 responses as alias for
AuthorizationRequiredException
- Add
Invalid access token
error response as alias forInvalidAccessTokenException
- Authorization error responses are now matched case insensitive to their exception counterpart
- Prevent possible race condition and infinite loop when collecting garbage from old cache items (#3)
Refactoring
- Breaking: Various endpoint clients with child endpoint clients and/or extra parameters have had their virtual property setters removed; you can still override the property for customization however
(reason: it's discouraged to call virtual methods or set virtual properties from a constructor in a non-sealed class) - Breaking:
IGuildIdLogClient.ParamSince
and its implementationGuildIdLogClient.ParamSince
are no longer virtual and no longer have a public setter to follow convention of e.g.CreateSubtokenClient
(useIGuildIdLogClient.Since(int? since)
to set this parameter with the fluent design pattern) - Breaking: Since the settings in
IConnection
are only used interally, the.Connection
property ofIGw2WebApiClient
,IGw2WebApiV2Client
and all endpoint clients have been either removed or are now marked as internal
(if you still want to keep track of these settings, you should keep a reference to the instance yourself) - Most
Connection
properties have a public setter to allow changes after object creation - Breaking:
ICacheMethod
and its implementations received a small clean-up due to it being an overengineered interface (all deprecations will be fully removed in 0.5.0+):HasAsync
is marked as deprecated and is unused in Gw2Sharp from now onGetAsync
is marked as deprecated and is unused in Gw2Sharp from now onGetOrNullAsync
is marked as deprecated and is renamed toTryGetAsync
(functionality is the same)
v0.3.1
v0.3.0
Features
- Breaking: Remove
.GetWithResponseAsync()
,.AllWithResponseAsync()
,.IdsWithResponseAsync()
,.ManyWithResponseAsync()
and.PageWithResponseAsync()
of all decendants ofIClient
.
Response information is now returned in theIApiV2Object.HttpResponseInfo
property of the return objects of all respective*Async()
methods). - Add support for the
Last-Modified
header (can be accessed inIApiV2Object.HttpResponseInfo
)
Refactoring
- Breaking: In
IPaginatedClient<TObject>
, thePageAsync(int page, CancellationToken cancellationToken, int pageSize)
method has had its order of parameters changed toPageAsync(int page, int pageSize, CancellationToken cancellationToken)
.
Endpoints
- Breaking: Update
/v2/account
and all subendpoints to a minimum schema version of2019-02-21T00:00:00.000Z
- Breaking: Update
/v2/characters
and all subendpoints to schema version2019-02-21T00:00:00.000Z
- Add
/v2/account/dailycrafting
- Add
/v2/account/luck
- Add
/v2/account/mapchests
- Add
/v2/account/mounts/skins
- Add
/v2/account/mounts/types
- Add
/v2/account/worldbosses
- Add
/v2/dailycrafting
- Add
/v2/home/nodes
v0.2.0
Endpoints
- Breaking: Update
/v2/account/home/cats
to schema version2019-03-22T00:00:00.000Z
- Breaking: Update
/v2/achievements/daily
to schema version2019-05-16T00:00:00.000Z
- Breaking: Update
/v2/achievements/daily/tomorrow
to schema version2019-05-16T00:00:00.000Z
- Breaking: Remove
/v2/cats
in favor of/v2/home/cats
- Add
/v2/createsubtoken
- Add
/v2/tokeninfo