Skip to content

Releases: Archomeda/Gw2Sharp

v0.7.1

02 Sep 22:26
d307a39
Compare
Choose a tag to compare
v0.7.1 Pre-release
Pre-release

Services

  • Add Mumble Link client as Gw2MumbleClient, which can be accessed through Gw2Client.Mumble (#7, #16)

Lifetime

  • Because of the introduction of the Gw2MumbleClient that implements IDisposable (because it holds a reference to a memory mapped file that needs to be disposed), Gw2Client now implements IDisposable 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 the Gw2MumbleClient

Fixes

  • Fix RecipesClient to correctly inherit from BaseEndpointBulkClient instead of BaseEndpointBulkAllClient (/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

16 Aug 19:02
10d35ba
Compare
Choose a tag to compare
v0.7.0 Pre-release
Pre-release

Endpoints

  • Breaking: Gw2Sharp.WebApi.V2.Models.CharacterCraftingDiscipline has had the type of its property Discipline changed from string to ApiEnum<CraftingDisciplineType>
  • Breaking: Gw2Sharp.WebApi.V2.Models.MasteryLevel has had the type of its property Icon fixed from string to RenderUrl
  • Breaking: Enum value TwoHandedToy in Gw2Sharp.WebApi.V2.Models.ItemWeaponType has had its name fixed to ToyTwoHanded
  • Add /v2/recipes
  • Add /v2/recipes/search
  • Add missing enum AgonyResistance in Gw2Sharp.WebApi.V2.Models.ItemAttributeType
  • Add missing enums Currency, RandomUnlock and MountRandomUnlock in Gw2Sharp.WebApi.V2.Models.ItemConsumableType
  • Add missing enum Immediate in Gw2Sharp.WebApi.V2.Models.ItemContainerType
  • Add missing enum Female in Gw2Sharp.WebApi.V2.Models.ItemRestriction
  • Add missing enum Key in Gw2Sharp.WebApi.V2.Models.ItemType
  • Add missing enums SharedSlot, Minipet and MountSkin in Gw2Sharp.WebApi.V2.Models.ItemUnlockType
  • Add missing item type Key as Gw2Sharp.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 with RenderUrl properties (#12)

Refactoring

  • The endpoint clients Gw2Sharp.WebApi.V2.Clients.CommerceExchangeCoinsClient and Gw2Sharp.WebApi.V2.Clients.CommerceExchangeGemsClient no longer inherit from Gw2Sharp.WebApi.V2.Clients.BaseEndpointBlobClient and instead inherit from Gw2Sharp.WebApi.BlobClient (they require the quantity to be given and cannot return a valid blob response without it)

v0.6.1

11 Aug 10:27
d9c9e84
Compare
Choose a tag to compare
v0.6.1 Pre-release
Pre-release

Endpoints

  • Change property Emblem in Gw2Sharp.WebApi.V2.Models.Guild to be nullable because the API might leave this property out (#10)

Fixes

  • Fix default instantiations of ApiEnum and ApiFlags that might cause InvalidCastExceptions when requesting data by removing the non-generic ApiEnum and ApiFlags variants (they were only used internally for easy casting when deserializing) (#10)

v0.6.0

09 Aug 19:04
6c1df50
Compare
Choose a tag to compare
v0.6.0 Pre-release
Pre-release

Endpoints

  • Breaking: Gw2Sharp.WebApi.V2.Models.GuildTeam has had the type of its property Ladders changed from PvpStatsLadders to IReadOnlyDictionary<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 of UnexpectedStatusException (#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 use IBlobClient<Character> in order to consistently accept GetAsync() (/v2/characters/:id)
  • Change IContinentsIdClient to use IBlobClient<Continent> in order to consistently accept GetAsync() (/v2/continents/:continent_id)
  • Change IContinentsFloorsIdClient to use IBlobClient<ContinentFloor> in order to consistently accept GetAsync() (/v2/continents/:continent_id/floors/:floor_id)
  • Change IContinentsFloorsRegionsIdClient to use IBlobClient<ContinentFloorRegion> in order to consistently accept GetAsync() (/v2/continents/:id/floors/:floor_id/regions/:region_id)
  • Change IContinentsFloorsRegionsMapsIdClient to use IBlobClient<ContinentFloorRegionMap> in order to consistently accept GetAsync() (/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 to DateTimeOffset:
    • LastModified and Created in Gw2Sharp.WebApi.V2.Models.Account
    • LastModified and Created in Gw2Sharp.WebApi.V2.Models.Character
    • LastModified and Created in Gw2Sharp.WebApi.V2.Models.CharactersCore
    • Created in Gw2Sharp.WebApi.V2.Models.CommerceTransactionCurrent
    • Created and Purchased in Gw2Sharp.WebApi.V2.Models.CommerceTransactionHistory
    • Time in Gw2Sharp.WebApi.V2.Models.GuildLog
    • Joined in Gw2Sharp.WebApi.V2.Models.GuildMember
    • Started and Ended in Gw2Sharp.WebApi.V2.Models.GuildTeamGame
    • ExpiresAt and IssuedAt in Gw2Sharp.WebApi.V2.Models.SubTokenInfo
  • Breaking: The following arguments have had their types changed from DateTime to DateTimeOffset:
    • expire in Gw2Sharp.WebApi.V2.Clients.ICreateSubtokenClient.Expires()
    • expire in Gw2Sharp.WebApi.V2.Clients.CreateSubtokenClient.Expires()

v0.5.0

28 Jul 13:01
0b80316
Compare
Choose a tag to compare
v0.5.0 Pre-release
Pre-release

Endpoints

  • Add render service which can be found under IGw2WebApiClient.Render (right next to IGw2WebApiClient.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 and Coordinates2.Y from int to double

Refactoring

  • Breaking: All web API v2 properties that are URLs have been changed from type string to type Gw2Sharp.WebApi.RenderUrl
  • Breaking: Gw2Sharp.WebApi.Gw2WebApiClient can no longer be instantiated directly; use Gw2Sharp.Gw2Client instead
  • Breaking: Gw2Sharp.WebApi.IConnection and Gw2Sharp.WebApi.Connection have been moved into the root Gw2Sharp namespace
  • Breaking: Gw2Sharp.WebApi.V2.Models.Maps.MapType and Gw2Sharp.WebApi.V2.Models.Coordinates2 have been moved into the Gw2Sharp.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 type Gw2Sharp.IGw2Client
  • Breaking: All custom JSON converters inside the Gw2Sharp.WebApi.V2.Models.Converters namespace have been moved into the Gw2Sharp.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 and ICacheMethod.GetOrNullAsync have been removed

v0.4.1

22 Jun 20:07
6b2061b
Compare
Choose a tag to compare
v0.4.1 Pre-release
Pre-release

Fixes

  • Fix memory cache garbage collection with keys other than a string causing InvalidCastExceptions

v0.4.0

22 Jun 10:16
530ed68
Compare
Choose a tag to compare
v0.4.0 Pre-release
Pre-release

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 for InvalidAccessTokenException
  • 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 implementation GuildIdLogClient.ParamSince are no longer virtual and no longer have a public setter to follow convention of e.g. CreateSubtokenClient (use IGuildIdLogClient.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 of IGw2WebApiClient, 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 on
    • GetAsync is marked as deprecated and is unused in Gw2Sharp from now on
    • GetOrNullAsync is marked as deprecated and is renamed to TryGetAsync (functionality is the same)

v0.3.1

13 Jun 20:10
1bbdbac
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release

Fixes

  • Don't leak cached authenticated requests (#1)
  • Use ConcurrentDictionary for MemoryCacheMethod for thread-safety (#2)

v0.3.0

27 May 23:22
46f17d2
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

Features

  • Breaking: Remove .GetWithResponseAsync(), .AllWithResponseAsync(), .IdsWithResponseAsync(), .ManyWithResponseAsync() and .PageWithResponseAsync() of all decendants of IClient.
    Response information is now returned in the IApiV2Object.HttpResponseInfo property of the return objects of all respective *Async() methods).
  • Add support for the Last-Modified header (can be accessed in IApiV2Object.HttpResponseInfo)

Refactoring

  • Breaking: In IPaginatedClient<TObject>, the PageAsync(int page, CancellationToken cancellationToken, int pageSize) method has had its order of parameters changed to PageAsync(int page, int pageSize, CancellationToken cancellationToken).

Endpoints

  • Breaking: Update /v2/account and all subendpoints to a minimum schema version of 2019-02-21T00:00:00.000Z
  • Breaking: Update /v2/characters and all subendpoints to schema version 2019-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

27 May 23:23
e2f1673
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

Endpoints

  • Breaking: Update /v2/account/home/cats to schema version 2019-03-22T00:00:00.000Z
  • Breaking: Update /v2/achievements/daily to schema version 2019-05-16T00:00:00.000Z
  • Breaking: Update /v2/achievements/daily/tomorrow to schema version 2019-05-16T00:00:00.000Z
  • Breaking: Remove /v2/cats in favor of /v2/home/cats
  • Add /v2/createsubtoken
  • Add /v2/tokeninfo