src/sample/XXX.Plugin.Tdengine/Proxy/ITaosProxy.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Net;
using WebApiClientCore;
using WebApiClientCore.Attributes;
using HttpPostAttribute = WebApiClientCore.Attributes.HttpPostAttribute;

namespace XXX.Plugin.Tdengine
{
    /// <summary>
    /// 主机地址配置在 appsetting.json >NetProProxyOption
    /// 获取或设置Http服务完整主机域名 例如http://www.abc.com设置了HttpHost值,HttpHostAttribute将失效
    /// [HttpHost("https://www.taosdata.com/docs/cn/v2.0/connector#restful")]
    /// </summary>
    public interface ITaosProxy
    {
        /// <summary>
        /// 执行sql
        /// https://www.taosdata.com/docs/cn/v2.0/connector#restful
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="database"></param>
        /// <returns></returns>
        [HttpPost("/rest/sqlt/{database}")]
        [ApiClientFilter]
        ITask<dynamic> ExecuteSql([RawStringContent("text/plain")] string sql, string database = "test");
    }

    public class ApiClientFilter : ApiFilterAttribute
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>

        public override Task OnRequestAsync(ApiRequestContext context)
        {
            var configuration = context.HttpContext.ServiceProvider.GetService<IConfiguration>();
            configuration.GetValue<string>("Taos:Name");
            configuration.GetValue<string>("Taos:Pwd");
            string name = "root";
            string pwd = "taosdata";

            string token = $"{name}:{pwd}".Base64();

            context.HttpContext.RequestMessage.Headers.Add("Authorization", $"Basic {token}");
            var uri = context.HttpContext.RequestMessage.RequestUri;
            Console.WriteLine($"request uri is:{uri}");
            return Task.CompletedTask;
        }

        public override async Task OnResponseAsync(ApiResponseContext context)
        {
            var _logger = context.HttpContext.ServiceProvider.GetService<ILogger<ApiClientFilter>>();

            try
            {
                if (_logger != null)
                {
后面还有 54 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。