public async Task Handle(CheckCommentAnswerResponse message, IMessageHandlerContext context) { switch (message.Status) { case CommentAnswerStatus.Rejected: this.MarkAsComplete(); break; case CommentAnswerStatus.NotAddded: this.Data.ETag = message.ETag; await this.RequestTimeout <CheckCommentAnswerTimeout>( context, TimeSpan.FromSeconds(this.configurationManager.CommentResponseAddedSagaTimeoutInSeconds)).ConfigureAwait(false); break; case CommentAnswerStatus.Approved: await context.Send <SendEmail>(msg => { msg.UserName = this.Data.UserName; msg.UserEmail = this.Data.UserEmail; msg.FileName = this.Data.FileName; msg.CommentResponseStatus = message.Status; }).ConfigureAwait(false); this.MarkAsComplete(); break; default: throw new ArgumentException($"Not supported comment response status: {message.Status}"); } }
public async Task Handle(RequestCheckCommentAnswer message, IMessageHandlerContext context) { string userAgent = this.configurationManager.UserAgent; string authorizationToken = this.configurationManager.AuthorizationToken; string pullRequestUri = message.PullRequestUri; string etag = message.Etag; CheckCommentAnswerResponse answer = await this.GetCommentAnswer( () => this.gitHubApi.IsPullRequestOpen( userAgent, authorizationToken, pullRequestUri, etag), () => this.gitHubApi.IsPullRequestMerged( userAgent, authorizationToken, pullRequestUri)).ConfigureAwait(false); await context.Reply(answer).ConfigureAwait(false); }