예제 #1
0
        public async Task Handle(UserCreatedWorkItemMessage message, IMessageHandlerContext context)
        {
            log.Info($"MESSAGE: {nameof(UserCreatedWorkItemMessage)}; HANDLED BY: {nameof(WorkItemSaga)}; JID:{message.JobId}; WID:{message.WorkItemId}");

            Data.TotalRequests = message.HttpRequests.Count();

            await context.SendLocal(new WorkItemCreatedMessage
            {
                JobId        = message.JobId,
                WorkItemId   = message.WorkItemId,
                HttpRequests = message.HttpRequests,
                CreateDate   = message.DateActionTaken,
            });


            foreach (var item in message.HttpRequests)
            {
                await context.Send(new ExecuteHttpRequestMessage
                {
                    JobId       = message.JobId,
                    WorkItemId  = message.WorkItemId,
                    HttpRequest = item,
                    CreateDate  = DateTime.UtcNow
                });
            }
        }
예제 #2
0
        public async Task <ActionResult> Post(string jobId, [FromBody] NewWorkItemModel newWorkItem)
        {
            Guid workItemId = Guid.NewGuid();

            newWorkItem.JobId = Guid.Parse(jobId);

            UserCreatedWorkItemMessage message = new UserCreatedWorkItemMessage
            {
                JobId        = newWorkItem.JobId,
                WorkItemId   = workItemId,
                HttpRequests = newWorkItem.HttpRequests.Select(i => new UserHttpRequest
                {
                    AuthenticationConfig = i.AuthenticationConfig,
                    Content        = i.Content,
                    UserAgent      = i.UserAgent,
                    ContentHeaders = i.ContentHeaders,
                    ContentType    = i.ContentType,
                    HttpRequestId  = Guid.NewGuid(),
                    Method         = i.Method,
                    RequestHeaders = i.RequestHeaders,
                    Url            = i.Url,
                }).ToList(),
                DateActionTaken = DateTimeOffset.UtcNow
            };

            await messageSession.Send(message);

            return(Created($"/api/automaton/job/{newWorkItem.JobId}/workitem/{workItemId}", new WorkItemCreatedModel
            {
                JobId = message.JobId,
                WorkItemId = message.WorkItemId,
                HttpRequests = message.HttpRequests.Select(i => new CreatedHttpRequestModel
                {
                    HttpRequestId = i.HttpRequestId,
                    AuthenticationConfig = i.AuthenticationConfig,
                    Content = i.Content,
                    UserAgent = i.UserAgent,
                    ContentHeaders = i.ContentHeaders,
                    ContentType = i.ContentType,
                    Method = i.Method,
                    RequestHeaders = i.RequestHeaders,
                    Url = i.Url,
                    HttpRequestStatus = HttpRequestStatusType.Queued,
                }),
                WorkItemStatus = WorkItemStatusType.Queued
            }));
        }