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);
}
}
}