diff --git a/HelpScoutSharp.Tests/OrganizationService_Tests.cs b/HelpScoutSharp.Tests/OrganizationService_Tests.cs new file mode 100644 index 0000000..f0127b4 --- /dev/null +++ b/HelpScoutSharp.Tests/OrganizationService_Tests.cs @@ -0,0 +1,33 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace HelpScoutSharp.Tests; + +[TestClass] +public class OrganizationService_Tests +{ + private OrganizationService _service; + + [TestInitialize] + public async Task Initialize() + { + HelpScoutHttpClient.RateLimitBreachBehavior = RateLimitBreachBehavior.WaitAndRetryOnce; + var authSvc = new AuthenticationService(); + var token = await authSvc.GetApplicationTokenAsync(TestHelper.ApplicationId, TestHelper.ApplicationSecret); + _service = new OrganizationService(token.access_token); + } + + [TestMethod] + public async Task GetOrganizationAsync_Works() + { + var res = await _service.ListAsync(); + var organization = await _service.GetAsync(res.entities[0].id); + Assert.IsTrue(organization.id > 0); + } + + [TestMethod] + public async Task ListOrganizationsAsync_Works() + { + var res = await _service.ListAsync(new ListOrganizationsOptions()); + Assert.IsTrue(res.page.size > 0); + } +} diff --git a/HelpScoutSharp/HelpScoutSharp.csproj b/HelpScoutSharp/HelpScoutSharp.csproj index 2648094..c87fe5d 100644 --- a/HelpScoutSharp/HelpScoutSharp.csproj +++ b/HelpScoutSharp/HelpScoutSharp.csproj @@ -1,7 +1,7 @@  - 2.6.3 + 2.7.0 Better Reports Help Scout API Client for .NET Better Reports diff --git a/HelpScoutSharp/Organizations/ListOrganizationsOptions.cs b/HelpScoutSharp/Organizations/ListOrganizationsOptions.cs new file mode 100644 index 0000000..1158474 --- /dev/null +++ b/HelpScoutSharp/Organizations/ListOrganizationsOptions.cs @@ -0,0 +1,6 @@ +namespace HelpScoutSharp; + +public class ListOrganizationsOptions : ListOptions +{ + public string sort { get; set; } +} diff --git a/HelpScoutSharp/Organizations/Organization.cs b/HelpScoutSharp/Organizations/Organization.cs new file mode 100644 index 0000000..a6fc2ae --- /dev/null +++ b/HelpScoutSharp/Organizations/Organization.cs @@ -0,0 +1,26 @@ +namespace HelpScoutSharp; + +public class Organization : IHasId +{ + public long id { get; set; } + + public string name { get; set; } + + public string website { get; set; } + + public string description { get; set; } + + public string location { get; set; } + + public string logoUrl { get; set; } + + public string[] domains { get; set; } + + public string[] phones { get; set; } + + public string brandColor { get; set; } + + public long customerCount { get; set; } + + public long conversationCount { get; set; } +} \ No newline at end of file diff --git a/HelpScoutSharp/Organizations/OrganizationPage.cs b/HelpScoutSharp/Organizations/OrganizationPage.cs new file mode 100644 index 0000000..a7eb41a --- /dev/null +++ b/HelpScoutSharp/Organizations/OrganizationPage.cs @@ -0,0 +1,15 @@ +namespace HelpScoutSharp; + +public class OrganizationPage : IPage +{ + public class Embedded + { + public Organization[] organizations { get; set; } + } + + public Embedded _embedded { get; set; } + + public Page page { get; set; } + + public Organization[] entities => _embedded.organizations; +} diff --git a/HelpScoutSharp/Organizations/OrganizationService.cs b/HelpScoutSharp/Organizations/OrganizationService.cs new file mode 100644 index 0000000..63dfd25 --- /dev/null +++ b/HelpScoutSharp/Organizations/OrganizationService.cs @@ -0,0 +1,21 @@ +using Flurl; + +namespace HelpScoutSharp; + +public class OrganizationService : ServiceBase, IListableService +{ + public OrganizationService(string accessToken) + : base(accessToken, "organizations") + { + } + + public async Task GetAsync(long organizationId) + { + return await _client.GetAsync(new Url(_serviceUri).AppendPathSegment(organizationId).ToUri()); + } + + public async Task> ListAsync(ListOrganizationsOptions options = null) + { + return await _client.GetAsync(_serviceUri, options); + } +}