Esempio n. 1
0
            private IResponseWriter DefaultExecutionResponse(ExecutionDto executionDto)
            {
                var allErrors = new ErrorResultTO();

                var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors);

                if (currentErrors != null)
                {
                    foreach (var error in currentErrors)
                    {
                        if (error.Length > 0)
                        {
                            allErrors.AddError(error, true);
                        }
                    }
                }

                executionDto.Request = _esbExecuteRequest;

                executionDto.ErrorResultTO = allErrors;

                var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

                return(executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory()));
            }
Esempio n. 2
0
        public void EnqueueClientExecution(INewExecution execution)
        {
            var buySideExecution = new ExecutionDto
            {
                ExchangeOrderId = execution.BuySideOrder.ExchangeOrderId,
                Quantity        = execution.MatchedQuantity,
                Price           = execution.MatchedPrice,
                Symbol          = execution.BuySideOrder.Symbol,
                ExecutionTime   = execution.ExecutionTime,
                Way             = execution.BuySideOrder.Way
            };

            serverToClientMessage.Reset();
            serverToClientMessage.ReceiverClientId = execution.BuySideOrder.ClientId;
            serverToClientMessage.Execution.Update(buySideExecution);
            serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution;
            Enqueue();

            var sellSideExecution = new ExecutionDto
            {
                ExchangeOrderId = execution.SellSideOrder.ExchangeOrderId,
                Quantity        = execution.MatchedQuantity,
                Price           = execution.MatchedPrice,
                Symbol          = execution.SellSideOrder.Symbol,
                ExecutionTime   = execution.ExecutionTime,
                Way             = execution.SellSideOrder.Way
            };

            serverToClientMessage.Reset();
            serverToClientMessage.ReceiverClientId = execution.SellSideOrder.ClientId;
            serverToClientMessage.Execution.Update(sellSideExecution);
            serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution;
            Enqueue();
        }
        public void EnqueueClientExecution(INewExecution execution)
        {
            var buySideExecution = new ExecutionDto
            {
                ExchangeOrderId = execution.BuySideOrder.ExchangeOrderId,
                Quantity = execution.MatchedQuantity,
                Price = execution.MatchedPrice,
                Symbol = execution.BuySideOrder.Symbol,
                ExecutionTime = execution.ExecutionTime,
                Way = execution.BuySideOrder.Way
            };
            serverToClientMessage.Reset();
            serverToClientMessage.ReceiverClientId = execution.BuySideOrder.ClientId;
            serverToClientMessage.Execution.Update(buySideExecution);
            serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution;
            Enqueue();

            var sellSideExecution = new ExecutionDto
            {
                ExchangeOrderId = execution.SellSideOrder.ExchangeOrderId,
                Quantity = execution.MatchedQuantity,
                Price = execution.MatchedPrice,
                Symbol = execution.SellSideOrder.Symbol,
                ExecutionTime = execution.ExecutionTime,
                Way = execution.SellSideOrder.Way
            };
            serverToClientMessage.Reset();
            serverToClientMessage.ReceiverClientId = execution.SellSideOrder.ClientId;
            serverToClientMessage.Execution.Update(sellSideExecution);
            serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.Execution;
            Enqueue();
        }
        public void ExecutionDtoExtentions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_PayLoadIsNullOrEmpty_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);

            var esbExecuteRequestMessage = "<xml>test message</xml>";

            var jsonSerializer    = new Dev2JsonSerializer();
            var serExecuteMessage = jsonSerializer.Serialize(esbExecuteRequestMessage);

            var executionDto = new ExecutionDto
            {
                DataObject     = mockDSFDataObject.Object,
                DataListFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml"),
                ErrorResultTO  = new ErrorResultTO(),
                Request        = new EsbExecuteRequest {
                    WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage)
                },
                Serializer = jsonSerializer,
            };

            var executionDtoExtentions = new ExecutionDtoExtentions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: "\"<xml>test message</xml>\"", actual: executionDto.PayLoad);
        }
        public void ExecutionDtoExtentions_CreateResponseWriter_WasInternalService_And_ExecuteMessageXML_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);

            var esbExecuteRequestMessage = "<xml>test message</xml>";
            var executeMessage           = new ExecuteMessage();

            executeMessage.Message.Append(esbExecuteRequestMessage);

            var jsonSerializer    = new Dev2JsonSerializer();
            var serExecuteMessage = jsonSerializer.Serialize(executeMessage);

            var executionDto = new ExecutionDto
            {
                DataObject    = mockDSFDataObject.Object,
                ErrorResultTO = new ErrorResultTO(),
                Request       = new EsbExecuteRequest {
                    WasInternalService = true, ExecuteResult = new StringBuilder(serExecuteMessage)
                },
                Serializer = jsonSerializer,
            };

            var executionDtoExtentions = new ExecutionDtoExtentions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: esbExecuteRequestMessage, actual: executionDto.PayLoad);
        }
Esempio n. 6
0
        public virtual IList <ExecutionDto> queryExecutions(ExecutionQueryDto queryDto, int?firstResult, int?maxResults)
        {
            ProcessEngine engine = ProcessEngine;

            queryDto.ObjectMapper = ObjectMapper;
            ExecutionQuery query = queryDto.toQuery(engine);

            IList <Execution> matchingExecutions;

            if (firstResult != null || maxResults != null)
            {
                matchingExecutions = executePaginatedQuery(query, firstResult, maxResults);
            }
            else
            {
                matchingExecutions = query.list();
            }

            IList <ExecutionDto> executionResults = new List <ExecutionDto>();

            foreach (Execution execution in matchingExecutions)
            {
                ExecutionDto resultExecution = ExecutionDto.fromExecution(execution);
                executionResults.Add(resultExecution);
            }
            return(executionResults);
        }
Esempio n. 7
0
 void client_NewExecution(object sender, ExecutionDto e)
 {
     UiDispatcher.Dispatcher.Invoke(() =>
     {
         Executions.Add(e);
     });
 }
        public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesSWAGGER_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDSFDataObject = new Mock <IDSFDataObject>();
            var mockResource      = new Mock <IResource>();

            mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>"));

            mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);
            mockDSFDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.SWAGGER);

            var dataListDataFormat = DataListFormat.CreateFormat("SWAGGER", EmitionTypes.SWAGGER, "application/json");

            var webRequestTO = new WebRequestTO {
                WebServerUrl = "http://serverName:3142/public/resourceName.api"
            };

            var executionDto = new ExecutionDto
            {
                Resource       = mockResource.Object,
                DataObject     = mockDSFDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
                WebRequestTO   = webRequestTO,
            };

            var executionDtoExtentions = new ExecutionDtoExtentions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: "{\r\n  \"swagger\": 2,\r\n  \"info\": {\r\n    \"title\": null,\r\n    \"description\": \"\",\r\n    \"version\": \"1.0.0\"\r\n  },\r\n  \"host\": \":0/\",\r\n  \"basePath\": \"/\",\r\n  \"schemes\": [\r\n    \"http\"\r\n  ],\r\n  \"produces\": [\r\n    \"application/json\",\r\n    \"application/xml\"\r\n  ],\r\n  \"paths\": {\r\n    \"serviceName\": \"/public/resourceName.api\",\r\n    \"get\": {\r\n      \"summary\": \"\",\r\n      \"description\": \"\",\r\n      \"parameters\": []\r\n    }\r\n  },\r\n  \"responses\": {\r\n    \"200\": {\r\n      \"schema\": {\r\n        \"$ref\": \"#/definition/Output\"\r\n      }\r\n    }\r\n  },\r\n  \"definitions\": {\r\n    \"Output\": {\r\n      \"type\": \"object\",\r\n      \"properties\": {}\r\n    }\r\n  }\r\n}", actual: executionDto.PayLoad);
        }
        public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesXML_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDSFDataObject = new Mock <IDSFDataObject>();
            var mockResource      = new Mock <IResource>();

            mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>"));

            mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);
            mockDSFDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.XML);

            var dataListDataFormat = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "application/xml");

            var executionDto = new ExecutionDto
            {
                Resource       = mockResource.Object,
                DataObject     = mockDSFDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
            };

            var executionDtoExtentions = new ExecutionDtoExtentions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: "<DataList />", actual: executionDto.PayLoad);
        }
        public void ExecutionDtoExtentions_CreateResponseWriter_NotWasInternalService_And_IsDebug_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);
            mockDSFDataObject.Setup(o => o.IsDebug).Returns(true);

            var dataListDataFormat = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");

            var executionDto = new ExecutionDto
            {
                Resource       = null,
                DataObject     = mockDSFDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
            };

            var executionDtoExtentions = new ExecutionDtoExtentions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtentions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            Assert.AreEqual(expected: string.Empty, actual: executionDto.PayLoad);
        }
 void client_NewExecution(object sender, ExecutionDto e)
 {
     UiDispatcher.Dispatcher.Invoke(() =>
     {
         Executions.Add(e);
     });
 }
 public ServerToClientMessage()
 {
     LimitOrder = new LimitOrderDto();
     LimitOrderList = new List<LimitOrderDto>();
     Execution = new ExecutionDto();
     Level1 = new MarketBestBidAskDto();
     StopLimitOrder = new StopLimitOrderDto();
     StopLimitOrderList = new List<StopLimitOrderDto>();
     Reset();
 }
Esempio n. 13
0
 public ServerToClientMessage()
 {
     LimitOrder         = new LimitOrderDto();
     LimitOrderList     = new List <LimitOrderDto>();
     Execution          = new ExecutionDto();
     Level1             = new MarketBestBidAskDto();
     StopLimitOrder     = new StopLimitOrderDto();
     StopLimitOrderList = new List <StopLimitOrderDto>();
     Reset();
 }
Esempio n. 14
0
        public void WebServerRequest_CreateResponseWriter()
        {
            var executionDto = new ExecutionDto();
            var mock         = new Mock <IDSFDataObject>();

            mock.SetupGet(o => o.Environment).Returns(new ExecutionEnvironment());
            mock.SetupGet(o => o.IsDebug).Returns(true);
            mock.SetupGet(o => o.RemoteInvoke).Returns(false);
            mock.SetupGet(o => o.RemoteNonDebugInvoke).Returns(false);
            executionDto.DataListFormat = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");
            executionDto.ErrorResultTO  = new Data.TO.ErrorResultTO();
            executionDto.DataObject     = mock.Object;


            executionDto.Request = new Communication.EsbExecuteRequest();
            executionDto.Request.WasInternalService = false;

            executionDto.CreateResponseWriter();
        }
Esempio n. 15
0
        public void ExecutionDtoExtensions_CreateResponseWriter_NotWasInternalService_And_EmitionTypesSWAGGER_Success()
        {
            //-------------------------------Arrange----------------------------------
            var mockDataObject = new Mock <IDSFDataObject>();
            var mockResource   = new Mock <IWarewolfResource>();

            mockResource.Setup(resource => resource.ResourceName).Returns("resourceName");
            var versionInfo = new VersionInfo {
                VersionNumber = "1.0"
            };

            mockResource.Setup(resource => resource.VersionInfo).Returns(versionInfo);
            mockResource.Setup(o => o.DataList).Returns(new StringBuilder("<DataList>the test string to be built</DataList>"));

            mockDataObject.Setup(o => o.Environment.HasErrors()).Returns(false);
            mockDataObject.Setup(o => o.ReturnType).Returns(EmitionTypes.SWAGGER);

            var dataListDataFormat = DataListFormat.CreateFormat("SWAGGER", EmitionTypes.SWAGGER, "application/json");

            var webRequestTO = new WebRequestTO {
                WebServerUrl = "http://serverName:3142/public/resourceName.api"
            };

            var executionDto = new ExecutionDto
            {
                Resource       = mockResource.Object,
                DataObject     = mockDataObject.Object,
                ErrorResultTO  = new ErrorResultTO(),
                DataListFormat = dataListDataFormat,
                WebRequestTO   = webRequestTO,
            };

            var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);

            //-------------------------------Act--------------------------------------
            executionDtoExtensions.CreateResponseWriter(new StringResponseWriterFactory());

            //-------------------------------Assert-----------------------------------
            var expectedPayload = "{\r\n  \"openapi\": \"3.0.1\",\r\n  \"info\": {\r\n    \"title\": \"resourceName\",\r\n    \"description\": \"resourceName\",\r\n    \"version\": \"1.0\"\r\n  },\r\n  \"servers\": [\r\n    {\r\n      \"url\": \"http://servername\"\r\n    }\r\n  ],\r\n  \"paths\": {\r\n    \"/public/resourceName\": {\r\n      \"get\": {\r\n        \"tags\": [\r\n          \"\"\r\n        ],\r\n        \"description\": \"\",\r\n        \"parameters\": [],\r\n        \"responses\": {\r\n          \"200\": {\r\n            \"description\": \"Success\",\r\n            \"content\": {\r\n              \"application/json\": {\r\n                \"schema\": {\r\n                  \"type\": \"object\",\r\n                  \"properties\": {}\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}";

            Assert.AreEqual(expected: expectedPayload, actual: executionDto.PayLoad);
        }
Esempio n. 16
0
        public static MessageCorrelationResultWithVariableDto fromMessageCorrelationResultWithVariables(MessageCorrelationResultWithVariables result)
        {
            MessageCorrelationResultWithVariableDto dto = new MessageCorrelationResultWithVariableDto();

            if (result != null)
            {
                dto.ResultType = result.ResultType;
                if (result.ProcessInstance != null)
                {
                    dto.ProcessInstance = ProcessInstanceDto.fromProcessInstance(result.ProcessInstance);
                }
                else if (result.Execution != null)
                {
                    dto.Execution = ExecutionDto.fromExecution(result.Execution);
                }

                dto.variables = VariableValueDto.fromMap(result.Variables, true);
            }
            return(dto);
        }
Esempio n. 17
0
            internal IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName)
            {
                if (_dataObject.IsServiceTestExecution)
                {
                    return(ServiceTestExecutionResponse(out _executePayload, _dataObject, _serializer, _canExecute));
                }

                if (_dataObject.IsDebugFromWeb)
                {
                    return(DebugFromWebExecutionResponse(_dataObject, _serializer));
                }

                DataListFormat formatter;

                if (webRequest.ServiceName.EndsWith(".xml") || _dataObject.ReturnType == EmitionTypes.XML)
                {
                    formatter = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml");
                }
                else
                {
                    formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");
                }

                var executionDto = new ExecutionDto
                {
                    WebRequestTO   = webRequest,
                    ServiceName    = serviceName,
                    DataObject     = _dataObject,
                    DataListIdGuid = _executionDataListId,
                    WorkspaceID    = _workspaceGuid,
                    Resource       = _resource,
                    DataListFormat = formatter,
                    PayLoad        = _executePayload ?? string.Empty,
                    Serializer     = _serializer,
                };

                return(DefaultExecutionResponse(executionDto));
            }
Esempio n. 18
0
            public override IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName)
            {
                var formatter    = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");
                var executionDto = new ExecutionDto
                {
                    WebRequestTO   = webRequest,
                    ServiceName    = serviceName,
                    DataObject     = _dataObject,
                    DataListIdGuid = _executionDataListId,
                    WorkspaceID    = _workspaceGuid,
                    Resource       = _resource,
                    DataListFormat = formatter,
                    PayLoad        = _executePayload ?? string.Empty,
                    Serializer     = _serializer,
                };
                var allErrors = new ErrorResultTO();

                var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors);

                if (currentErrors != null)
                {
                    foreach (var error in currentErrors)
                    {
                        if (error.Length > 0)
                        {
                            allErrors.AddError(error, true);
                        }
                    }
                }

                executionDto.Request       = _esbExecuteRequest;
                executionDto.ErrorResultTO = allErrors;

                if (executionDto.DataObject.ExecutionException is AccessDeniedException)
                {
                    throw executionDto.DataObject.ExecutionException;
                }

                var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);
                var resp    = executionDtoExtensions.CreateResponse();
                var content = resp.Content;

                if (!content.Contains("UserGroups"))
                {
                    ThrowInternalServerError();
                }

                var  json              = JsonConvert.DeserializeObject <UserGroupsResponse>(resp.Content);
                var  userGroups        = json?.UserGroups.ToList();
                bool hasInvalidOutputs = false;

                hasInvalidOutputs = userGroups.Count == 0;
                foreach (var o in (userGroups))
                {
                    if (string.IsNullOrEmpty(o.Name) || string.IsNullOrWhiteSpace(o.Name))
                    {
                        hasInvalidOutputs = true;
                        break;
                    }
                }

                return(hasInvalidOutputs
                    ? ThrowInternalServerError()
                    : CreateEncryptedResponse(resp.Content));
            }
Esempio n. 19
0
        protected static IResponseWriter CreateForm(WebRequestTO webRequest, string serviceName, string workspaceId, NameValueCollection headers, IPrincipal user)
        {
            var executePayload = "";

            var workspaceRepository = _repository ?? WorkspaceRepository.Instance;
            var workspaceGuid       = SetWorkspaceId(workspaceId, workspaceRepository);

            var allErrors  = new ErrorResultTO();
            var dataObject = CreateNewDsfDataObject(webRequest, serviceName, user, workspaceGuid);

            dataObject.SetupForWebDebug(webRequest);
            webRequest.BindRequestVariablesToDataObject(ref dataObject);
            dataObject.SetupForRemoteInvoke(headers);
            dataObject.SetEmitionType(webRequest, serviceName, headers);
            dataObject.SetupForTestExecution(serviceName, headers);
            if (dataObject.ServiceName == null)
            {
                dataObject.ServiceName = serviceName;
            }

            dataObject.SetResourceNameAndId(_resourceCatalog, serviceName, out IResource resource);
            dataObject.SetTestResourceIds(_resourceCatalog, webRequest, serviceName);
            dataObject.WebUrl = webRequest.WebServerUrl;
            var serializer  = new Dev2JsonSerializer();
            var esbEndpoint = new EsbServicesEndpoint();

            dataObject.EsbChannel = esbEndpoint;

            var instance   = _authorizationService ?? ServerAuthorizationService.Instance;
            var canExecute = dataObject.CanExecuteCurrentResource(resource, instance);

            // Build EsbExecutionRequest - Internal Services Require This ;)
            var esbExecuteRequest = new EsbExecuteRequest {
                ServiceName = serviceName
            };

            foreach (string key in webRequest.Variables)
            {
                esbExecuteRequest.AddArgument(key, new StringBuilder(webRequest.Variables[key]));
            }

            var executionDlid = GlobalConstants.NullDataListID;
            var formatter     = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml");

            if (canExecute && dataObject.ReturnType != EmitionTypes.SWAGGER)
            {
                ErrorResultTO errors = null;
                Thread.CurrentPrincipal = user;
                var userPrinciple = user;
                if ((dataObject.ReturnType == EmitionTypes.TEST || dataObject.ReturnType == EmitionTypes.TRX) && dataObject.TestName == "*")
                {
                    formatter = ServiceTestExecutor.ExecuteTests(serviceName, dataObject, formatter, userPrinciple, workspaceGuid, serializer, _testCatalog, _resourceCatalog, ref executePayload);
                    return(new StringResponseWriter(executePayload, formatter.ContentType));
                }

                Common.Utilities.PerformActionInsideImpersonatedContext(userPrinciple, () => { executionDlid = esbEndpoint.ExecuteRequest(dataObject, esbExecuteRequest, workspaceGuid, out errors); });
            }
            else
            {
                if (!canExecute)
                {
                    dataObject.Environment.AddError(string.Format(Warewolf.Resource.Errors.ErrorResource.UserNotAuthorizedToExecuteOuterWorkflowException, dataObject.ExecutingUser.Identity.Name, dataObject.ServiceName));
                }
            }

            formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");
            if (dataObject.IsServiceTestExecution)
            {
                executePayload = ServiceTestExecutor.SetupForTestExecution(serializer, esbExecuteRequest, dataObject);
                if (!canExecute)
                {
                    return(new StringResponseWriter(dataObject.Environment.FetchErrors(), formatter.ContentType));
                }
                return(new StringResponseWriter(executePayload, formatter.ContentType));
            }
            if (dataObject.IsDebugFromWeb)
            {
                var serialize = SetupForWebExecution(dataObject, serializer);
                return(new StringResponseWriter(serialize, formatter.ContentType));
            }

            var unionedErrors = dataObject.Environment?.Errors?.Union(dataObject.Environment?.AllErrors) ?? new List <string>();

            foreach (var error in unionedErrors)
            {
                if (error.Length > 0)
                {
                    allErrors.AddError(error, true);
                }
            }

            var executionDto = new ExecutionDto
            {
                WebRequestTO   = webRequest,
                ServiceName    = serviceName,
                DataObject     = dataObject,
                Request        = esbExecuteRequest,
                DataListIdGuid = executionDlid,
                WorkspaceID    = workspaceGuid,
                Resource       = resource,
                DataListFormat = formatter,
                PayLoad        = executePayload,
                Serializer     = serializer,
                ErrorResultTO  = allErrors
            };

            return(executionDto.CreateResponseWriter());
        }
Esempio n. 20
0
            public override IResponseWriter BuildResponse(WebRequestTO webRequest, string serviceName)
            {
                var formatter    = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");
                var executionDto = new ExecutionDto
                {
                    WebRequestTO   = webRequest,
                    ServiceName    = serviceName,
                    DataObject     = _dataObject,
                    DataListIdGuid = _executionDataListId,
                    WorkspaceID    = _workspaceGuid,
                    Resource       = _resource,
                    DataListFormat = formatter,
                    PayLoad        = _executePayload ?? string.Empty,
                    Serializer     = _serializer,
                };
                var allErrors = new ErrorResultTO();

                var currentErrors = executionDto.DataObject.Environment?.Errors?.Union(executionDto.DataObject.Environment?.AllErrors);

                if (currentErrors != null)
                {
                    foreach (var error in currentErrors)
                    {
                        if (error.Length > 0)
                        {
                            allErrors.AddError(error, true);
                        }
                    }
                }

                executionDto.Request       = _esbExecuteRequest;
                executionDto.ErrorResultTO = allErrors;

                if (executionDto.DataObject.ExecutionException is AccessDeniedException)
                {
                    throw executionDto.DataObject.ExecutionException;
                }

                var executionDtoExtensions = new ExecutionDtoExtensions(executionDto);
                var resp    = executionDtoExtensions.CreateResponse();
                var content = resp.Content;

                if (!content.Contains("UserGroups"))
                {
                    var dataObject   = executionDto.DataObject;
                    var emissionType = new Uri(dataObject.WebUrl).GetEmitionType();
                    var message      = string.Format(ErrorResource.TokenNotAuthorizedToExecuteOuterWorkflowException, dataObject.ServiceName);
                    Throw(emissionType, HttpStatusCode.Unauthorized, GlobalConstants.TOKEN_UNAUTHORIZED, message);
                }

                var json              = JsonConvert.DeserializeObject <UserGroupsResponse>(resp.Content);
                var userGroups        = json?.UserGroups.ToList();
                var hasInvalidOutputs = userGroups?.Count == 0;

                if (userGroups != null)
                {
                    foreach (var o in (userGroups))
                    {
                        if (string.IsNullOrEmpty(o.Name) || string.IsNullOrWhiteSpace(o.Name))
                        {
                            hasInvalidOutputs = true;
                            break;
                        }
                    }
                }

                var webUrl = executionDto.WebRequestTO.WebServerUrl;

                return(hasInvalidOutputs
                    ? Throw(new Uri(webUrl).GetEmitionType(), HttpStatusCode.BadRequest, GlobalConstants.BAD_REQUEST, "invalid login override workflow selected: outputs not valid")
                    : CreateEncryptedResponse(new Uri(webUrl).GetEmitionType(), resp.Content));
            }