/// <summary> /// リポジトリ登録 /// </summary> /// <param name="data"></param> /// <returns></returns> public async Task SetRepository(SlackRequest.Active <RepositoryData> data) { // 保存するトークンを入れたentityを作成 var entity = new ChannelIdEntity(data.Channel.Id, data.Channel.Name, data.Submission.UserName + "/" + data.Submission.Repository); // Entityがなければ挿入、あれば更新する var insertResult = EntityOperationChannelId.InsertOrUpdateEntityResult(entity, "channel"); string text; // 結果があるかどうか if (insertResult != null) { text = "リポジトリの登録に成功しました。" + Environment.NewLine + "https://github.com/" + data.Submission.UserName + "/" + data.Submission.Repository; } else { text = "リポジトリの登録に失敗しました"; } var model = new PostMessageModel() { Channel = data.Channel.Id, Text = text, Response_type = "in_channel", Unfurl_links = true }; await SlackApi.ExecutePostApiAsJson(model, "https://slack.com/api/chat.postMessage", data.Team.Id); }
/// <summary> /// Issue作成 /// </summary> /// <param name="data"></param> /// <returns></returns> public async Task CreateIssue(SlackRequest.Active <IssueData> data) { // ============================= // Issueオブジェクト作成 // ============================= var newIssue = new NewIssue(data.Submission.Title) { Body = data.Submission.Body }; newIssue.Labels.Add(data.Submission.Label); // ============================= // GitHubアクセストークンの設定 // ============================= GitHubApi.SetCredential(data.User.Id); // ============================= // 登録リポジトリ取得 // ============================= await GetRepository(data.Channel.Id, data.Response_url, data.Team.Id, async repository => { // GitHub認証エラーハンドリング await AuthorizationExceptionHandler(data.Channel.Id, data.Response_url, data.Team.Id, async() => { // ============================= // Issue作成 // ============================= var issue = await GitHubApi.Client.Issue.Create(repository.Split('/')[0], repository.Split('/')[1], newIssue); var model = new PostMessageModel() { Channel = data.Channel.Id, Text = "Issueが登録されました" + Environment.NewLine + "https://github.com/" + repository + "/issues/" + issue.Number, Response_type = "in_channel", Unfurl_links = true }; await SlackApi.ExecutePostApiAsJson(model, data.Response_url, data.Team.Id); }); }); }