public async Task SendDingTalkMarkdown(GitHubPushModel model) { this.Logger.LogInformation($"请求数据:{Environment.NewLine}{model.ToJson()}"); var config = this.Config.GetSection("DingTalkConfig:Default").Get <DingTalkConfig>(); var repositoryName = model.repository.name; var repConfig = this.Config.GetSection($"DingTalkConfig:{repositoryName}").Get <DingTalkConfig>(); if (repConfig != null) { config = repConfig; } this.Logger.LogInformation($"配置:{repConfig.ToJson()}"); var resModel = this.ConvertMD(model); var resJson = resModel.ToJson(); this.Logger.LogInformation($"发送数据:{Environment.NewLine}{resJson}"); var timestamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; var signHMACSHA256 = $"{timestamp}\n{config.Secret}".ToHMACSHA256(config.Secret); var signBase64 = signHMACSHA256.ToBase64(); var sign = Uri.EscapeDataString(signBase64); var result = await this.Client.PostAsync($"/robot/send?access_token={config.Token}×tamp={timestamp}&sign={sign}", new StringContent(resJson, Encoding.UTF8, "application/json")); var resultBody = await result.Content.ReadAsStringAsync(); this.Logger.LogInformation($"返回数据:{Environment.NewLine}{result}{Environment.NewLine}{resultBody}"); }
public DingTalkResModel ConvertMD(GitHubPushModel model) { var result = new DingTalkResModel(); result.msgtype = "markdown"; var md = new DingTalkResMarkdown(); md.title = $"{model.repository.name}源代码提交"; var mdSb = new StringBuilder(); foreach (var commit in model.commits) { mdSb.AppendLine($"# {commit.message}{Environment.NewLine}"); mdSb.AppendLine($"> [{commit.author.name} {commit.timestamp}]({commit.url}){Environment.NewLine}"); } mdSb.AppendLine($"> *Repository [{model.repository.name}]({model.repository.url})*{Environment.NewLine}"); mdSb.AppendLine($"> *Organization [{model.organization.login}](https://github.com/{model.organization.login})*{Environment.NewLine}"); md.text = mdSb.ToString(); result.markdown = md; return(result); }