/// <inheritdoc /> public async Task <EventingFunction> GetFunctionAsync(string name, GetFunctionOptions options = null) { //GET http://localhost:8096/api/v1/functions/<name> options ??= GetFunctionOptions.Default; var path = $"/api/v1/functions/{Uri.EscapeUriString(name)}"; try { using var rootSpan = RootSpan(OuterRequestSpans.ManagerSpan.Eventing.GetFunction, options) .WithLocalAddress() .WithStatement(path) .WithCommonTags(); using var encodeSpan = rootSpan.DispatchSpan(options); using (CreateRetryTimeoutCancellationTokenSource(options, out var tokenPair)) { var response = await _service.GetAsync(path, rootSpan, encodeSpan, tokenPair.GlobalToken); response.EnsureSuccessStatusCode(); var rawJson = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var result = JToken.Parse(rawJson); return(result.ToObject <EventingFunction>()); } } catch (Exception e) { _logger.LogError(e, $"An error occurred while getting event function {name}."); throw; } }
/// <inheritdoc /> public async Task <EventingFunction> GetFunctionAsync(string name, GetFunctionOptions options = null) { //GET http://localhost:8096/api/v1/functions/<name> options ??= GetFunctionOptions.Default; var path = $"/api/v1/functions/{Uri.EscapeDataString(name)}"; try { using var rootSpan = RootSpan(OuterRequestSpans.ManagerSpan.Eventing.GetFunction, options) .WithLocalAddress() .WithStatement(path) .WithCommonTags(); using var encodeSpan = rootSpan.DispatchSpan(options); using (var tokenPair = CreateRetryTimeoutCancellationTokenSource(options)) { using var response = await _service.GetAsync(path, rootSpan, encodeSpan, tokenPair.GlobalToken) .ConfigureAwait(false); if (response.IsSuccessStatusCode) { var rawJson = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var result = JToken.Parse(rawJson); return(result.ToObject <EventingFunction>()); } var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (content.TryDeserialize <ErrorResponse>(out var errorResponse)) { switch (errorResponse.Name) { case "ERR_APP_NOT_BOOTSTRAPPED": throw new EventingFunctionNotBootstrappedException(errorResponse.Description); case "ERR_APP_NOT_FOUND_TS": throw new EventingFunctionNotFoundException(errorResponse.Description); case "ERR_APP_NOT_DEPLOYED": throw new EventingFunctionNotDeployedException(errorResponse.Description); } } //throw any non-specific errors throw new CouchbaseException(content); } } catch (Exception e) { _logger.LogError(e, $"An error occurred while getting event function {name}."); throw; } }