public async Task CreateLinkAsync(AnalyticsLink link, CreateAnalyticsLinkOptions?options = null) { link.ValidateForRequest(); options ??= new(); try { var builder = new UriBuilder(_serviceUriProvider.GetRandomAnalyticsUri()); builder.Path = link.ManagementPath; var uri = builder.Uri; var formContent = new FormUrlEncodedContent(link.FormData); var result = await _couchbaseHttpClient.PostAsync(uri, formContent, options.CancellationToken).ConfigureAwait(false); await HandleLinkManagementResultErrors(result, link); } catch (Exception exception) { _logger.LogError(exception, "Failed to create link."); throw; } }
public async Task ReplaceLinkAsync(AnalyticsLink link, ReplaceAnalyticsLinkOptions?options = null) { link.ValidateForRequest(); options ??= new(); try { var builder = new UriBuilder(_serviceUriProvider.GetRandomAnalyticsUri()); builder.Path = link.ManagementPath; var uri = builder.Uri; var formContent = new FormUrlEncodedContent(link.FormData); using var httpClient = _httpClientFactory.Create(); var result = await httpClient.PutAsync(uri, formContent, options.CancellationToken).ConfigureAwait(false); var responseBody = await result.Content.ReadAsStringAsync().ConfigureAwait(false); await HandleLinkManagementResultErrors(result, link).ConfigureAwait(false); } catch (Exception exception) { _logger.LogError(exception, "Failed to replace link."); throw; } }