阿里云日志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; }
}
{
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; }
}
相关文章推荐
- 阿里云基于ecs云主机创建日志服务
- API信息全掌控,方便你的日志管理——阿里云推出API网关打通日志服务
- Java API 自带的日志管理,可配置文件路径,并自动创建不存在的目录
- API信息全掌控,方便你的日志管理——阿里云推出API网关打通日志服务
- API信息全掌控,方便你的日志管理——阿里云推出API网关打通日志服务
- 阿里云通过API 创建ECS主机示例
- 阿里云API网关(12)为员工创建子账号,实现分权管理API:使用RAM管理API
- API信息全掌控,方便你的日志管理——阿里云推出API网关打通日志服务
- Enterprise Library Step By Step系列(十四):创建基于消息队列(MSMQ)的异步日志
- 创建基于数据库的el日志模块
- SRTUTS + ITEXT 创建日志数据的保存下载
- 用"C原生API"写Symbian日志文件
- SQL SERVER2000教程-第二章-创建和管理数据库 第五节 清空数据库的LOG日志文件
- 利用Log4j 创建日志服务器
- 使用 OpenSSL API 进行安全编程--创建基本的安全连接和非安全连接
- 基于midas的MIS中的用户操作日志的创建(待续)
- 使用 SQL SERVER 2005 新增功能--- DDL_DATABASE_LEVEL_EVENTS 数据库级的触发器,创建数据库日志表
- 用JAVA创建XML文档,为java API文档添加搜索功能
- pb中创建数据操作日志字典[收藏]
- pb中创建数据操作日志字典