diff --git a/ESI.NET/ESI.NET.csproj b/ESI.NET/ESI.NET.csproj index cb1585f..42392cf 100644 --- a/ESI.NET/ESI.NET.csproj +++ b/ESI.NET/ESI.NET.csproj @@ -8,7 +8,7 @@ - netcoreapp3.1;netstandard2.0;net462;net47;net471;net472;net48;net6.0;net7.0 + net6.0;net7.0;netcoreapp3.1;netstandard2.0;net8.0 true 2023.12.12 Psianna Archeia @@ -21,15 +21,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/ESI.NET/EsiClient.cs b/ESI.NET/EsiClient.cs index 5b00fe4..b84e5e1 100644 --- a/ESI.NET/EsiClient.cs +++ b/ESI.NET/EsiClient.cs @@ -141,6 +141,7 @@ public void SetCharacterData(AuthorizedCharacterData data) Universe = new UniverseLogic(client, config, data); } + [Obsolete] public void SetIfNoneMatchHeader(string eTag) => EsiRequest.ETag = eTag; } diff --git a/ESI.NET/EsiRequest.cs b/ESI.NET/EsiRequest.cs index 73b7606..f68b700 100644 --- a/ESI.NET/EsiRequest.cs +++ b/ESI.NET/EsiRequest.cs @@ -4,6 +4,7 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace ESI.NET @@ -12,7 +13,18 @@ internal static class EsiRequest { internal static string ETag; - public static async Task> Execute(HttpClient client, EsiConfig config, RequestSecurity security, HttpMethod httpMethod, string endpoint, Dictionary replacements = null, string[] parameters = null, object body = null, string token = null) + public static async Task> Execute( + HttpClient client, + EsiConfig config, + RequestSecurity security, + HttpMethod httpMethod, + string endpoint, + string eTag = null, + CancellationToken cancellationToken = default, + Dictionary replacements = null, + string[] parameters = null, + object body = null, + string token = null) { var path = $"{httpMethod}|{endpoint}"; @@ -32,22 +44,24 @@ public static async Task> Execute(HttpClient client, EsiConfig if (security == RequestSecurity.Authenticated) { if (token == null) - throw new ArgumentException("The request endpoint requires SSO authentication and a Token has not been provided."); + throw new ArgumentException( + "The request endpoint requires SSO authentication and a Token has not been provided."); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); } - if (ETag != null) + if (eTag != null || ETag != null) { - request.Headers.Add("If-None-Match", $"\"{ETag}\""); + request.Headers.Add("If-None-Match", $"\"{eTag ?? ETag}\""); ETag = null; } //Serialize post body data if (body != null) - request.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); + request.Content = + new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); //Output final object - return new EsiResponse(await client.SendAsync(request).ConfigureAwait(false), path); + return new EsiResponse(await client.SendAsync(request, cancellationToken).ConfigureAwait(false), path); } public enum RequestSecurity @@ -56,4 +70,4 @@ public enum RequestSecurity Authenticated } } -} +} \ No newline at end of file diff --git a/ESI.NET/Logic/AllianceLogic.cs b/ESI.NET/Logic/AllianceLogic.cs index 2433f17..b2e1467 100644 --- a/ESI.NET/Logic/AllianceLogic.cs +++ b/ESI.NET/Logic/AllianceLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.Alliance; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -12,22 +13,32 @@ public class AllianceLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public AllianceLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public AllianceLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /alliances/ /// /// - public async Task> All() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/alliances/"); + public async Task> All(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/alliances/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /alliances/{alliance_id}/ /// /// /// - public async Task> Information(int alliance_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/alliances/{alliance_id}/", + public async Task> Information(int alliance_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/alliances/{alliance_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "alliance_id", alliance_id.ToString() } @@ -38,8 +49,12 @@ public async Task> Information(int alliance_id) /// /// /// - public async Task> Corporations(int alliance_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/alliances/{alliance_id}/corporations/", + public async Task> Corporations(int alliance_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/alliances/{alliance_id}/corporations/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "alliance_id", alliance_id.ToString() } @@ -50,8 +65,12 @@ public async Task> Corporations(int alliance_id) /// /// /// - public async Task> Icons(int alliance_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/alliances/{alliance_id}/icons/", + public async Task> Icons(int alliance_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/alliances/{alliance_id}/icons/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "alliance_id", alliance_id.ToString() } diff --git a/ESI.NET/Logic/AssetsLogic.cs b/ESI.NET/Logic/AssetsLogic.cs index 7a3d86d..0bedda8 100644 --- a/ESI.NET/Logic/AssetsLogic.cs +++ b/ESI.NET/Logic/AssetsLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -32,8 +33,12 @@ public AssetsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /// /// - public async Task>> ForCharacter(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/assets/", + public async Task>> ForCharacter(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/assets/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -49,8 +54,11 @@ public async Task>> ForCharacter(int page = 1) /// /// /// - public async Task>> LocationsForCharacter(List item_ids) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/assets/locations/", + public async Task>> LocationsForCharacter(List item_ids, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/assets/locations/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -63,8 +71,11 @@ public async Task>> LocationsForCharacter(List /// /// - public async Task>> NamesForCharacter(List item_ids) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/assets/names/", + public async Task>> NamesForCharacter(List item_ids, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/assets/names/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -78,8 +89,12 @@ public async Task>> NamesForCharacter(List item /// /// /// - public async Task>> ForCorporation(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/assets/", + public async Task>> ForCorporation(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/assets/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -95,8 +110,11 @@ public async Task>> ForCorporation(int page = 1) /// /// /// - public async Task>> LocationsForCorporation(List item_ids) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/corporations/{corporation_id}/assets/locations/", + public async Task>> LocationsForCorporation(List item_ids, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/corporations/{corporation_id}/assets/locations/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -109,8 +127,10 @@ public async Task>> LocationsForCorporation(List< /// /// /// - public async Task>> NamesForCorporation(List item_ids) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/corporations/{corporation_id}/assets/names/", + public async Task>> NamesForCorporation(List item_ids, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/corporations/{corporation_id}/assets/names/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } diff --git a/ESI.NET/Logic/BookmarksLogic.cs b/ESI.NET/Logic/BookmarksLogic.cs index 3c5089a..42c95af 100644 --- a/ESI.NET/Logic/BookmarksLogic.cs +++ b/ESI.NET/Logic/BookmarksLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -14,7 +15,9 @@ public class BookmarksLogic private readonly AuthorizedCharacterData _data; private readonly int character_id, corporation_id; - public BookmarksLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData data = null) + public BookmarksLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData data = null, + string eTag = null, + CancellationToken cancellationToken = default) { _client = client; _config = config; @@ -31,8 +34,12 @@ public BookmarksLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDa /// /characters/{character_id}/bookmarks/ /// /// - public async Task>> ForCharacter(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/bookmarks/", + public async Task>> ForCharacter(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/bookmarks/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -47,8 +54,12 @@ public async Task>> ForCharacter(int page = 1) /// /characters/{character_id}/bookmarks/folders/ /// /// - public async Task>> FoldersForCharacter(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/bookmarks/folders/", + public async Task>> FoldersForCharacter(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/bookmarks/folders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -63,8 +74,12 @@ public async Task>> FoldersForCharacter(int page = 1) /// /corporations/{corporation_id}/bookmarks/ /// /// - public async Task>> ForCorporation(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/bookmarks/", + public async Task>> ForCorporation(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/bookmarks/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -79,8 +94,12 @@ public async Task>> ForCorporation(int page = 1) /// /corporations/{corporation_id}/bookmarks/folders/ /// /// - public async Task>> FoldersForCorporation(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/bookmarks/folders/", + public async Task>> FoldersForCorporation(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/bookmarks/folders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } diff --git a/ESI.NET/Logic/CalendarLogic.cs b/ESI.NET/Logic/CalendarLogic.cs index 18da2b6..83db6a7 100644 --- a/ESI.NET/Logic/CalendarLogic.cs +++ b/ESI.NET/Logic/CalendarLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -29,8 +30,12 @@ public CalendarLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /characters/{character_id}/calendar/ /// /// - public async Task>> Events() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/calendar/", + public async Task>> Events(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/calendar/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -42,8 +47,12 @@ public async Task>> Events() /// /// /// - public async Task> Event(int event_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/calendar/{event_id}/", + public async Task> Event(int event_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/calendar/{event_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -57,8 +66,11 @@ public async Task> Event(int event_id) /// /// /// - public async Task> Respond(int event_id, EventResponse eventResponse) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/characters/{character_id}/calendar/{event_id}/", + public async Task> Respond(int event_id, EventResponse eventResponse, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/characters/{character_id}/calendar/{event_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -75,8 +87,12 @@ public async Task> Respond(int event_id, EventResponse eventR /// /// /// - public async Task>> Responses(int event_id) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/calendar/{event_id}/attendees/", + public async Task>> Responses(int event_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/calendar/{event_id}/attendees/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, diff --git a/ESI.NET/Logic/CharacterLogic.cs b/ESI.NET/Logic/CharacterLogic.cs index 965ae03..eeb017a 100644 --- a/ESI.NET/Logic/CharacterLogic.cs +++ b/ESI.NET/Logic/CharacterLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -30,8 +31,11 @@ public CharacterLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDa /// /// dynamic = long /// - public async Task>> Affiliation(int[] character_ids) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Post, "/characters/affiliation/", + public async Task>> Affiliation(int[] character_ids, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Post, + "/characters/affiliation/", + cancellationToken: cancellationToken, body: character_ids); /// @@ -39,8 +43,12 @@ public async Task>> Affiliation(int[] character_id /// /// /// - public async Task>> Names(int[] character_ids) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/characters/names/", + public async Task>> Names(int[] character_ids, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/characters/names/", + eTag: eTag, + cancellationToken: cancellationToken, parameters: new string[] { $"character_ids={string.Join(",", character_ids)}" @@ -51,8 +59,12 @@ public async Task>> Names(int[] character_ids) /// /// /// - public async Task> Information(int character_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/characters/{character_id}/", + public async Task> Information(int character_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/characters/{character_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -62,8 +74,12 @@ public async Task> Information(int character_id) /// /characters/{character_id}/agents_research/ /// /// - public async Task>> AgentsResearch() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/agents_research/", + public async Task>> AgentsResearch(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/agents_research/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -75,8 +91,12 @@ public async Task>> AgentsResearch() /// /// Which page of results to return /// - public async Task>> Blueprints(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/blueprints/", + public async Task>> Blueprints(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/blueprints/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -91,8 +111,12 @@ public async Task>> Blueprints(int page = 1) /// /characters/{character_id}/chat_channels/ /// /// - public async Task>> ChatChannels() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/chat_channels/", + public async Task>> ChatChannels(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/chat_channels/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -104,8 +128,12 @@ public async Task>> ChatChannels() /// /// /// - public async Task>> CorporationHistory(int character_id) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/characters/{character_id}/corporationhistory/", + public async Task>> CorporationHistory(int character_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/characters/{character_id}/corporationhistory/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -116,8 +144,10 @@ public async Task>> CorporationHistory(int /// /// The target characters to calculate the charge for /// - public async Task> CSPA(object character_ids) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/cspa/", + public async Task> CSPA(object character_ids, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/cspa/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -129,8 +159,12 @@ public async Task> CSPA(object character_ids) /// /characters/{character_id}/fatigue/ /// /// - public async Task> Fatigue() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/fatigue/", + public async Task> Fatigue(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/fatigue/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -141,8 +175,12 @@ public async Task> Fatigue() /// /characters/{character_id}/medals/ /// /// - public async Task>> Medals() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/medals/", + public async Task>> Medals(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/medals/", + eTag: eTag, + cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -153,8 +191,12 @@ public async Task>> Medals() /// /characters/{character_id}/notifications/ /// /// - public async Task>> Notifications() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/notifications/", + public async Task>> Notifications(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/notifications/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -166,7 +208,8 @@ public async Task>> Notifications() /// /// public async Task>> ContactNotifications() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/notifications/contacts/", + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/notifications/contacts/", replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -179,7 +222,8 @@ public async Task>> ContactNotifications() /// /// public async Task> Portrait(int character_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/characters/{character_id}/portrait/", + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/characters/{character_id}/portrait/", replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -190,7 +234,8 @@ public async Task> Portrait(int character_id) /// /// public async Task> Roles() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/roles/", + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/roles/", replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -202,7 +247,8 @@ public async Task> Roles() /// /// public async Task>> Standings() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/standings/", + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/standings/", replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -214,7 +260,8 @@ public async Task>> Standings() /// /// public async Task>> Titles() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/titles/", + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/titles/", replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/ClonesLogic.cs b/ESI.NET/Logic/ClonesLogic.cs index a03e7c4..e453cc4 100644 --- a/ESI.NET/Logic/ClonesLogic.cs +++ b/ESI.NET/Logic/ClonesLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,8 +29,12 @@ public ClonesLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /characters/{character_id}/clones/ /// /// - public async Task> List() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/clones/", + public async Task> List(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/clones/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -40,8 +45,12 @@ public async Task> List() /// /characters/{character_id}/implants/ /// /// - public async Task> Implants() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/implants/", + public async Task> Implants(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/implants/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/ContactsLogic.cs b/ESI.NET/Logic/ContactsLogic.cs index 55a25a7..52d3757 100644 --- a/ESI.NET/Logic/ContactsLogic.cs +++ b/ESI.NET/Logic/ContactsLogic.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -35,8 +36,12 @@ public ContactsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /// /// - public async Task>> ListForCharacter(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/contacts/", + public async Task>> ListForCharacter(int page = 1, + string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/contacts/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -52,8 +57,12 @@ public async Task>> ListForCharacter(int page = 1) /// /// /// - public async Task>> ListForCorporation(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/contacts/", + public async Task>> ListForCorporation(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/contacts/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -69,8 +78,12 @@ public async Task>> ListForCorporation(int page = 1) /// /// /// - public async Task>> ListForAlliance(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/alliances/{alliance_id}/contacts/", + public async Task>> ListForAlliance(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/alliances/{alliance_id}/contacts/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "alliance_id", alliance_id.ToString() } @@ -89,7 +102,8 @@ public async Task>> ListForAlliance(int page = 1) /// /// /// - public async Task> Add(int[] contact_ids, decimal standing, int[] label_ids = null, bool? watched = null) + public async Task> Add(int[] contact_ids, decimal standing, int[] label_ids = null, + bool? watched = null,CancellationToken cancellationToken = default) { var body = contact_ids; @@ -101,7 +115,9 @@ public async Task> Add(int[] contact_ids, decimal standing, i if (watched != null) parameters.Add($"watched={watched}"); - return await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/contacts/", + return await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/contacts/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -119,7 +135,8 @@ public async Task> Add(int[] contact_ids, decimal standing, i /// /// /// - public async Task> Update(int[] contact_ids, decimal standing, int[] label_ids = null, bool? watched = null) + public async Task> Update(int[] contact_ids, decimal standing, int[] label_ids = null, + bool? watched = null, CancellationToken cancellationToken = default) { var body = contact_ids; @@ -131,7 +148,9 @@ public async Task> Update(int[] contact_ids, decimal standin if (watched != null) parameters.Add($"watched={watched}"); - return await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/characters/{character_id}/contacts/", + return await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/characters/{character_id}/contacts/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -146,8 +165,10 @@ public async Task> Update(int[] contact_ids, decimal standin /// /// /// - public async Task> Delete(int[] contact_ids) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/characters/{character_id}/contacts/", + public async Task> Delete(int[] contact_ids, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/characters/{character_id}/contacts/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -162,8 +183,12 @@ public async Task> Delete(int[] contact_ids) /// /characters/{character_id}/contacts/labels/ /// /// - public async Task>> LabelsForCharacter() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/contacts/labels/", + public async Task>> LabelsForCharacter(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/contacts/labels/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -174,8 +199,12 @@ public async Task>> LabelsForCharacter() /// /corporations/{corporation_id}/contacts/labels/ /// /// - public async Task>> LabelsForCorporation() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/contacts/labels/", + public async Task>> LabelsForCorporation(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/contacts/labels/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -187,7 +216,8 @@ public async Task>> LabelsForCorporation() /// /// public async Task>> LabelsForAlliance() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/alliances/{alliance_id}/contacts/labels/", + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/alliances/{alliance_id}/contacts/labels/", replacements: new Dictionary() { { "alliance_id", alliance_id.ToString() } diff --git a/ESI.NET/Logic/ContractsLogic.cs b/ESI.NET/Logic/ContractsLogic.cs index a83c643..3db04d7 100644 --- a/ESI.NET/Logic/ContractsLogic.cs +++ b/ESI.NET/Logic/ContractsLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -32,8 +33,12 @@ public ContractsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDa /// /// /// - public async Task>> Contracts(int region_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/contracts/public/{region_id}/", + public async Task>> Contracts(int region_id, int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/contracts/public/{region_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "region_id", region_id.ToString() } @@ -48,8 +53,13 @@ public async Task>> Contracts(int region_id, int page /// /// /// - public async Task>> ContractItems(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/contracts/public/items/{contract_id}/", + public async Task>> ContractItems(int contract_id, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/contracts/public/items/{contract_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "contract_id", contract_id.ToString() } @@ -64,8 +74,12 @@ public async Task>> ContractItems(int contract_id /// /// /// - public async Task>> ContractBids(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/contracts/public/bids/{contract_id}/", + public async Task>> ContractBids(int contract_id, int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/contracts/public/bids/{contract_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "contract_id", contract_id.ToString() } @@ -79,8 +93,12 @@ public async Task>> ContractBids(int contract_id, int page /// /characters/{character_id}/contracts/ /// /// - public async Task>> CharacterContracts(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/contracts/", + public async Task>> CharacterContracts(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/contracts/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -96,8 +114,12 @@ public async Task>> CharacterContracts(int page = 1) /// /// /// - public async Task>> CharacterContractItems(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/contracts/{contract_id}/items/", + public async Task>> CharacterContractItems(int contract_id, int page = 1, + string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/contracts/{contract_id}/items/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -114,8 +136,12 @@ public async Task>> CharacterContractItems(int co /// /// /// - public async Task>> CharacterContractBids(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/contracts/{contract_id}/bids/", + public async Task>> CharacterContractBids(int contract_id, int page = 1, + string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/contracts/{contract_id}/bids/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -131,8 +157,12 @@ public async Task>> CharacterContractBids(int contract_id, /// /corporations/{corporation_id}/contracts/ /// /// - public async Task>> CorporationContracts(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/contracts/", + public async Task>> CorporationContracts(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/contracts/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -148,8 +178,13 @@ public async Task>> CorporationContracts(int page = 1 /// /// /// - public async Task>> CorporationContractItems(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/contracts/{contract_id}/items/", + public async Task>> CorporationContractItems(int contract_id, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/contracts/{contract_id}/items/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, @@ -166,8 +201,12 @@ public async Task>> CorporationContractItems(int /// /// /// - public async Task>> CorporationContractBids(int contract_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/contracts/{contract_id}/bids/", + public async Task>> CorporationContractBids(int contract_id, int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/contracts/{contract_id}/bids/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, diff --git a/ESI.NET/Logic/CorporationLogic.cs b/ESI.NET/Logic/CorporationLogic.cs index ec08b91..514362a 100644 --- a/ESI.NET/Logic/CorporationLogic.cs +++ b/ESI.NET/Logic/CorporationLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -29,16 +30,24 @@ public CorporationLogic(HttpClient client, EsiConfig config, AuthorizedCharacter /// /corporations/npccorps/ /// /// - public async Task> NpcCorps() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/corporations/npccorps/"); + public async Task> NpcCorps(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/corporations/npccorps/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /corporations/{corporation_id}/ /// /// /// - public async Task> Information(int corporation_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/corporations/{corporation_id}/", + public async Task> Information(int corporation_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/corporations/{corporation_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -49,8 +58,12 @@ public async Task> Information(int corporation_id) /// /// /// - public async Task>> AllianceHistory(int corporation_id) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/corporations/{corporation_id}/alliancehistory/", + public async Task>> AllianceHistory(int corporation_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/corporations/{corporation_id}/alliancehistory/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -61,8 +74,12 @@ public async Task>> AllianceHistory(int corpor /// /// /// - public async Task>> Blueprints(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/blueprints/", + public async Task>> Blueprints(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/blueprints/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -78,8 +95,12 @@ public async Task>> Blueprints(int page = 1) /// /// /// - public async Task>> ContainerLogs(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/containers/logs/", + public async Task>> ContainerLogs(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/containers/logs/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -94,8 +115,12 @@ public async Task>> ContainerLogs(int page = 1) /// /corporations/{corporation_id}/divisions/ /// /// - public async Task> Divisions() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/divisions/", + public async Task> Divisions(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/divisions/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -106,8 +131,12 @@ public async Task> Divisions() /// /corporations/{corporation_id}/facilities/ /// /// - public async Task>> Facilities() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/facilities/", + public async Task>> Facilities(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/facilities/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -119,8 +148,12 @@ public async Task>> Facilities() /// /// /// - public async Task> Icons(int corporation_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/corporations/{corporation_id}/icons/", + public async Task> Icons(int corporation_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/corporations/{corporation_id}/icons/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -131,8 +164,12 @@ public async Task> Icons(int corporation_id) /// /// /// - public async Task>> Medals(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/medals/", + public async Task>> Medals(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/medals/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -147,8 +184,12 @@ public async Task>> Medals(int page = 1) /// /// /// - public async Task>> MedalsIssued(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/medals/issued/", + public async Task>> MedalsIssued(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/medals/issued/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -163,8 +204,12 @@ public async Task>> MedalsIssued(int page = 1) /// /corporations/{corporation_id}/members/ /// /// - public async Task> Members() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/members/", + public async Task> Members(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/members/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -175,8 +220,12 @@ public async Task> Members() /// /corporations/{corporation_id}/members/limit/ /// /// - public async Task> MemberLimit() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/members/limit/", + public async Task> MemberLimit(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/members/limit/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -187,8 +236,12 @@ public async Task> MemberLimit() /// /corporations/{corporation_id}/members/titles/ /// /// - public async Task>> MemberTitles() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/members/titles/", + public async Task>> MemberTitles(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/members/titles/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -199,8 +252,12 @@ public async Task>> MemberTitles() /// /corporations/{corporation_id}/membertracking/ /// /// - public async Task>> MemberTracking() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/membertracking/", + public async Task>> MemberTracking(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/membertracking/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -211,8 +268,12 @@ public async Task>> MemberTracking() /// /corporations/{corporation_id}/roles/ /// /// - public async Task>> Roles() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/roles/", + public async Task>> Roles(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/roles/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -223,8 +284,12 @@ public async Task>> Roles() /// /corporations/{corporation_id}/roles/history/ /// /// - public async Task>> RolesHistory() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/roles/history/", + public async Task>> RolesHistory(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, + HttpMethod.Get, "/corporations/{corporation_id}/roles/history/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -236,8 +301,12 @@ public async Task>> RolesHistory() /// /// /// - public async Task>> Shareholders(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/shareholders/", + public async Task>> Shareholders(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/shareholders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -252,8 +321,12 @@ public async Task>> Shareholders(int page = 1) /// /// /// - public async Task> Standings(int page = 1) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/standings/", + public async Task> Standings(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/standings/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -269,8 +342,12 @@ public async Task> Standings(int page = 1) /// /// /// - public async Task>> Starbases(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/starbases/", + public async Task>> Starbases(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/starbases/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -287,8 +364,12 @@ public async Task>> Starbases(int page = 1) /// /// /// - public async Task> Starbase(long starbase_id, int system_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/starbases/{starbase_id}/", + public async Task> Starbase(long starbase_id, int system_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/starbases/{starbase_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, @@ -304,8 +385,12 @@ public async Task> Starbase(long starbase_id, int syst /// /corporations/{corporation_id}/structures/ /// /// - public async Task>> Structures(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/structures/", + public async Task>> Structures(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/structures/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -320,8 +405,12 @@ public async Task>> Structures(int page = 1) /// /corporations/{corporation_id}/titles/ /// /// - public async Task>> Titles() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/titles/", + public async Task>> Titles(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/titles/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } diff --git a/ESI.NET/Logic/DogmaLogic.cs b/ESI.NET/Logic/DogmaLogic.cs index 71f7869..27c8c66 100644 --- a/ESI.NET/Logic/DogmaLogic.cs +++ b/ESI.NET/Logic/DogmaLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.Dogma; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -11,41 +12,60 @@ public class DogmaLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public DogmaLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public DogmaLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /dogma/attributes/ /// /// - public async Task> Attributes() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/attributes/"); + public async Task> Attributes(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/attributes/", + eTag: eTag, cancellationToken: cancellationToken); /// /// /dogma/attributes/{attribute_id}/ /// /// /// - public async Task> Attribute(int attribute_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/attributes/{attribute_id}/", + public async Task> Attribute(int attribute_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/dogma/attributes/{attribute_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { - { "attribute_id", attribute_id.ToString() } + { + "attribute_id", attribute_id.ToString() + } }); /// /// /dogma/effects/ /// /// - public async Task> Effects() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/effects/"); + public async Task> Effects(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/effects/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /dogma/effects/{effect_id}/ /// /// /// - public async Task> Effect(int effect_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/effects/{effect_id}/", + public async Task> Effect(int effect_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/dogma/effects/{effect_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "effect_id", effect_id.ToString() } @@ -57,8 +77,12 @@ public async Task> Effect(int effect_id) /// /// /// - public async Task> DynamicItem(int type_id, long item_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/dogma/dynamic/items/{type_id}/{item_id}/", + public async Task> DynamicItem(int type_id, long item_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/dogma/dynamic/items/{type_id}/{item_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "type_id", type_id.ToString() }, diff --git a/ESI.NET/Logic/FactionWarfareLogic.cs b/ESI.NET/Logic/FactionWarfareLogic.cs index 8d0b15b..dec9fa6 100644 --- a/ESI.NET/Logic/FactionWarfareLogic.cs +++ b/ESI.NET/Logic/FactionWarfareLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -31,50 +32,76 @@ public FactionWarfareLogic(HttpClient client, EsiConfig config, AuthorizedCharac /// /fw/wars/ /// /// - public async Task>> List() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/wars/"); + public async Task>> List(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/wars/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /fw/stats/ /// /// - public async Task>> Stats() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/stats/"); + public async Task>> Stats(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/stats/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /fw/systems/ /// /// - public async Task>> Systems() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/systems/"); + public async Task>> Systems(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/fw/systems/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// fw/leaderboards/ /// /// - public async Task>> Leaderboads() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/leaderboards/"); + public async Task>> Leaderboads(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/fw/leaderboards/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /fw/leaderboards/corporations/ /// /// - public async Task>> LeaderboardsForCorporations() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/leaderboards/corporations/"); + public async Task>> LeaderboardsForCorporations(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/fw/leaderboards/corporations/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /fw/leaderboards/characters/ /// /// - public async Task>> LeaderboardsForCharacters() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/fw/leaderboards/characters/"); + public async Task>> LeaderboardsForCharacters(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/fw/leaderboards/characters/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /corporations/{corporation_id}/fw/stats/ /// /// - public async Task> StatsForCorporation() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/fw/stats/", + public async Task> StatsForCorporation(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/fw/stats/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -85,8 +112,12 @@ public async Task> StatsForCorporation() /// /characters/{character_id}/fw/stats/ /// /// - public async Task> StatsForCharacter() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/fw/stats/", + public async Task> StatsForCharacter(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/fw/stats/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/FittingsLogic.cs b/ESI.NET/Logic/FittingsLogic.cs index 5e8a510..f708ff1 100644 --- a/ESI.NET/Logic/FittingsLogic.cs +++ b/ESI.NET/Logic/FittingsLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,8 +29,12 @@ public FittingsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /characters/{character_id}/fittings/ /// /// - public async Task>> List() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/fittings/", + public async Task>> List(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/fittings/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -41,8 +46,10 @@ public async Task>> List() /// /// /// - public async Task> Add(object fitting) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/fittings/", + public async Task> Add(object fitting, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/fittings/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -55,8 +62,10 @@ public async Task> Add(object fitting) /// /// /// - public async Task> Delete(int fitting_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/characters/{character_id}/fittings/{fitting_id}/", + public async Task> Delete(int fitting_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/characters/{character_id}/fittings/{fitting_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, diff --git a/ESI.NET/Logic/FleetsLogic.cs b/ESI.NET/Logic/FleetsLogic.cs index d316265..368ec7e 100644 --- a/ESI.NET/Logic/FleetsLogic.cs +++ b/ESI.NET/Logic/FleetsLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -30,8 +31,12 @@ public FleetsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /// /// - public async Task> Settings(long fleet_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/fleets/{fleet_id}/", + public async Task> Settings(long fleet_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/fleets/{fleet_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -45,8 +50,11 @@ public async Task> Settings(long fleet_id) /// /// /// - public async Task> UpdateSettings(long fleet_id, string motd = null, bool? is_free_move = null) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/fleets/{fleet_id}/", + public async Task> UpdateSettings(long fleet_id, string motd = null, + bool? is_free_move = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/fleets/{fleet_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -58,8 +66,11 @@ public async Task> UpdateSettings(long fleet_id, string motd /// /characters/{character_id}/fleet/ /// /// - public async Task> FleetInfo() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/fleet/", + public async Task> FleetInfo(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/fleet/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -71,8 +82,11 @@ public async Task> FleetInfo() /// /// /// - public async Task>> Members(long fleet_id) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/fleets/{fleet_id}/members/", + public async Task>> Members(long fleet_id, string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/fleets/{fleet_id}/members/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -88,8 +102,11 @@ public async Task>> Members(long fleet_id) /// /// /// - public async Task> InviteCharacter(long fleet_id, int character_id, FleetRole role, long wing_id = 0, long squad_id = 0) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/fleets/{fleet_id}/members/", + public async Task> InviteCharacter(long fleet_id, int character_id, FleetRole role, + long wing_id = 0, long squad_id = 0, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/fleets/{fleet_id}/members/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -106,8 +123,11 @@ public async Task> InviteCharacter(long fleet_id, int charac /// /// /// - public async Task> MoveCharacter(long fleet_id, int member_id, FleetRole role, long wing_id = 0, long squad_id = 0) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/fleets/{fleet_id}/members/{member_id}/", + public async Task> MoveCharacter(long fleet_id, int member_id, FleetRole role, + long wing_id = 0, long squad_id = 0, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/fleets/{fleet_id}/members/{member_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() }, @@ -122,8 +142,10 @@ public async Task> MoveCharacter(long fleet_id, int member_i /// /// /// - public async Task> KickCharacter(long fleet_id, int member_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/fleets/{fleet_id}/members/{member_id}/", + public async Task> KickCharacter(long fleet_id, int member_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/fleets/{fleet_id}/members/{member_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() }, @@ -136,8 +158,11 @@ public async Task> KickCharacter(long fleet_id, int member_i /// /// /// - public async Task>> Wings(long fleet_id) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/fleets/{fleet_id}/wings/", + public async Task>> Wings(long fleet_id, string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/fleets/{fleet_id}/wings/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -149,8 +174,10 @@ public async Task>> Wings(long fleet_id) /// /// /// - public async Task> CreateWing(long fleet_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/fleets/{fleet_id}/wings/", + public async Task> CreateWing(long fleet_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/fleets/{fleet_id}/wings/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() } @@ -164,8 +191,10 @@ public async Task> CreateWing(long fleet_id) /// /// /// - public async Task> RenameWing(long fleet_id, long wing_id, string name) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/fleets/{fleet_id}/wings/{wing_id}/", + public async Task> RenameWing(long fleet_id, long wing_id, string name, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/fleets/{fleet_id}/wings/{wing_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() }, @@ -183,8 +212,10 @@ public async Task> RenameWing(long fleet_id, long wing_id, s /// /// /// - public async Task> DeleteWing(long fleet_id, long wing_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/fleets/{fleet_id}/wings/{wing_id}/", + public async Task> DeleteWing(long fleet_id, long wing_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/fleets/{fleet_id}/wings/{wing_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() }, @@ -198,8 +229,10 @@ public async Task> DeleteWing(long fleet_id, long wing_id) /// /// /// - public async Task> CreateSquad(long fleet_id, long wing_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/fleets/{fleet_id}/wings/{wing_id}/squads/", + public async Task> CreateSquad(long fleet_id, long wing_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/fleets/{fleet_id}/wings/{wing_id}/squads/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "fleet_id", fleet_id.ToString() }, @@ -214,15 +247,18 @@ public async Task> CreateSquad(long fleet_id, long wing_id /// /// /// - public async Task> RenameSquad(long fleet_id, long squad_id, string name) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/fleets/{fleet_id}/squads/{squad_id}/", replacements: new Dictionary() - { - { "fleet_id", fleet_id.ToString() }, - { "squad_id", squad_id.ToString() } - }, body: new - { - name - }, token: _data.Token); + public async Task> RenameSquad(long fleet_id, long squad_id, string name, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/fleets/{fleet_id}/squads/{squad_id}/", + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "fleet_id", fleet_id.ToString() }, + { "squad_id", squad_id.ToString() } + }, body: new + { + name + }, token: _data.Token); /// /// /fleets/{fleet_id}/squads/{squad_id}/ @@ -230,13 +266,16 @@ public async Task> RenameSquad(long fleet_id, long squad_id, /// /// /// - public async Task> DeleteSquad(long fleet_id, long squad_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/fleets/{fleet_id}/squads/{squad_id}/", replacements: new Dictionary() - { - { "fleet_id", fleet_id.ToString() }, - { "squad_id", squad_id.ToString() } - }, token: _data.Token); - + public async Task> DeleteSquad(long fleet_id, long squad_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/fleets/{fleet_id}/squads/{squad_id}/", + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "fleet_id", fleet_id.ToString() }, + { "squad_id", squad_id.ToString() } + }, token: _data.Token); + /// /// /// diff --git a/ESI.NET/Logic/IncursionsLogic.cs b/ESI.NET/Logic/IncursionsLogic.cs index 29c1b23..2a15874 100644 --- a/ESI.NET/Logic/IncursionsLogic.cs +++ b/ESI.NET/Logic/IncursionsLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.Incursions; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -11,13 +12,20 @@ public class IncursionsLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public IncursionsLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public IncursionsLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /incursions/ /// /// - public async Task>> All() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/incursions/"); + public async Task>> All(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/incursions/", + eTag: eTag, + cancellationToken: cancellationToken); } } \ No newline at end of file diff --git a/ESI.NET/Logic/IndustryLogic.cs b/ESI.NET/Logic/IndustryLogic.cs index bdc8848..d8ef313 100644 --- a/ESI.NET/Logic/IndustryLogic.cs +++ b/ESI.NET/Logic/IndustryLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -31,23 +32,35 @@ public IndustryLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /industry/facilities/ /// /// - public async Task>> Facilities() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/industry/facilities/"); + public async Task>> Facilities(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/industry/facilities/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /industry/systems/ /// /// - public async Task>> SolarSystemCostIndices() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/industry/systems/"); + public async Task>> SolarSystemCostIndices(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/industry/systems/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /characters/{character_id}/industry/jobs/ /// /// /// - public async Task>> JobsForCharacter(bool include_completed = false) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/industry/jobs/", + public async Task>> JobsForCharacter(bool include_completed = false, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/industry/jobs/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -63,8 +76,12 @@ public async Task>> JobsForCharacter(bool include_complete /// /// /// - public async Task>> MiningLedger(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/mining/", + public async Task>> MiningLedger(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/mining/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -80,8 +97,12 @@ public async Task>> MiningLedger(int page = 1) /// /// /// - public async Task>> Observers(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporation/{corporation_id}/mining/observers/", + public async Task>> Observers(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporation/{corporation_id}/mining/observers/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -98,8 +119,13 @@ public async Task>> Observers(int page = 1) /// /// /// - public async Task>> ObservedMining(long observer_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporation/{corporation_id}/mining/observers/{observer_id}/", + public async Task>> ObservedMining(long observer_id, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporation/{corporation_id}/mining/observers/{observer_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, @@ -117,8 +143,13 @@ public async Task>> ObservedMining(long observer_ /// /// /// - public async Task>> JobsForCorporation(bool include_completed = false, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/industry/jobs/", + public async Task>> JobsForCorporation(bool include_completed = false, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/industry/jobs/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -134,8 +165,12 @@ public async Task>> JobsForCorporation(bool include_comple /// /corporation/{corporation_id}/mining/extractions/ /// /// - public async Task>> Extractions() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporation/{corporation_id}/mining/extractions/", + public async Task>> Extractions(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporation/{corporation_id}/mining/extractions/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } diff --git a/ESI.NET/Logic/InsuranceLogic.cs b/ESI.NET/Logic/InsuranceLogic.cs index 27d6165..3dc8848 100644 --- a/ESI.NET/Logic/InsuranceLogic.cs +++ b/ESI.NET/Logic/InsuranceLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.Insurance; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -11,13 +12,21 @@ public class InsuranceLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public InsuranceLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public InsuranceLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /insurance/prices/ /// /// - public async Task>> Levels() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/insurance/prices/"); + public async Task>> Levels(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/insurance/prices/", + eTag: eTag, + cancellationToken: cancellationToken); } } \ No newline at end of file diff --git a/ESI.NET/Logic/KillmailsLogic.cs b/ESI.NET/Logic/KillmailsLogic.cs index 272338a..5ea3588 100644 --- a/ESI.NET/Logic/KillmailsLogic.cs +++ b/ESI.NET/Logic/KillmailsLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -32,8 +33,12 @@ public KillmailsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDa /// /// /// - public async Task>> ForCharacter(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/killmails/recent/", + public async Task>> ForCharacter(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/killmails/recent/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -49,8 +54,12 @@ public async Task>> ForCharacter(int page = 1) /// /// /// - public async Task>> ForCorporation(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/killmails/recent/", + public async Task>> ForCorporation(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/killmails/recent/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -67,8 +76,13 @@ public async Task>> ForCorporation(int page = 1) /// The killmail hash for verification /// The killmail ID to be queried /// - public async Task> Information(string killmail_hash, int killmail_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/killmails/{killmail_id}/{killmail_hash}/", + public async Task> Information(string killmail_hash, int killmail_id, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/killmails/{killmail_id}/{killmail_hash}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "killmail_id", killmail_id.ToString() }, diff --git a/ESI.NET/Logic/LocationLogic.cs b/ESI.NET/Logic/LocationLogic.cs index 0583c5a..1c57942 100644 --- a/ESI.NET/Logic/LocationLogic.cs +++ b/ESI.NET/Logic/LocationLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,8 +29,11 @@ public LocationLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /characters/{character_id}/location/ /// /// - public async Task> Location() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/location/", + public async Task> Location(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/location/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -40,8 +44,11 @@ public async Task> Location() /// /characters/{character_id}/ship/ /// /// - public async Task> Ship() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/ship/", + public async Task> Ship(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/ship/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -52,8 +59,11 @@ public async Task> Ship() /// /characters/{character_id}/online/ /// /// - public async Task> Online() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/online/", + public async Task> Online(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/online/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/LoyaltyLogic.cs b/ESI.NET/Logic/LoyaltyLogic.cs index 7c2e312..ee9ce5a 100644 --- a/ESI.NET/Logic/LoyaltyLogic.cs +++ b/ESI.NET/Logic/LoyaltyLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,8 +29,12 @@ public LoyaltyLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /loyalty/stores/{corporation_id}/offers/ /// /// - public async Task>> Offers(int corporation_id) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/loyalty/stores/{corporation_id}/offers/", + public async Task>> Offers(int corporation_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/loyalty/stores/{corporation_id}/offers/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -39,8 +44,12 @@ public async Task>> Offers(int corporation_id) /// /characters/{character_id}/loyalty/points/ /// /// - public async Task>> Points() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/loyalty/points/", + public async Task>> Points(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/loyalty/points/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/MailLogic.cs b/ESI.NET/Logic/MailLogic.cs index e708dd9..b3ba0bd 100644 --- a/ESI.NET/Logic/MailLogic.cs +++ b/ESI.NET/Logic/MailLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,7 +29,9 @@ public MailLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData da /// /characters/{character_id}/mail/ /// /// - public async Task>> Headers(long[] labels = null, int last_mail_id = 0) + public async Task>> Headers(long[] labels = null, int last_mail_id = 0, + string eTag = null, + CancellationToken cancellationToken = default) { var parameters = new List(); @@ -38,7 +41,10 @@ public async Task>> Headers(long[] labels = null, int l if (last_mail_id > 0) parameters.Add($"last_mail_id={last_mail_id}"); - var response = await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/mail/", + var response = await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/mail/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -57,8 +63,11 @@ public async Task>> Headers(long[] labels = null, int l /// /// /// - public async Task> New(object[] recipients, string subject, string body, int approved_cost = 0) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/mail/", + public async Task> New(object[] recipients, string subject, string body, int approved_cost = 0, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/mail/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -76,8 +85,12 @@ public async Task> New(object[] recipients, string subject, str /// /characters/{character_id}/mail/labels/ /// /// - public async Task> Labels() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/mail/labels/", + public async Task> Labels(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/mail/labels/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -90,8 +103,11 @@ public async Task> Labels() /// /// /// - public async Task> NewLabel(string name, string color) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/characters/{character_id}/mail/labels/", + public async Task> NewLabel(string name, string color, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/characters/{character_id}/mail/labels/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -108,8 +124,10 @@ public async Task> NewLabel(string name, string color) /// /// /// - public async Task> DeleteLabel(long label_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/characters/{character_id}/mail/labels/{label_id}/", + public async Task> DeleteLabel(long label_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/characters/{character_id}/mail/labels/{label_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -121,8 +139,12 @@ public async Task> DeleteLabel(long label_id) /// /characters/{character_id}/mail/lists/ /// /// - public async Task>> MailingLists() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/mail/lists/", + public async Task>> MailingLists(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/mail/lists/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -134,8 +156,12 @@ public async Task>> MailingLists() /// /// /// - public async Task> Retrieve(int mail_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/mail/{mail_id}/", + public async Task> Retrieve(int mail_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/mail/{mail_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -150,8 +176,10 @@ public async Task> Retrieve(int mail_id) /// /// /// - public async Task> Update(int mail_id, bool? is_read = null, int[] labels = null) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, "/characters/{character_id}/mail/{mail_id}/", + public async Task> Update(int mail_id, bool? is_read = null, int[] labels = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Put, + "/characters/{character_id}/mail/{mail_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -159,14 +187,16 @@ public async Task> Update(int mail_id, bool? is_read = null }, body: BuildUpdateObject(is_read, labels), token: _data.Token); - + /// /// /characters/{character_id}/mail/{mail_id}/ /// /// /// - public async Task> Delete(int mail_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, "/characters/{character_id}/mail/{mail_id}/", + public async Task> Delete(int mail_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Delete, + "/characters/{character_id}/mail/{mail_id}/", + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, diff --git a/ESI.NET/Logic/MarketLogic.cs b/ESI.NET/Logic/MarketLogic.cs index 08cea6f..d21ef82 100644 --- a/ESI.NET/Logic/MarketLogic.cs +++ b/ESI.NET/Logic/MarketLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -15,7 +16,8 @@ public class MarketLogic private readonly AuthorizedCharacterData _data; private readonly int character_id, corporation_id; - public MarketLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData data = null) + public MarketLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData data = null, string eTag = null, + CancellationToken cancellationToken = default) { _client = client; _config = config; @@ -32,8 +34,11 @@ public MarketLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /markets/prices/ /// /// - public async Task>> Prices() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/prices/"); + public async Task>> Prices(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/prices/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /markets/{region_id}/orders/ @@ -44,10 +49,12 @@ public async Task>> Prices() /// /// public async Task>> RegionOrders( - int region_id, - MarketOrderType order_type = MarketOrderType.All, - int page = 1, - int? type_id = null) + int region_id, + MarketOrderType order_type = MarketOrderType.All, + int page = 1, + int? type_id = null, + string eTag = null, + CancellationToken cancellationToken = default) { var parameters = new List() { $"order_type={order_type.ToEsiValue()}" }; parameters.Add($"page={page}"); @@ -55,7 +62,10 @@ public async Task>> RegionOrders( if (type_id != null) parameters.Add($"type_id={type_id}"); - var response = await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/{region_id}/orders/", + var response = await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/markets/{region_id}/orders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "region_id", region_id.ToString() } @@ -71,8 +81,12 @@ public async Task>> RegionOrders( /// /// /// - public async Task>> TypeHistoryInRegion(int region_id, int type_id) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/{region_id}/history/", + public async Task>> TypeHistoryInRegion(int region_id, int type_id, + string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/markets/{region_id}/history/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "region_id", region_id.ToString() } @@ -88,8 +102,12 @@ public async Task>> TypeHistoryInRegion(int region_i /// /// /// - public async Task>> StructureOrders(long structure_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/markets/structures/{structure_id}/", + public async Task>> StructureOrders(long structure_id, int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/markets/structures/{structure_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "structure_id", structure_id.ToString() } @@ -104,16 +122,22 @@ public async Task>> StructureOrders(long structure_id, i /// /markets/groups/ /// /// - public async Task> Groups() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/groups/"); + public async Task> Groups(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/groups/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /markets/groups/{market_group_id}/ /// /// /// - public async Task> Group(int market_group_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/groups/{market_group_id}/", + public async Task> Group(int market_group_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/markets/groups/{market_group_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "market_group_id", market_group_id.ToString() } @@ -123,8 +147,12 @@ public async Task> Group(int market_group_id) /// /characters/{character_id}/orders/ /// /// - public async Task>> CharacterOrders() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/orders/", + public async Task>> CharacterOrders(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/orders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -136,8 +164,12 @@ public async Task>> CharacterOrders() /// /// /// - public async Task>> CharacterOrderHistory(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/orders/history/", + public async Task>> CharacterOrderHistory(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/orders/history/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -154,8 +186,12 @@ public async Task>> CharacterOrderHistory(int page = 1) /// /// /// - public async Task> Types(int region_id, int page = 1) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/markets/{region_id}/types/", + public async Task> Types(int region_id, int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/markets/{region_id}/types/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "region_id", region_id.ToString() } @@ -170,8 +206,12 @@ public async Task> Types(int region_id, int page = 1) /// /// /// - public async Task>> CorporationOrders(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/orders/", + public async Task>> CorporationOrders(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/orders/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -187,8 +227,12 @@ public async Task>> CorporationOrders(int page = 1) /// /// /// - public async Task>> CorporationOrderHistory(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/orders/history/", + public async Task>> CorporationOrderHistory(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/orders/history/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } diff --git a/ESI.NET/Logic/OpportunitiesLogic.cs b/ESI.NET/Logic/OpportunitiesLogic.cs index 08fcc05..9af9ba8 100644 --- a/ESI.NET/Logic/OpportunitiesLogic.cs +++ b/ESI.NET/Logic/OpportunitiesLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; using opportunities = ESI.NET.Models.Opportunities; @@ -13,7 +14,7 @@ public class OpportunitiesLogic private readonly EsiConfig _config; private readonly AuthorizedCharacterData _data; private readonly int character_id; - + public OpportunitiesLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData data = null) { _client = client; @@ -28,16 +29,22 @@ public OpportunitiesLogic(HttpClient client, EsiConfig config, AuthorizedCharact /// /opportunities/groups/ /// /// - public async Task> Groups() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/groups/"); + public async Task> Groups(string eTag = null, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/groups/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /opportunities/groups/{group_id}/ /// /// /// - public async Task> Group(int group_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/groups/{group_id}/", + public async Task> Group(int group_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/opportunities/groups/{group_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "group_id", group_id.ToString() } @@ -47,16 +54,23 @@ public async Task> Groups() /// /opportunities/tasks/ /// /// - public async Task> Tasks() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/tasks/"); + public async Task> Tasks(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/tasks/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /opportunities/tasks/{task_id}/ /// /// /// - public async Task> Task(int task_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/opportunities/tasks/{task_id}/", + public async Task> Task(int task_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/opportunities/tasks/{task_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "task_id", task_id.ToString() } @@ -67,8 +81,12 @@ public async Task> Tasks() /// /// /// - public async Task>> CompletedTasks() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/opportunities/", + public async Task>> CompletedTasks(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, + HttpMethod.Get, "/characters/{character_id}/opportunities/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/PlanetaryInteractionLogic.cs b/ESI.NET/Logic/PlanetaryInteractionLogic.cs index d20afed..9a692d4 100644 --- a/ESI.NET/Logic/PlanetaryInteractionLogic.cs +++ b/ESI.NET/Logic/PlanetaryInteractionLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -31,8 +32,11 @@ public PlanetaryInteractionLogic(HttpClient client, EsiConfig config, Authorized /// /characters/{character_id}/planets/ /// /// - public async Task>> Colonies() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/planets/", + public async Task>> Colonies(string eTag = null, CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/planets/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -44,8 +48,12 @@ public async Task>> Colonies() /// /// /// - public async Task> ColonyLayout(int planet_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/planets/{planet_id}/", + public async Task> ColonyLayout(int planet_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/planets/{planet_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() }, @@ -57,8 +65,12 @@ public async Task> ColonyLayout(int planet_id) /// /corporations/{corporation_id}/customs_offices/ /// /// - public async Task>> CorporationCustomsOffices() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/customs_offices/", + public async Task>> CorporationCustomsOffices(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/customs_offices/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -70,8 +82,12 @@ public async Task>> CorporationCustomsOffices() /// /// /// - public async Task> SchematicInformation(int schematic_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/schematics/{schematic_id}/", + public async Task> SchematicInformation(int schematic_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/schematics/{schematic_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "schematic_id", schematic_id.ToString() } diff --git a/ESI.NET/Logic/RoutesLogic.cs b/ESI.NET/Logic/RoutesLogic.cs index 231120b..a69667a 100644 --- a/ESI.NET/Logic/RoutesLogic.cs +++ b/ESI.NET/Logic/RoutesLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Enumerations; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -11,7 +12,11 @@ public class RoutesLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public RoutesLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public RoutesLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /route/{origin}/{destination}/ @@ -23,11 +28,13 @@ public class RoutesLogic /// /// public async Task> Map( - int origin, - int destination, - RoutesFlag flag = RoutesFlag.Shortest, - int[] avoid = null, - int[] connections = null) + int origin, + int destination, + RoutesFlag flag = RoutesFlag.Shortest, + int[] avoid = null, + int[] connections = null, + string eTag = null, + CancellationToken cancellationToken = default) { var parameters = new List() { $"flag={flag.ToEsiValue()}" }; @@ -37,7 +44,10 @@ public async Task> Map( if (connections != null) parameters.Add($"&connections={string.Join(",", connections)}"); - var response = await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/route/{origin}/{destination}/", + var response = await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/route/{origin}/{destination}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "origin", origin.ToString() }, diff --git a/ESI.NET/Logic/SearchLogic.cs b/ESI.NET/Logic/SearchLogic.cs index 27f5f2d..083fe45 100644 --- a/ESI.NET/Logic/SearchLogic.cs +++ b/ESI.NET/Logic/SearchLogic.cs @@ -3,6 +3,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -33,7 +34,8 @@ public SearchLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// Whether the search should be a strict match /// Language to use in the response /// - public async Task> Query(SearchType type, string search, SearchCategory categories, bool isStrict = false, string language = "en-us") + public async Task> Query(SearchType type, string search, SearchCategory categories, + bool isStrict = false, string language = "en-us", string eTag = null, CancellationToken cancellationToken = default) { var categoryList = categories.ToEsiValue(); @@ -50,15 +52,21 @@ public async Task> Query(SearchType type, string sear endpoint = "/characters/{character_id}/search/"; } - var response = await Execute(_client, _config, security, HttpMethod.Get, endpoint, replacements, parameters: new string[] { - $"search={search}", - $"categories={categoryList}", - $"strict={isStrict}", - $"language={language}" - }, - token: _data?.Token); + var response = await Execute(_client, _config, security, HttpMethod.Get, + endpoint: endpoint, + eTag: eTag, + cancellationToken: cancellationToken, + replacements: replacements, + parameters: new string[] + { + $"search={search}", + $"categories={categoryList}", + $"strict={isStrict}", + $"language={language}" + }, + token: _data?.Token); return response; } } -} +} \ No newline at end of file diff --git a/ESI.NET/Logic/SkillsLogic.cs b/ESI.NET/Logic/SkillsLogic.cs index 57cca3e..ed84cb7 100644 --- a/ESI.NET/Logic/SkillsLogic.cs +++ b/ESI.NET/Logic/SkillsLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.SSO; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -28,8 +29,12 @@ public SkillsLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /characters/{character_id}/attributes/ /// /// - public async Task> Attributes() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/attributes/", + public async Task> Attributes(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/attributes/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -40,8 +45,12 @@ public async Task> Attributes() /// /characters/{character_id}/skills/ /// /// - public async Task> List() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/skills/", + public async Task> List(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/skills/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -52,8 +61,12 @@ public async Task> List() /// /characters/{character_id}/skillqueue/ /// /// - public async Task>> Queue() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/skillqueue/", + public async Task>> Queue(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/skillqueue/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } diff --git a/ESI.NET/Logic/SovereigntyLogic.cs b/ESI.NET/Logic/SovereigntyLogic.cs index 08e7f3d..2829200 100644 --- a/ESI.NET/Logic/SovereigntyLogic.cs +++ b/ESI.NET/Logic/SovereigntyLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.Sovereignty; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -11,27 +12,43 @@ public class SovereigntyLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public SovereigntyLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public SovereigntyLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /sovereignty/campaigns/ /// /// - public async Task>> Campaigns() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/sovereignty/campaigns/"); + public async Task>> Campaigns(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/sovereignty/campaigns/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /sovereignty/map/ /// /// - public async Task>> Systems() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/sovereignty/map/"); + public async Task>> Systems(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/sovereignty/map/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /sovereignty/structures/ /// /// - public async Task>> Structures() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/sovereignty/structures/"); + public async Task>> Structures(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/sovereignty/structures/", + eTag: eTag, + cancellationToken: cancellationToken); } } \ No newline at end of file diff --git a/ESI.NET/Logic/StatusLogic.cs b/ESI.NET/Logic/StatusLogic.cs index 282b0dd..fd04f45 100644 --- a/ESI.NET/Logic/StatusLogic.cs +++ b/ESI.NET/Logic/StatusLogic.cs @@ -1,5 +1,6 @@ using ESI.NET.Models.Status; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -10,9 +11,16 @@ public class StatusLogic private readonly HttpClient _client; private readonly EsiConfig _config; - public StatusLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + public StatusLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } - public async Task> Retrieve() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/status/"); + public async Task> Retrieve(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/status/", + eTag: eTag, + cancellationToken: cancellationToken); } } \ No newline at end of file diff --git a/ESI.NET/Logic/UniverseLogic.cs b/ESI.NET/Logic/UniverseLogic.cs index b4eaf33..efd9822 100644 --- a/ESI.NET/Logic/UniverseLogic.cs +++ b/ESI.NET/Logic/UniverseLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.Universe; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -24,77 +25,109 @@ public UniverseLogic(HttpClient client, EsiConfig config, AuthorizedCharacterDat /// /universe/bloodlines/ /// /// - public async Task>> Bloodlines() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/bloodlines/"); + public async Task>> Bloodlines(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/bloodlines/", + eTag: eTag, cancellationToken: cancellationToken ); /// /// /universe/categories/ /// /// - public async Task> Categories() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/categories/"); + public async Task> Categories(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/categories/", + eTag: eTag, cancellationToken: cancellationToken); /// /// /universe/categories/{category_id}/ /// /// /// - public async Task> Category(int category_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/categories/{category_id}/", replacements: new Dictionary() - { - { "category_id", category_id.ToString() } - }); + public async Task> Category(int category_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/categories/{category_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "category_id", category_id.ToString() } + }); /// /// /universe/constellations/ /// /// - public async Task> Constellations() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/constellations/"); + public async Task> Constellations(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/constellations/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/constellations/{constellation_id}/ /// /// /// - public async Task> Constellation(int constellation_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/constellations/{constellation_id}/", replacements: new Dictionary() - { - { "constellation_id", constellation_id.ToString() } - }); + public async Task> Constellation(int constellation_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/constellations/{constellation_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() + { + { "constellation_id", constellation_id.ToString() } + }); /// /// /universe/factions/ /// /// - public async Task>> Factions() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/factions/"); + public async Task>> Factions(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/factions/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/graphics/ /// /// - public async Task> Graphics() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/graphics/"); + public async Task> Graphics(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/graphics/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/graphics/{graphic_id}/ /// /// /// - public async Task> Graphic(int graphic_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/graphics/{graphic_id}/", replacements: new Dictionary() - { - { "graphic_id", graphic_id.ToString() } - }); + public async Task> Graphic(int graphic_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/graphics/{graphic_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() + { + { "graphic_id", graphic_id.ToString() } + }); /// /// /universe/groups/ /// /// /// - public async Task> Groups(int page = 1) + public async Task> Groups(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/groups/", + eTag: eTag, + cancellationToken: cancellationToken, parameters: new string[] { $"page={page}" @@ -105,129 +138,185 @@ public async Task> Groups(int page = 1) /// /// /// - public async Task> Group(int group_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/groups/{group_id}/", replacements: new Dictionary() - { - { "group_id", group_id.ToString() } - }); + public async Task> Group(int group_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/groups/{group_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() + { + { "group_id", group_id.ToString() } + }); /// /// /universe/moons/{moon_id}/ /// /// /// - public async Task> Moon(int moon_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/moons/{moon_id}/", replacements: new Dictionary() - { - { "moon_id", moon_id.ToString() } - }); + public async Task> Moon(int moon_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/moons/{moon_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "moon_id", moon_id.ToString() } + }); /// /// /universe/names/ /// /// The ids to resolve; Supported IDs for resolving are: Characters, Corporations, Alliances, Stations, Solar Systems, Constellations, Regions, Types. /// - public async Task>> Names(List any_ids) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Post, "/universe/names/", body: any_ids.ToArray()); + public async Task>> Names(List any_ids, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Post, + "/universe/names/", + cancellationToken: cancellationToken, + body: any_ids.ToArray()); /// /// /universe/ids/ /// /// Resolve a set of names to IDs in the following categories: agents, alliances, characters, constellations, corporations factions, inventory_types, regions, stations, and systems. Only exact matches will be returned. All names searched for are cached for 12 hours. /// - public async Task> IDs(List names) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Post, "/universe/ids/", body: names.ToArray()); + public async Task> IDs(List names, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Post, "/universe/ids/", + cancellationToken: cancellationToken, + body: names.ToArray()); /// /// /universe/planets/{planet_id}/ /// /// /// - public async Task> Planet(int planet_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/planets/{planet_id}/", replacements: new Dictionary() - { - { "planet_id", planet_id.ToString() } - }); + public async Task> Planet(int planet_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/planets/{planet_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "planet_id", planet_id.ToString() } + }); /// /// /universe/races/ /// /// - public async Task>> Races() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/races/"); + public async Task>> Races(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/races/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/regions/ /// /// - public async Task> Regions() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/regions/"); + public async Task> Regions(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/regions/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/regions/{region_id}/ /// /// /// - public async Task> Region(int region_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/regions/{region_id}/", replacements: new Dictionary() - { - { "region_id", region_id.ToString() } - }); + public async Task> Region(int region_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/regions/{region_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "region_id", region_id.ToString() } + }); /// /// /universe/stations/{station_id}/ /// /// /// - public async Task> Station(int station_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/stations/{station_id}/", replacements: new Dictionary() - { - { "station_id", station_id.ToString() } - }); + public async Task> Station(int station_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/stations/{station_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "station_id", station_id.ToString() } + }); /// /// /universe/structures/ /// /// - public async Task> Structures() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/structures/"); + public async Task> Structures(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/structures/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/structures/{structure_id}/ /// /// /// - public async Task> Structure(long structure_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/universe/structures/{structure_id}/", replacements: new Dictionary() - { - { "structure_id", structure_id.ToString() } - }, token: _data.Token); + public async Task> Structure(long structure_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/universe/structures/{structure_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "structure_id", structure_id.ToString() } + }, token: _data.Token); /// /// /universe/systems/ /// /// - public async Task> Systems() - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/systems/"); + public async Task> Systems(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/systems/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/systems/{system_id}/ /// /// /// - public async Task> System(int system_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/systems/{system_id}/", replacements: new Dictionary() - { - { "system_id", system_id.ToString() } - }); + public async Task> System(int system_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/systems/{system_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "system_id", system_id.ToString() } + }); /// /// /universe/types/ /// /// /// - public async Task> Types(int page = 1) + public async Task> Types(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/types/", + eTag: eTag, + cancellationToken: cancellationToken, parameters: new string[] { $"page={page}" @@ -238,63 +327,94 @@ public async Task> Types(int page = 1) /// /// /// - public async Task> Type(int type_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/types/{type_id}/", replacements: new Dictionary() - { - { "type_id", type_id.ToString() } - }); + public async Task> Type(int type_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/types/{type_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "type_id", type_id.ToString() } + }); /// /// /universe/stargates/{stargate_id}/ /// /// /// - public async Task> Stargate(int stargate_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/stargates/{stargate_id}/", replacements: new Dictionary() - { - { "stargate_id", stargate_id.ToString() } - }); + public async Task> Stargate(int stargate_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/stargates/{stargate_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "stargate_id", stargate_id.ToString() } + }); /// /// /universe/system_jumps/ /// /// - public async Task>> Jumps() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/system_jumps/"); + public async Task>> Jumps(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/system_jumps/", + eTag: eTag, + cancellationToken: cancellationToken); /// /// /universe/system_kills/ /// /// - public async Task>> Kills() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/system_kills/"); + public async Task>> Kills(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/system_kills/", eTag: eTag, cancellationToken: cancellationToken); /// /// /universe/stars/{star_id}/ /// /// /// - public async Task> Star(int star_id) - => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/stars/{star_id}/", replacements: new Dictionary() - { - { "star_id", star_id.ToString() } - }); + public async Task> Star(int star_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/stars/{star_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "star_id", star_id.ToString() } + }); /// /// /universe/ancestries/ /// /// - public async Task>> Ancestries() - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/ancestries/"); + public async Task>> Ancestries(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/ancestries/", + eTag: eTag, + cancellationToken: cancellationToken + ); /// /// /universe/asteroid_belts/{asteroid_belt_id}/ /// /// - public async Task>> AsteroidBelt(int asteroid_belt_id) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/universe/asteroid_belts/{asteroid_belt_id}/", replacements: new Dictionary() - { - { "asteroid_belt_id", asteroid_belt_id.ToString() } - }); + public async Task>> AsteroidBelt(int asteroid_belt_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/universe/asteroid_belts/{asteroid_belt_id}/", + eTag: eTag, + cancellationToken: cancellationToken, + replacements: new Dictionary() + { + { "asteroid_belt_id", asteroid_belt_id.ToString() } + }); } -} +} \ No newline at end of file diff --git a/ESI.NET/Logic/UserInterfaceLogic.cs b/ESI.NET/Logic/UserInterfaceLogic.cs index d9e7ac5..2d6d4e5 100644 --- a/ESI.NET/Logic/UserInterfaceLogic.cs +++ b/ESI.NET/Logic/UserInterfaceLogic.cs @@ -1,4 +1,5 @@ using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using ESI.NET.Models.SSO; using static ESI.NET.EsiRequest; @@ -23,8 +24,10 @@ public UserInterfaceLogic(HttpClient client, EsiConfig config, AuthorizedCharact /// /// /// - public async Task> MarketDetails(int type_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/ui/openwindow/marketdetails/", + public async Task> MarketDetails(int type_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/ui/openwindow/marketdetails/", + cancellationToken: cancellationToken, parameters: new string[] { $"type_id={type_id}" @@ -36,8 +39,10 @@ public async Task> MarketDetails(int type_id) /// /// /// - public async Task> Contract(int contract_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/ui/openwindow/contract/", + public async Task> Contract(int contract_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/ui/openwindow/contract/", + cancellationToken: cancellationToken, parameters: new string[] { $"contract_id={contract_id}" @@ -49,8 +54,10 @@ public async Task> Contract(int contract_id) /// /// /// - public async Task> Information(int target_id) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/ui/openwindow/information/", + public async Task> Information(int target_id, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/ui/openwindow/information/", + cancellationToken: cancellationToken, parameters: new string[] { $"target_id={target_id}" @@ -64,8 +71,11 @@ public async Task> Information(int target_id) /// /// /// - public async Task> Waypoint(long destination_id, bool add_to_beginning = false, bool clear_other_waypoints = false) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/ui/autopilot/waypoint/", + public async Task> Waypoint(long destination_id, bool add_to_beginning = false, + bool clear_other_waypoints = false, CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/ui/autopilot/waypoint/", + cancellationToken: cancellationToken, parameters: new string[] { $"destination_id={destination_id}", @@ -83,8 +93,11 @@ public async Task> Waypoint(long destination_id, bool add_to /// /// /// - public async Task> NewMail(string subject, string body, int[] recipients) - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, "/ui/openwindow/newmail/", + public async Task> NewMail(string subject, string body, int[] recipients, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Post, + "/ui/openwindow/newmail/", + cancellationToken: cancellationToken, body: new { subject, diff --git a/ESI.NET/Logic/WalletLogic.cs b/ESI.NET/Logic/WalletLogic.cs index 47a6a5a..2c77423 100644 --- a/ESI.NET/Logic/WalletLogic.cs +++ b/ESI.NET/Logic/WalletLogic.cs @@ -2,6 +2,7 @@ using ESI.NET.Models.Wallet; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -31,19 +32,27 @@ public WalletLogic(HttpClient client, EsiConfig config, AuthorizedCharacterData /// /characters/{character_id}/wallet/ /// /// - public async Task> CharacterWallet() - => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/wallet/", replacements: new Dictionary() - { - { "character_id", character_id.ToString() } - }, token: _data.Token); + public async Task> CharacterWallet(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/wallet/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() + { + { "character_id", character_id.ToString() } + }, token: _data.Token); /// /// /characters/{character_id}/wallet/journal/ /// /// /// - public async Task>> CharacterJournal(int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/wallet/journal/", + public async Task>> CharacterJournal(int page = 1, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/wallet/journal/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -60,8 +69,12 @@ public async Task>> CharacterJournal(int page = 1 /// /// /// - public async Task>> CharacterTransactions(long from_id) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/characters/{character_id}/wallet/transactions/", + public async Task>> CharacterTransactions(long from_id, string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/characters/{character_id}/wallet/transactions/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "character_id", character_id.ToString() } @@ -76,8 +89,12 @@ public async Task>> CharacterTransactions(long fro /// /corporations/{corporation_id}/wallets/ /// /// - public async Task>> CorporationWallets() - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/wallets/", + public async Task>> CorporationWallets(string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/wallets/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() } @@ -90,8 +107,13 @@ public async Task>> CorporationWallets() /// /// /// - public async Task>> CorporationJournal(int division, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/wallets/{division}/journal/", + public async Task>> CorporationJournal(int division, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/wallets/{division}/journal/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, @@ -109,8 +131,13 @@ public async Task>> CorporationJournal(int divisi /// /// /// - public async Task>> CorporationTransactions(int division, long from_id) - => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, "/corporations/{corporation_id}/wallets/{division}/transactions/", + public async Task>> CorporationTransactions(int division, long from_id, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Authenticated, HttpMethod.Get, + "/corporations/{corporation_id}/wallets/{division}/transactions/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "corporation_id", corporation_id.ToString() }, diff --git a/ESI.NET/Logic/WarsLogic.cs b/ESI.NET/Logic/WarsLogic.cs index a947118..00fb765 100644 --- a/ESI.NET/Logic/WarsLogic.cs +++ b/ESI.NET/Logic/WarsLogic.cs @@ -1,6 +1,7 @@ using ESI.NET.Models.Wars; using System.Collections.Generic; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; using static ESI.NET.EsiRequest; @@ -10,14 +11,20 @@ public class WarsLogic { private readonly HttpClient _client; private readonly EsiConfig _config; - public WarsLogic(HttpClient client, EsiConfig config) { _client = client; _config = config; } + + public WarsLogic(HttpClient client, EsiConfig config) + { + _client = client; + _config = config; + } /// /// /wars/ /// /// Only return wars with ID smaller than this /// - public async Task> All(long max_war_id = 0) + public async Task> All(long max_war_id = 0, string eTag = null, + CancellationToken cancellationToken = default) { var parameters = new List(); @@ -25,6 +32,8 @@ public async Task> All(long max_war_id = 0) parameters.Add($"max_war_id={max_war_id}"); var response = await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/wars/", + eTag: eTag, + cancellationToken: cancellationToken, parameters: parameters.ToArray()); return response; @@ -35,8 +44,11 @@ public async Task> All(long max_war_id = 0) /// /// /// - public async Task> Information(int war_id) + public async Task> Information(int war_id, string eTag = null, + CancellationToken cancellationToken = default) => await Execute(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/wars/{war_id}/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "war_id", war_id.ToString() } @@ -48,8 +60,13 @@ public async Task> Information(int war_id) /// /// /// - public async Task>> Kills(int war_id, int page = 1) - => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, "/wars/{war_id}/killmails/", + public async Task>> Kills(int war_id, int page = 1, + string eTag = null, + CancellationToken cancellationToken = default) + => await Execute>(_client, _config, RequestSecurity.Public, HttpMethod.Get, + "/wars/{war_id}/killmails/", + eTag: eTag, + cancellationToken: cancellationToken, replacements: new Dictionary() { { "war_id", war_id.ToString() } diff --git a/ESI.NET/Logic/_SSOLogic.cs b/ESI.NET/Logic/_SSOLogic.cs index b5b8be2..9539b7f 100644 --- a/ESI.NET/Logic/_SSOLogic.cs +++ b/ESI.NET/Logic/_SSOLogic.cs @@ -12,6 +12,7 @@ using System.Net.Http.Headers; using System.Security.Cryptography; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace ESI.NET @@ -38,6 +39,7 @@ public SsoLogic(HttpClient client, EsiConfig config) _ssoUrl = "login.evepc.163.com"; break; } + _clientKey = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{config.ClientId}:{config.SecretKey}")); } @@ -49,9 +51,11 @@ public SsoLogic(HttpClient client, EsiConfig config) /// All hashing/encryption will be done automatically. Just provide the code. /// /// - public string CreateAuthenticationUrl(List scope = null, string state = null, string challengeCode = null) + public string CreateAuthenticationUrl(List scope = null, string state = null, + string challengeCode = null) { - var url = $"https://{_ssoUrl}/v2/oauth/authorize/?response_type=code&redirect_uri={Uri.EscapeDataString(_config.CallbackUrl)}&client_id={_config.ClientId}"; + var url = + $"https://{_ssoUrl}/v2/oauth/authorize/?response_type=code&redirect_uri={Uri.EscapeDataString(_config.CallbackUrl)}&client_id={_config.ClientId}"; if (scope != null) url = $"{url}&scope={string.Join("+", scope.Distinct().ToList())}"; @@ -65,7 +69,8 @@ public string CreateAuthenticationUrl(List scope = null, string state = using (var sha256 = SHA256.Create()) { - var base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeCode)).TrimEnd('=').Replace('+', '-').Replace('/', '_'); + var base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeCode)).TrimEnd('=') + .Replace('+', '-').Replace('/', '_'); var bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(base64)); var code_challenge = Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_'); @@ -75,7 +80,7 @@ public string CreateAuthenticationUrl(List scope = null, string state = return url; } - + public string GenerateChallengeCode() { const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; @@ -89,7 +94,7 @@ public string GenerateChallengeCode() /// The authorization_code or the refresh_token /// Provide the same value that was provided for codeChallenge in CreateAuthenticationUrl(). All hashing/encryption will be done automatically. Just provide the code. /// - public async Task GetToken(GrantType grantType, string code, string codeChallenge = null) + public async Task GetToken(GrantType grantType, string code, string codeChallenge = null, CancellationToken cancellationToken = default) { var body = $"grant_type={grantType.ToEsiValue()}"; if (grantType == GrantType.AuthorizationCode) @@ -102,12 +107,12 @@ public async Task GetToken(GrantType grantType, string code, string co var base64 = Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_'); body += $"&code_verifier={base64}&client_id={_config.ClientId}"; } - } + } else if (grantType == GrantType.RefreshToken) { body += $"&refresh_token={Uri.EscapeDataString(code)}"; - if(codeChallenge != null) + if (codeChallenge != null) body += $"&client_id={_config.ClientId}"; } @@ -115,18 +120,19 @@ public async Task GetToken(GrantType grantType, string code, string co { Content = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded"), }; - if(codeChallenge == null) + if (codeChallenge == null) { request.Headers.Authorization = new AuthenticationHeaderValue("Basic", _clientKey); request.Headers.Host = _ssoUrl; } - var response = await _client.SendAsync(request); + var response = await _client.SendAsync(request, cancellationToken); var content = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { - var error = JsonConvert.DeserializeAnonymousType(content, new { error_description = string.Empty }).error_description; + var error = JsonConvert.DeserializeAnonymousType(content, new { error_description = string.Empty }) + .error_description; throw new ArgumentException(error); } @@ -141,7 +147,7 @@ public async Task GetToken(GrantType grantType, string code, string co /// /// refresh_token to revoke /// - public async Task RevokeToken(string code) + public async Task RevokeToken(string code, CancellationToken cancellationToken = default) { var body = $"token_type_hint={GrantType.RefreshToken.ToEsiValue()}"; body += $"&token={Uri.EscapeDataString(code)}"; @@ -149,12 +155,13 @@ public async Task RevokeToken(string code) HttpContent postBody = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded"); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _clientKey); - var response = await _client.PostAsync($"https://{_ssoUrl}/v2/oauth/revoke", postBody); + var response = await _client.PostAsync($"https://{_ssoUrl}/v2/oauth/revoke", postBody, cancellationToken); var content = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { - var error = JsonConvert.DeserializeAnonymousType(content, new { error_description = string.Empty }).error_description; + var error = JsonConvert.DeserializeAnonymousType(content, new { error_description = string.Empty }) + .error_description; throw new ArgumentException(error); } } @@ -167,7 +174,7 @@ public async Task RevokeToken(string code) /// /// /// - public async Task Verify(SsoToken token) + public async Task Verify(SsoToken token, CancellationToken cancellationToken = default) { AuthorizedCharacterData authorizedCharacter = new AuthorizedCharacterData(); @@ -200,7 +207,7 @@ public async Task Verify(SsoToken token) var subjectClaim = jwtValidatedToken.Claims.SingleOrDefault(c => c.Type == "sub").Value; var nameClaim = jwtValidatedToken.Claims.SingleOrDefault(c => c.Type == "name").Value; var ownerClaim = jwtValidatedToken.Claims.SingleOrDefault(c => c.Type == "owner").Value; - + var returnedScopes = jwtValidatedToken.Claims.Where(c => c.Type == "scp"); var scopesClaim = string.Join(" ", returnedScopes.Select(s => s.Value)); @@ -213,15 +220,18 @@ public async Task Verify(SsoToken token) authorizedCharacter.Scopes = scopesClaim; // Get more specifc details about authorized character to be used in API calls that require this data about the character - var url = $"{_config.EsiUrl}latest/characters/affiliation/?datasource={_config.DataSource.ToEsiValue()}"; - var body = new StringContent(JsonConvert.SerializeObject(new int[] { authorizedCharacter.CharacterID }), Encoding.UTF8, "application/json"); + var url = + $"{_config.EsiUrl}latest/characters/affiliation/?datasource={_config.DataSource.ToEsiValue()}"; + var body = new StringContent(JsonConvert.SerializeObject(new int[] { authorizedCharacter.CharacterID }), + Encoding.UTF8, "application/json"); var client = new HttpClient(); - var characterResponse = await client.PostAsync(url, body).ConfigureAwait(false); + var characterResponse = await client.PostAsync(url, body, cancellationToken).ConfigureAwait(false); if (characterResponse.StatusCode == HttpStatusCode.OK) { - EsiResponse> affiliations = new EsiResponse>(characterResponse, "Post|/character/affiliations/"); + EsiResponse> affiliations = + new EsiResponse>(characterResponse, "Post|/character/affiliations/"); var characterData = affiliations.Data.First(); authorizedCharacter.AllianceID = characterData.AllianceId; @@ -237,4 +247,4 @@ public async Task Verify(SsoToken token) return authorizedCharacter; } } -} +} \ No newline at end of file