您的位置:首页 > 其它

阿里云日志api创建logStore

2016-11-03 16:31 267 查看
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; }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: