-
Notifications
You must be signed in to change notification settings - Fork 0
Ready for Review ObjectsApi #128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
d06693c
3a53f85
0d5ec47
f4d9e64
5c7c2f1
54694c9
0548670
addba96
ac43793
bb8cca5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,12 +11,12 @@ namespace PureCloud.Client.Apis; | |
| /// <inheritdoc /> | ||
| public sealed class ObjectsApi : IObjectsApi | ||
| { | ||
| private readonly HttpClient _httpClient; | ||
| private readonly IHttpClientFactory _httpClientFactory; | ||
| private readonly PureCloudJsonSerializerOptions _options; | ||
|
|
||
| public ObjectsApi(IHttpClientFactory httpClientFactory, IOptions<PureCloudJsonSerializerOptions> options) | ||
| { | ||
| _httpClient = httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
| _httpClientFactory = httpClientFactory; | ||
| _options = options.Value; | ||
| } | ||
|
|
||
|
|
@@ -32,17 +32,19 @@ public async Task<AuthzDivision> GetAuthorizationDivisionAsync(string divisionId | |
| parameters.Add("objectCount", UriHelper.ParameterToString(objectCount.Value)); | ||
| } | ||
|
|
||
| var uri = UriHelper.GetUri($"api/v2/authorization/divisions/{divisionId}", parameters); | ||
| var uri = UriHelper.GetUri($"api/v2/authorization/divisions/{Uri.EscapeDataString(divisionId)}", parameters); | ||
|
|
||
| var response = await _httpClient.GetAsync(uri, cancellationToken); | ||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.GetAsync(uri, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<AuthzDivision>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsAsync(int? pageSize = null, int? pageNumber = null, string sortBy = null, IEnumerable<string> expand = null, string nextPage = null, string previousPage = null, bool? objectCount = null, IEnumerable<string> id = null, string name = null, CancellationToken cancellationToken = default) | ||
| public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsAsync(int? pageSize = null, int? pageNumber = null, string sortBy = null, IEnumerable<string> expands = null, string nextPage = null, string previousPage = null, bool? objectCount = null, IEnumerable<string> ids = null, string name = null, CancellationToken cancellationToken = default) | ||
| { | ||
| var parameters = new NameValueCollection(); | ||
|
|
||
|
|
@@ -61,11 +63,11 @@ public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsAsync(int | |
| parameters.Add("sortBy", UriHelper.ParameterToString(sortBy)); | ||
| } | ||
|
|
||
| if (expand != null) | ||
| if (expands != null) | ||
| { | ||
| foreach (var item in expand) | ||
| foreach (var expand in expands) | ||
| { | ||
| parameters.Add("expand", UriHelper.ParameterToString(item)); | ||
| parameters.Add("expand", UriHelper.ParameterToString(expand)); | ||
| } | ||
| } | ||
|
|
||
|
|
@@ -84,11 +86,11 @@ public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsAsync(int | |
| parameters.Add("objectCount", UriHelper.ParameterToString(objectCount.Value)); | ||
| } | ||
|
|
||
| if (id != null) | ||
| if (ids != null) | ||
| { | ||
| foreach (var item in id) | ||
| foreach (var id in ids) | ||
| { | ||
| parameters.Add("id", UriHelper.ParameterToString(item)); | ||
| parameters.Add("id", UriHelper.ParameterToString(id)); | ||
| } | ||
| } | ||
|
|
||
|
|
@@ -99,7 +101,9 @@ public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsAsync(int | |
|
|
||
| var uri = UriHelper.GetUri("api/v2/authorization/divisions", parameters); | ||
|
|
||
| var response = await _httpClient.GetAsync(uri, cancellationToken); | ||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.GetAsync(uri, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
|
|
@@ -111,9 +115,11 @@ public async Task<AuthzDivision> CreateAuthorizationDivisionAsync(AuthzDivision | |
| { | ||
| ArgumentNullException.ThrowIfNull(body); | ||
|
|
||
| var uri = UriHelper.GetUri("api/v2/authorization/divisions", null); | ||
| var uri = "api/v2/authorization/divisions"; | ||
|
|
||
| var response = await _httpClient.PostAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.PostAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
|
|
@@ -127,9 +133,11 @@ public async Task<AuthzDivision> UpdateAuthorizationDivisionAsync(string divisio | |
|
|
||
| ArgumentNullException.ThrowIfNull(body); | ||
|
|
||
| var uri = UriHelper.GetUri($"api/v2/authorization/divisions/{divisionId}", null); | ||
| var uri = $"api/v2/authorization/divisions/{Uri.EscapeDataString(divisionId)}"; | ||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await _httpClient.PutAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
| var response = await client.PutAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
|
|
@@ -148,10 +156,140 @@ public async Task DeleteAuthorizationDivisionAsync(string divisionId, bool? forc | |
| parameters.Add("force", UriHelper.ParameterToString(force.Value)); | ||
| } | ||
|
|
||
| var uri = UriHelper.GetUri($"api/v2/authorization/divisions/{divisionId}", parameters); | ||
| var uri = UriHelper.GetUri($"api/v2/authorization/divisions/{Uri.EscapeDataString(divisionId)}", parameters); | ||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.DeleteAsync(uri, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<AuthzDivisionEntityListing> GetAuthorizationDivisionsDeletedAsync(int? pageNumber = null, int? pageSize = null, CancellationToken cancellationToken = default) | ||
| { | ||
| var parameters = new NameValueCollection(); | ||
|
|
||
| if (pageNumber.HasValue) | ||
| { | ||
| parameters.Add("pageNumber", UriHelper.ParameterToString(pageNumber.Value)); | ||
| } | ||
|
|
||
| if (pageSize.HasValue) | ||
| { | ||
| parameters.Add("pageSize", UriHelper.ParameterToString(pageSize.Value)); | ||
| } | ||
|
|
||
| var uri = UriHelper.GetUri("api/v2/authorization/divisions/deleted", parameters); | ||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await _httpClient.DeleteAsync(uri, cancellationToken); | ||
| var response = await client.GetAsync(uri, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<AuthzDivisionEntityListing>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<AuthzDivision> GetAuthorizationDivisionsHomeAsync(CancellationToken cancellationToken = default) | ||
| { | ||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.GetAsync("api/v2/authorization/divisions/home", cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<AuthzDivision>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<int?> GetAuthorizationDivisionsLimitAsync(CancellationToken cancellationToken = default) | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| { | ||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.GetAsync("api/v2/authorization/divisions/limit", cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<int?>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task CreateAuthorizationDivisionObjectsAsync(string divisionId, string objectType, IEnumerable<string> body, CancellationToken cancellationToken = default) | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| { | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| ArgumentException.ThrowIfNullOrEmpty(divisionId); | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| ArgumentException.ThrowIfNullOrEmpty(objectType); | ||
| ArgumentNullException.ThrowIfNull(body); | ||
|
|
||
| var uri = $"api/v2/authorization/divisions/{Uri.EscapeDataString(divisionId)}/objects/{Uri.EscapeDataString(objectType)}"; | ||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.PostAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<AuthzDivisionCursorListing> GetAuthorizationDivisionsQueryAsync(string before = null, string after = null, string pageSize = null, IEnumerable<string> ids = null, string name = null, CancellationToken cancellationToken = default) | ||
| { | ||
| var parameters = new NameValueCollection(); | ||
|
|
||
| if (!string.IsNullOrEmpty(before)) | ||
| { | ||
| parameters.Add("before", UriHelper.ParameterToString(before)); | ||
| } | ||
|
|
||
| if (!string.IsNullOrEmpty(after)) | ||
| { | ||
| parameters.Add("after", UriHelper.ParameterToString(after)); | ||
| } | ||
|
|
||
| if (!string.IsNullOrEmpty(pageSize)) | ||
| { | ||
| parameters.Add("pageSize", UriHelper.ParameterToString(pageSize)); | ||
| } | ||
|
|
||
| if (ids != null) | ||
| { | ||
| foreach (var id in ids) | ||
| { | ||
| parameters.Add("id", UriHelper.ParameterToString(id)); | ||
| } | ||
| } | ||
|
|
||
| if (!string.IsNullOrEmpty(name)) | ||
| { | ||
| parameters.Add("name", UriHelper.ParameterToString(name)); | ||
| } | ||
|
|
||
| var uri = UriHelper.GetUri("api/v2/authorization/divisions/query", parameters); | ||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.GetAsync(uri, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<AuthzDivisionCursorListing>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
|
||
| /// <inheritdoc /> | ||
| public async Task<AuthzDivision> PostAuthorizationDivisionRestoreAsync(string divisionId, AuthzDivision body, CancellationToken cancellationToken = default) | ||
| { | ||
| ArgumentException.ThrowIfNullOrEmpty(divisionId); | ||
|
|
||
| ArgumentNullException.ThrowIfNull(body); | ||
|
|
||
| var uri = $"api/v2/authorization/divisions/{Uri.EscapeDataString(divisionId)}/restore"; | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You don't need uri variable here. Apply the same feedback everywhere
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removed unnecessary uri variables throughout ObjectsApi - now passing URI strings directly to HttpClient methods instead of storing in variables first. Applied to CreateAuthorizationDivisionAsync, UpdateAuthorizationDivisionAsync, CreateAuthorizationDivisionObjectsAsync, and PostAuthorizationDivisionRestoreAsync methods. Commit: ac43793 |
||
|
|
||
| var client = _httpClientFactory.CreateClient(PureCloudConstants.PureCloudClientName); | ||
|
|
||
| var response = await client.PostAsJsonAsync(uri, body, _options.JsonSerializerOptions, cancellationToken); | ||
|
|
||
| response.EnsureSuccessStatusCode(); | ||
|
|
||
| return await response.Content.ReadFromJsonAsync<AuthzDivision>(_options.JsonSerializerOptions, cancellationToken); | ||
| } | ||
|
MikeAlhayek marked this conversation as resolved.
|
||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This variable is not needed. You can just pass this value to the request call.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed unnecessary uri variable from CreateAuthorizationDivisionAsync method - now passing the URI string directly to PostAsJsonAsync call. Applied same pattern to all methods where uri variables were not needed. Commit: ac43793