Introduced a new `DocumentService` class to handle fetching PDF document bytes from an API endpoint. The service uses `HttpClient` for HTTP communication and `IOptions<ApiOptions>` for accessing API configuration. Added the `GetDocumentAsync` method to perform the HTTP GET request, handle responses, and return the document bytes along with the HTTP status code. Included necessary `using` directives and encapsulated the service in the `EnvelopeGenerator.ReceiverUI.Services` namespace.
28 lines
969 B
C#
28 lines
969 B
C#
using System.Net;
|
|
using System.Net.Http;
|
|
using Microsoft.Extensions.Options;
|
|
using EnvelopeGenerator.ReceiverUI.Options;
|
|
|
|
namespace EnvelopeGenerator.ReceiverUI.Services;
|
|
|
|
public class DocumentService(HttpClient http, IOptions<ApiOptions> apiOptions)
|
|
{
|
|
private readonly ApiOptions _api = apiOptions.Value;
|
|
|
|
/// <summary>
|
|
/// Fetches the PDF bytes for the given envelope key from the API.
|
|
/// Returns null bytes with the HTTP status code on failure.
|
|
/// </summary>
|
|
public async Task<(byte[]? Bytes, HttpStatusCode StatusCode)> GetDocumentAsync(string envelopeKey, CancellationToken cancel = default)
|
|
{
|
|
var response = await http.GetAsync($"{_api.BaseUrl}/api/Document/{Uri.EscapeDataString(envelopeKey)}", cancel);
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
return (null, response.StatusCode);
|
|
|
|
var bytes = await response.Content.ReadAsByteArrayAsync(cancel);
|
|
return (bytes, response.StatusCode);
|
|
}
|
|
}
|
|
|