阿里云日志api创建logStore

public async Task<bool> CreateLogStore(string project, string logStore)
        {
            using (var client = new HttpClient())
            {
                var time = DateTime.Now;
                string body = Newtonsoft.Json.JsonConvert.SerializeObject(new LogBody() { logstoreName = logStore, ttl = 1, shardCount = 2 });
                string date = FormatRfc822Date(time);

                string contentMD5 = MD5Encrypt(body);
                string signString = Sign("POST " + contentMD5 + " application/json " + date + " x-log-apiversion:0.6.0 x-log-signaturemethod:hmac-sha1 /logstores"this.accessKeySecret);

                HttpContent content = new StringContent(body);
                string sign = string.Format("{0}:{1}", accessKeyId, signString);

                client.DefaultRequestHeaders.Add("x-log-apiversion""0.6.0");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("LOG", sign);
                client.DefaultRequestHeaders.Add("host", project + "." + endpoint);
                client.DefaultRequestHeaders.Add("Date", date);
                client.DefaultRequestHeaders.Add("x-log-signaturemethod""hmac-sha1");
                client.DefaultRequestHeaders.Add("ContentMD5", contentMD5);
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                try
                {

                    var res = await client.PostAsync(string.Format("http://{0}.{1}/logstores", project, endpoint), content).ConfigureAwait(false);
                    return res != null && res.StatusCode == System.Net.HttpStatusCode.OK;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }
        }
        private const string _rfc822DateFormat = "ddd, dd MMM yyyy HH:mm:ss \G\M\T";
        public static string FormatRfc822Date(DateTime dt)
        {
            return dt.ToUniversalTime().ToString(_rfc822DateFormat, CultureInfo.InvariantCulture);
        }

        string MD5Encrypt(string strText)
        {
            using (var md5 = MD5.Create())
            {
                var result = md5.ComputeHash(Encoding.UTF8.GetBytes(strText));
                return BitConverter.ToString(result).Replace("-""").ToUpper();
            }
        }

        byte[] MD5EncryptByte(string strText)
        {
            using (var md5 = MD5.Create())
            {
                return md5.ComputeHash(Encoding.UTF8.GetBytes(strText));
            }
        }

        string Sign(string signatureString, string secretKey, bool isRaw = true)
        {
            var enc = Encoding.UTF8;
            HMACSHA1 hmac = new HMACSHA1(enc.GetBytes(secretKey));
            hmac.Initialize();

            byte[] buffer = enc.GetBytes(signatureString);
            if (isRaw)
            {
                byte[] ret = hmac.ComputeHash(buffer);
                return Convert.ToBase64String(ret);
            }
            else
            {
                string res = BitConverter.ToString(hmac.ComputeHash(buffer)).Replace("-""").ToLower();
                return Convert.ToBase64String(Encoding.UTF8.GetBytes(res));
            }
        }

        /// <summary>
        
/// 外部DLL导入
        
/// </summary>
        void ExportDll()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory;
            try
            {
                System.IO.DirectoryInfo DirInfo = new DirectoryInfo(path);
                DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
            }
            catch { }

            #region zlib32.dll

            string dllfile1 = Path.Combine(path, "zlib32.dll");
            if (!File.Exists(dllfile1))
            {
                File.WriteAllBytes(dllfile1, Resource.zlib32);
            }

            #endregion

            #region zlib64.dll

            string dllfile2 = Path.Combine(path, "zlib64.dll");
            if (!File.Exists(dllfile2))
            {
                File.WriteAllBytes(dllfile2, Resource.zlib64);
            }

            #endregion            
        }

        class LogBody
        {
            public string logstoreName { getset; }
            public int ttl { getset; }
            public int shardCount { getset; }
        }
原文地址:https://www.cnblogs.com/94cool/p/6027164.html