using NCC.Dependency; using NCC.JsonSerialization; using System; using System.Collections.Generic; using System.IO; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; namespace NCC.RemoteRequest.Extensions { /// /// 远程请求字符串拓展 /// [SuppressSniffer] public static class RemoteRequestStringExtensions { /// /// 设置 URL 模板 /// /// /// /// public static HttpRequestPart SetTemplates(this string requestUrl, IDictionary templates) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetTemplates(templates); } /// /// 设置 URL 模板 /// /// /// /// public static HttpRequestPart SetTemplates(this string requestUrl, object templates) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetTemplates(templates); } /// /// 设置请求方法 /// /// /// /// public static HttpRequestPart SetHttpMethod(this string requestUrl, HttpMethod httpMethod) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetHttpMethod(httpMethod); } /// /// 设置请求报文头 /// /// /// /// public static HttpRequestPart SetHeaders(this string requestUrl, IDictionary headers) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetHeaders(headers); } /// /// 设置请求报文头 /// /// /// /// public static HttpRequestPart SetHeaders(this string requestUrl, object headers) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetHeaders(headers); } /// /// 设置 URL 参数 /// /// /// /// public static HttpRequestPart SetQueries(this string requestUrl, IDictionary queries) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetQueries(queries); } /// /// 设置 URL 参数 /// /// /// /// public static HttpRequestPart SetQueries(this string requestUrl, object queries) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetQueries(queries); } /// /// 设置客户端分类名 /// /// /// /// public static HttpRequestPart SetClient(this string requestUrl, string name) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetClient(name); } /// /// 设置 Body 内容 /// /// /// /// /// /// public static HttpRequestPart SetBody(this string requestUrl, object body, string contentType = default, Encoding encoding = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetBody(body, contentType, encoding); } /// /// 设置内容类型 /// /// /// /// public static HttpRequestPart SetContentType(this string requestUrl, string contentType) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetContentType(contentType); } /// /// 设置内容编码 /// /// /// /// public static HttpRequestPart SetContentEncoding(this string requestUrl, Encoding encoding) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetContentEncoding(encoding); } /// /// 设置 Body Bytes /// /// /// /// public static HttpRequestPart SetBodyBytes(this string requestUrl, params (string Name, byte[] Bytes, string FileName)[] bytesData) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetBodyBytes(bytesData); } /// /// 设置超时时间(秒) /// /// /// /// public static HttpRequestPart SetClientTimeout(this string requestUrl, long timeout) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetClientTimeout(timeout); } /// /// 设置 JSON 序列化提供器 /// /// /// /// /// public static HttpRequestPart SetJsonSerialization(this string requestUrl, object jsonSerializerOptions = default) where TJsonSerializationProvider : IJsonSerializerProvider { return new HttpRequestPart().SetRequestUrl(requestUrl).SetJsonSerialization(jsonSerializerOptions); } /// /// 设置 JSON 序列化提供器 /// /// /// /// /// public static HttpRequestPart SetJsonSerialization(this string requestUrl, Type providerType, object jsonSerializerOptions = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetJsonSerialization(providerType, jsonSerializerOptions); } /// /// 是否启用验证状态 /// /// /// /// /// public static HttpRequestPart SetValidationState(this string requestUrl, bool enabled, bool includeNull = true) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetValidationState(enabled, includeNull); } /// /// 设置请求作用域 /// /// /// /// public static HttpRequestPart SetRequestScoped(this string requestUrl, IServiceProvider serviceProvider) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetRequestScoped(serviceProvider); } /// /// 构建请求对象拦截器 /// /// /// /// public static HttpRequestPart OnRequesting(this string requestUrl, Action action) { return new HttpRequestPart().SetRequestUrl(requestUrl).OnRequesting(action); } /// /// 创建客户端对象拦截器 /// /// /// /// public static HttpRequestPart OnClientCreating(this string requestUrl, Action action) { return new HttpRequestPart().SetRequestUrl(requestUrl).OnClientCreating(action); } /// /// 请求成功拦截器 /// /// /// /// public static HttpRequestPart OnResponsing(this string requestUrl, Action action) { return new HttpRequestPart().SetRequestUrl(requestUrl).OnResponsing(action); } /// /// 请求异常拦截器 /// /// /// /// public static HttpRequestPart OnException(this string requestUrl, Action action) { return new HttpRequestPart().SetRequestUrl(requestUrl).OnException(action); } /// /// 配置重试策略 /// /// /// /// 每次延迟时间(毫秒) /// public static HttpRequestPart SetRetryPolicy(this string requestUrl, int numRetries, int retryTimeout = 1000) { return new HttpRequestPart().SetRequestUrl(requestUrl).SetRetryPolicy(numRetries, retryTimeout); } /// /// 发送 GET 请求返回 T 对象 /// /// /// /// /// public static Task GetAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).GetAsAsync(cancellationToken); } /// /// 发送 GET 请求返回 Stream /// /// /// /// public static Task GetAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).GetAsStreamAsync(cancellationToken); } /// /// 发送 GET 请求返回 String /// /// /// /// public static Task GetAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).GetAsStringAsync(cancellationToken); } /// /// 发送 GET 请求 /// /// /// /// public static Task GetAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).GetAsync(cancellationToken); } /// /// 发送 POST 请求返回 T 对象 /// /// /// /// /// public static Task PostAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PostAsAsync(cancellationToken); } /// /// 发送 POST 请求返回 Stream /// /// /// /// public static Task PostAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PostAsStreamAsync(cancellationToken); } /// /// 发送 POST 请求返回 String /// /// /// /// public static Task PostAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PostAsStringAsync(cancellationToken); } /// /// 发送 POST 请求 /// /// /// /// public static Task PostAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PostAsync(cancellationToken); } /// /// 发送 PUT 请求返回 T 对象 /// /// /// /// /// public static Task PutAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PutAsAsync(cancellationToken); } /// /// 发送 PUT 请求返回 Stream /// /// /// /// public static Task PutAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PutAsStreamAsync(cancellationToken); } /// /// 发送 PUT 请求返回 String /// /// /// /// public static Task PutAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PutAsStringAsync(cancellationToken); } /// /// 发送 PUT 请求 /// /// /// /// public static Task PutAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PutAsync(cancellationToken); } /// /// 发送 DELETE 请求返回 T 对象 /// /// /// /// /// public static Task DeleteAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).DeleteAsAsync(cancellationToken); } /// /// 发送 DELETE 请求返回 Stream /// /// /// /// public static Task DeleteAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).DeleteAsStreamAsync(cancellationToken); } /// /// 发送 DELETE 请求返回 String /// /// /// /// public static Task DeleteAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).DeleteAsStringAsync(cancellationToken); } /// /// 发送 DELETE 请求 /// /// /// /// public static Task DeleteAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).DeleteAsync(cancellationToken); } /// /// 发送 PATCH 请求返回 T 对象 /// /// /// /// /// public static Task PatchAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PatchAsAsync(cancellationToken); } /// /// 发送 PATCH 请求返回 Stream /// /// /// /// public static Task PatchAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PatchAsStreamAsync(cancellationToken); } /// /// 发送 PATCH 请求返回 String /// /// /// /// public static Task PatchAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PatchAsStringAsync(cancellationToken); } /// /// 发送 PATCH 请求 /// /// /// /// public static Task PatchAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).PatchAsync(cancellationToken); } /// /// 发送 HEAD 请求返回 T 对象 /// /// /// /// /// public static Task HeadAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).HeadAsAsync(cancellationToken); } /// /// 发送 HEAD 请求返回 Stream /// /// /// /// public static Task HeadAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).HeadAsStreamAsync(cancellationToken); } /// /// 发送 HEAD 请求返回 String /// /// /// /// public static Task HeadAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).HeadAsStringAsync(cancellationToken); } /// /// 发送 HEAD 请求 /// /// /// /// public static Task HeadAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).HeadAsync(cancellationToken); } /// /// 发送请求返回 T 对象 /// /// /// /// /// public static Task SendAsAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SendAsAsync(cancellationToken); } /// /// 发送请求返回 Stream /// /// /// /// public static Task SendAsStreamAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SendAsStreamAsync(cancellationToken); } /// /// 发送请求返回 String /// /// /// /// public static Task SendAsStringAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SendAsStringAsync(cancellationToken); } /// /// 发送请求 /// /// /// /// public static Task SendAsync(this string requestUrl, CancellationToken cancellationToken = default) { return new HttpRequestPart().SetRequestUrl(requestUrl).SendAsync(cancellationToken); } } }