예제 #1
0
 /// <param name="baseUrl">Base url for the rpc server</param>
 /// <param name="authHeaderValue">Http authentication header for rpc request</param>
 /// <param name="jsonSerializer">(Optional) Json serializer for serializing requests and deserializing responses. Defaults to built in serializer</param>
 /// <param name="encoding">(Optional)Encoding type for request. Defaults to UTF-8</param>
 /// <param name="contentType">(Optional)Content type header for the request. Defaults to application/json</param>
 /// <param name="headers">(Optional)Extra headers</param>
 public RpcClient(Uri baseUrl,
                  IRequestSerializer jsonSerializer   = null,
                  IRpcTransportClient transportClient = null)
 {
     this.BaseUrl         = baseUrl;
     this.JsonSerializer  = jsonSerializer ?? new DefaultRequestJsonSerializer();
     this.TransportClient = transportClient ?? new HttpRpcTransportClient();
 }
예제 #2
0
 internal RpcClient(Uri baseUrl,
                    IRpcTransportClient transportClient,
                    IRequestSerializer requestSerializer,
                    RpcEvents events)
 {
     this.BaseUrl           = baseUrl;
     this.transportClient   = transportClient ?? throw new ArgumentNullException(nameof(transportClient));
     this.requestSerializer = requestSerializer ?? throw new ArgumentNullException(nameof(requestSerializer));
     this.Events            = events ?? throw new ArgumentNullException(nameof(events));
 }
예제 #3
0
 public static async Task <string> SendRequestAsync(this IRpcTransportClient client, Uri uri, string requestJson, CancellationToken cancellationToken = default)
 {
     using (var requestStream = new MemoryStream(Encoding.UTF8.GetBytes(requestJson)))
     {
         using (Stream responseStream = await client.SendRequestAsync(uri, requestStream, cancellationToken))
         {
             using (StreamReader streamReader = new StreamReader(responseStream))
             {
                 return(await streamReader.ReadToEndAsync());
             }
         }
     }
 }