using DingTalk.Api;
using DingTalk.Api.Request;
using DingTalk.Api.Response;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Caching;
namespace HH.YiDaSyncNC.Helper
{
class CommHelper
{
private static readonly string appKey = ConfigurationManager.AppSettings["AppKey"];
private static readonly string appSecret = ConfigurationManager.AppSettings["AppSecret"];
///
/// 时间转时间戳(秒)
///
/// 时间
///
public static long GetTimeStamp(DateTime date)
{
//var unix = date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
//TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
//return Convert.ToInt64(unix.TotalSeconds * 1000);
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds);
}
///
/// 时间转时间戳(毫秒)
///
/// 日期
///
public static long GetTimeStamps(DateTime date)
{
var unix = date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(unix.TotalSeconds * 1000);
}
///
/// 时间戳转时间(毫秒)
///
///
///
public static DateTime GetDateTime(long timestamp)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));//当地时区
var time = startTime.AddMilliseconds(timestamp);
return time;
}
#region 获取AccessToken
public static string GetAccessToken()
{
// 将AccessToken存储至缓存
SetAccessToken(new CacheItemRemovedReason());
// 输出缓存中存储的AccessToken
return HttpRuntime.Cache.Get("Dingtalk_AccessToken").ToString();
}
#endregion
#region 设置AccessToken(企业内部开发)
public static void SetAccessToken(CacheItemRemovedReason reason)
{
//企业内部开发
var accessToken = HttpRuntime.Cache.Get("Dingtalk_AccessToken");
if (accessToken == null)
{
//var time = GetTimeStamp(DateTime.Now);
//var CorpId = corpid;
//var AgentId = agentid;
//var CustomKey = customkey;
//var CustomSecret = customsecret;
//string stringToSign = time+"\n"+"suiteTicket";
//var signature = getSHA256(CustomSecret, stringToSign);
//DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_corp_token");
//OapiServiceGetCorpTokenRequest req = new OapiServiceGetCorpTokenRequest();
//req.AuthCorpid = CorpId;
//OapiServiceGetCorpTokenResponse response = client.Execute(req, CustomKey, CustomSecret, "suiteTicket");
//HttpRuntime.Cache.Insert("Dingtalk_AccessToken", response.AccessToken, null, DateTime.Now.AddSeconds(3600), Cache.NoSlidingExpiration);
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.Appkey = appKey;
request.Appsecret = appSecret;
request.SetHttpMethod("GET");
OapiGettokenResponse response = client.Execute(request);
HttpRuntime.Cache.Insert("Dingtalk_AccessToken", response.AccessToken, null, DateTime.Now.AddSeconds(3600), Cache.NoSlidingExpiration);
}
}
#endregion
}
}