Class RemoteServiceInvokerBase
- Namespace
- GroupeIsa.Neos.ClusterCommunication
- Assembly
- GroupeIsa.Neos.ClusterCommunication.dll
A base client for interacting with endpoints over HTTP protocol.
public abstract class RemoteServiceInvokerBase : IRemoteServiceInvoker
- Inheritance
-
RemoteServiceInvokerBase
- Implements
- Derived
- Inherited Members
Constructors
RemoteServiceInvokerBase(IHttpClientFactory, IHttpContextAccessor, IApplicationContext, IDaprIdProvider, INeosTracer, INeosLogger)
Initializes a new instance of the RemoteServiceInvokerBase class.
protected RemoteServiceInvokerBase(IHttpClientFactory httpClientFactory, IHttpContextAccessor httpContextAccessor, IApplicationContext applicationContext, IDaprIdProvider daprIdProvider, INeosTracer neosTracer, INeosLogger logger)
Parameters
httpClientFactoryIHttpClientFactoryThe http client factory.
httpContextAccessorIHttpContextAccessorProvides access to the current HttpContext.
applicationContextIApplicationContextThe application context.
daprIdProviderIDaprIdProviderThe dapr id provider.
neosTracerINeosTracerThe Neos tracer for tracing activities.
loggerINeosLoggerThe logger.
Fields
ImageMediaType
Represents the Image media type.
protected const string ImageMediaType = "image/*"
Field Value
JsonMediaType
Represents the JSON media type.
protected const string JsonMediaType = "application/json"
Field Value
Properties
ApplicationContext
Gets the application context.
protected IApplicationContext ApplicationContext { get; }
Property Value
BaseUrl
Gets request base URL.
protected string BaseUrl { get; init; }
Property Value
ClientLogicalName
Gets The logical name of the HTTP client to create.
protected string ClientLogicalName { get; init; }
Property Value
HttpContextAccessor
Gets the HTTP context accessor.
protected IHttpContextAccessor HttpContextAccessor { get; }
Property Value
Methods
GetByteArrayAsync(RemoteServiceOptions)
Send a GET request with the specified options and return the response body as a byte array.
public Task<byte[]> GetByteArrayAsync(RemoteServiceOptions options)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
Returns
- Task<byte[]>
A Task<TResult> that will return when the operation has completed with byte array.
GetByteArrayAsync(RemoteServiceOptions, CancellationToken)
Send a GET request with the specified options and return the response body as a byte array.
public abstract Task<byte[]> GetByteArrayAsync(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<byte[]>
A Task<TResult> that will return when the operation has completed with byte array.
GetServiceIdAsync(RemoteServiceOptions, CancellationToken)
Gets the service identifier (dapr id).
protected Task<string> GetServiceIdAsync(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe remote service options.
cancellationTokenCancellationTokenThe cancellation token.
Returns
GetStringAsync(RemoteServiceOptions)
Send a GET request with the specified options and return the response body as a string.
public Task<string> GetStringAsync(RemoteServiceOptions options)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
Returns
- Task<string>
A Task<TResult> that will return when the operation has completed with string.
GetStringAsync(RemoteServiceOptions, CancellationToken)
Send a GET request with the specified options and return the response body as a string.
public abstract Task<string> GetStringAsync(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<string>
A Task<TResult> that will return when the operation has completed with string.
InvokeAsync(RemoteServiceOptions)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public Task InvokeAsync(RemoteServiceOptions options)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
Returns
- Task
A Task<TResult> that will return when the operation has completed.
InvokeAsync(RemoteServiceOptions, CancellationToken)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public abstract Task InvokeAsync(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task
A Task<TResult> that will return when the operation has completed.
InvokeAsync<TResponse>(RemoteServiceOptions)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public Task<TResponse?> InvokeAsync<TResponse>(RemoteServiceOptions options)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
Returns
- Task<TResponse>
A Task<TResult> that will return when the operation has completed.
Type Parameters
TResponseThe type of the data that will be JSON deserialized from the response body.
InvokeAsync<TResponse>(RemoteServiceOptions, CancellationToken)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public abstract Task<TResponse?> InvokeAsync<TResponse>(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<TResponse>
A Task<TResult> that will return when the operation has completed.
Type Parameters
TResponseThe type of the data that will be JSON deserialized from the response body.
InvokeWithResponseAsync<TResponse>(RemoteServiceOptions, CancellationToken)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.
Returns both the deserialized response data and the complete HTTP response message.options.HttpMethod.HttpMethod
public Task<RemoteServiceResponse<TResponse>> InvokeWithResponseAsync<TResponse>(RemoteServiceOptions options, CancellationToken cancellationToken = default)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<RemoteServiceResponse<TResponse>>
A Task<TResult> that will return when the operation has completed with response data and HTTP response message.
Type Parameters
TResponseThe type of the data that will be JSON deserialized from the response body.
ReadJsonContentAsync<TResponse>(HttpResponseMessage, CancellationToken)
Deserializes the JSON content of a remote service response.
protected static Task<TResponse?> ReadJsonContentAsync<TResponse>(HttpResponseMessage response, CancellationToken cancellationToken)
Parameters
responseHttpResponseMessageThe remote service HTTP response.
cancellationTokenCancellationTokenThe cancellation token.
Returns
- Task<TResponse>
The deserialized content, or the default value when the response has no body.
Type Parameters
TResponseThe type of the response.
Remarks
A response without a body (204 No Content, or an empty payload) is read as the default value
instead of being handed to the JSON deserializer, which rejects an empty input. A remote server method
returning null answers exactly that, e.g. the cluster-level default report style when none is
configured. The development HTTP invoker already behaved this way, only the Dapr path failed. REF. bug/36850.
SendAsync(RemoteServiceOptions, HttpClient?)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public Task<HttpResponseMessage> SendAsync(RemoteServiceOptions options, HttpClient? client = null)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
clientHttpClientProvides a HTTP client for sending HTTP requests and receiving HTTP responses.
Returns
- Task<HttpResponseMessage>
A Task<TResult> that will return when the operation has completed.
SendAsync(RemoteServiceOptions, HttpClient?, CancellationToken)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public virtual Task<HttpResponseMessage> SendAsync(RemoteServiceOptions options, HttpClient? client, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
clientHttpClientProvides a HTTP client for sending HTTP requests and receiving HTTP responses.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<HttpResponseMessage>
A Task<TResult> that will return when the operation has completed.
SendAsync(RemoteServiceOptions, CancellationToken)
Performs service invocation for the service identified by options.ServiceId.ServiceId and invokes the resource
specified by options.Path.Path with the HTTP method.options.HttpMethod.HttpMethod
public Task<HttpResponseMessage> SendAsync(RemoteServiceOptions options, CancellationToken cancellationToken)
Parameters
optionsRemoteServiceOptionsThe options to invoke the method on.
cancellationTokenCancellationTokenA CancellationToken that can be used to cancel the operation.
Returns
- Task<HttpResponseMessage>
A Task<TResult> that will return when the operation has completed.
SendAsync(HttpRequestMessage, HttpClient?, CancellationToken)
Sends an HTTP request as an asynchronous operation.
public Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, HttpClient? client = null, CancellationToken cancellationToken = default)
Parameters
requestHttpRequestMessageThe HTTP request message to send.
clientHttpClientProvides a HTTP client for sending HTTP requests and receiving HTTP responses.
cancellationTokenCancellationTokenThe cancellation token to cancel operation.
Returns
- Task<HttpResponseMessage>
A Task<TResult> that will return when the operation has completed.