/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { CreateSiteResponse response = new CreateSiteResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("Site", targetDepth)) { var unmarshaller = SiteUnmarshaller.Instance; response.Site = unmarshaller.Unmarshall(context); continue; } } return(response); }
public void Complete_if_provisioning_is_complete() { var requestCommand = CreateRequestCommand(); var createSiteResponse = new CreateSiteResponse { ProjectId = _projectId, SiteUrl = _siteUrl, RequestId = 1, ProvisioningRequestStatus = ProvisioningRequestStatus.Provisioned }; Test.Saga <ProvisioningSaga>() .ExpectPublish <ProvisioningStatusChanged>(m => m.ProjectId == requestCommand.ProjectId && m.RequestId == -1 && m.SiteUrl == null && m.ProvisioningRequestStatusId == (int)ProvisioningRequestStatus.Pending) .ExpectSend <CreateSiteRequest>(m => m.ProjectId == requestCommand.ProjectId && m.SiteTitle == requestCommand.ProjectTitle && m.SiteDescription == requestCommand.ProjectDescription && m.UsersInRoles[0].UserId == _userRolesList[0].UserId && m.UsersInRoles[1].UserId == _userRolesList[1].UserId && m.UsersInRoles[2].UserId == _userRolesList[2].UserId && m.UsersInRoles[3].UserId == _userRolesList[3].UserId) .ExpectSend <NotifyRequestForSiteReceived>(m => m.ProjectId == requestCommand.ProjectId && m.ProjectName == requestCommand.ProjectTitle && m.UserIds.Contains("WS12323")) .ExpectPublish <ProvisioningStatusChanged>(m => m.ProjectId == _projectId && m.SiteUrl == _siteUrl && m.ProvisioningRequestStatusId == (int)ProvisioningRequestStatus.Provisioned) .ExpectSend <GenerateDmpCommand>(m => m.ProjectId == requestCommand.ProjectId && m.SiteUrl == _siteUrl) .When(x => { x.Handle(requestCommand); x.Handle(createSiteResponse); }) .AssertSagaCompletionIs(true); }
/// <summary> /// Handles the response from the SharePoint integration endpoint that is responsible for /// the provisioning. /// </summary> /// <param name="message">CreateSiteResponse message.</param> public void Handle(CreateSiteResponse message) { Data.RequestId = message.RequestId; Data.SiteUrl = message.SiteUrl; Data.ProvisioningRequestStatus = message.ProvisioningRequestStatus.ToString(); Bus.Publish <ProvisioningStatusChanged>(m => { m.ProjectId = Data.ProjectId; m.SiteUrl = Data.SiteUrl; m.RequestId = Data.RequestId; m.ProvisioningRequestStatusId = (int)message.ProvisioningRequestStatus; }); if (message.ProvisioningRequestStatus == ProvisioningRequestStatus.Provisioned) { GenerateDmp(Data.ProjectId, Data.SiteUrl); Complete(); } }
public void Handle(CreateSiteRequest message) { if (true /*_sharePoint.TryLoadRootWeb(o => o)*/) { //var siteName = _spSiteNamePrefix + message.ProjectId; //var siteCreationRequestHelper = new SiteCreationRequestHelper(); //var args = new SiteCreationRequestArgs // { // SiteId = siteName, // Title = message.SiteTitle, // Description = message.SiteDescription, // Owners = message.UsersInRoles.Where(u => u.Role == "Owners").Select(u => u.UserId).ToArray(), // Members = message.UsersInRoles.Where(u => u.Role == "Members").Select(u => u.UserId).ToArray(), // Visitors = message.UsersInRoles.Where(u => u.Role == "Visitors").Select(u => u.UserId).ToArray() // }; //const string listName = "URDMS - Site Creation Request"; //// Generate the request //var requestId = siteCreationRequestHelper.CreateSiteRequest(args, listName); //// Poll the list item for changes in status //var poller = new SiteCreationRequestListPoller(_sharePoint, requestId, listName); //var result = poller.Poll(); var response = new CreateSiteResponse { ProjectId = message.ProjectId, //RequestId = requestId, //ProvisioningRequestStatus = result.ProvisioningRequestStatus }; // Create a dummy response for now. response.RequestId = 2342; response.ProvisioningRequestStatus = ProvisioningRequestStatus.Provisioned; response.SiteUrl = "http://sharepoint.yourdomain.edu.au/project/research/2"; // Handle the Polling result. //switch (result.ProvisioningRequestStatus) //{ // case ProvisioningRequestStatus.Provisioned: // Log.InfoFormat("[URDMS] Site for Project {0} created ({1})", message.ProjectId, result.SiteUrl); // response.SiteUrl = result.SiteUrl; // break; // case ProvisioningRequestStatus.Error: // Log.ErrorFormat("[URDMS] Site provisioning for Project {0} failed.", message.ProjectId); // break; // case ProvisioningRequestStatus.TimeOut: // case ProvisioningRequestStatus.Pending: // Log.ErrorFormat("[URDMS] Site provisioning for Project {0} has timed out or is still pending.", message.ProjectId); // break; // default: // throw new ArgumentOutOfRangeException(); //} Bus.Reply(response); } }