/// <summary>
        /// Create a service for a team
        /// </summary>
        /// <param name="createServicePost">json request object containing information to create service</param>
        /// <returns>Bool representing whether the operation passed</returns>
        public bool CreateService(CreateServicePost createServicePost)
        {
            try
            {
                // Create the service for that team.
                var newService = new Service()
                {
                    Owner       = createServicePost.ClientId,
                    Endpoint    = createServicePost.RouteToAccess,
                    Input       = createServicePost.Input,
                    Output      = createServicePost.Output,
                    Dataformat  = createServicePost.DataFormat,
                    Description = createServicePost.ServiceDescription
                };
                // Save changes.
                _context.Service.Add(newService);
                _context.SaveChanges();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #2
0
 public IActionResult CreateServicePost(CreateServicePost createServicePost)
 {
     try
     {
         return(Ok(_serviceManagementManager.CreateService(createServicePost)));
     }
     catch
     {
         return(StatusCode(StatusCodes.Status500InternalServerError));
     }
 }
        /// <summary>
        /// Create a service for a team
        /// </summary>
        /// <param name="createServicePost">Json object representing request</param>
        /// <returns>Json response object</returns>
        public CreateServiceResp CreateService(CreateServicePost createServicePost)
        {
            // Check that endpoint to call the service is unique.
            var endpointResult = _serviceManagementService.IsServiceEndpointUnique(createServicePost.RouteToAccess);

            // Deserialize configurations into a .net object to loop over action chain for url validation.
            var configJson = JsonConvert.DeserializeObject <ServiceConfiguration>(createServicePost.Configurations);

            var websiteValid = true;

            // If endpoint is unique check if steps are alive.
            for (var i = 0; i < configJson.Steps; i++)
            {
                // Check if site is valid.
                websiteValid &= _urlValidationService.IsUrlValid(configJson.Configurations[i].Action);

                // Check if site is https.
                websiteValid &= _urlValidationService.IsUrlHttps(configJson.Configurations[i].Action);
            }

            var serviceCreateResult  = false;
            var configurationsResult = false;

            // Create service configurations if above steps pass
            if (endpointResult && websiteValid)
            {
                // Create service for the team.
                serviceCreateResult = _serviceManagementService.CreateService(createServicePost);

                // Create Configurations for all teams the service is open to.
                configurationsResult = _serviceManagementService.CreateConfigurations(createServicePost.OpenTo, createServicePost.RouteToAccess, createServicePost.Configurations);
            }


            // Return corresponding json response object.
            if (endpointResult && websiteValid && serviceCreateResult && configurationsResult)
            {
                return(new CreateServiceResp()
                {
                    Status = true, EndpointResult = endpointResult, WebsiteValid = websiteValid
                });
            }
            else
            {
                return(new CreateServiceResp()
                {
                    Status = false, EndpointResult = endpointResult, WebsiteValid = websiteValid
                });
            }
        }