博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云日志api创建logStore
阅读量:7046 次
发布时间:2019-06-28

本文共 3204 字,大约阅读时间需要 10 分钟。

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\n
" + contentMD5 + 
"
\napplication/json\n
" + date + 
"
\nx-log-apiversion:0.6.0\nx-log-signaturemethod:hmac-sha1\n/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 { 
get
set; }
            
public 
int ttl { 
get
set; }
            
public 
int shardCount { 
get
set; }
        }

转载于:https://www.cnblogs.com/94cool/p/6027164.html

你可能感兴趣的文章
网络全民创业:95%电商生活得非常痛苦
查看>>
三种方法写监听事件
查看>>
hdu 2899 hdu 3400 三分/几何
查看>>
[转]World Wind学习总结一
查看>>
算法题一道
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月14日)...
查看>>
iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
查看>>
C# Struct结构体里数组长度的指定
查看>>
感知机原理小结
查看>>
Java动态代理与Cglib库
查看>>
系统性能不够原因可能是cpu不够,内存不够等等
查看>>
让div在另一个div中居中
查看>>
Linux indent
查看>>
dir for RequestHandler and request
查看>>
CoreCLR文档翻译 - GC的设计
查看>>
js-ES6学习笔记-Proxy(2)
查看>>
Spring Boot下Druid连接池+mybatis
查看>>
Session与Cookie解析
查看>>
Java实现二叉排序树的插入、查找、删除
查看>>
Delphi线程定时器TThreadedTimer及用法--还有TThreadList用法可以locklist
查看>>