private static Dictionary <string, string> CreateHeaders(CustomTextConfigModel skillsetConfigs, SelectedProjects selectedProjects)
        {
            var headers = new Dictionary <string, string>()
            {
                [Constants.CustomTextResourceEndpointHeader] = skillsetConfigs.Resource.Endpoint,
                [Constants.CustomTextResourceKeyHeader]      = skillsetConfigs.Resource.Key,
            };

            if (selectedProjects.IsSelected_EntityRecognitionProject)
            {
                headers.Add(Constants.EntityRecognitionProjectNameHeader, skillsetConfigs.Projects.EntityRecognition.ProjectName);
                headers.Add(Constants.EntityRecognitionDeploymentNameHeader, skillsetConfigs.Projects.EntityRecognition.DeploymentName);
            }
            if (selectedProjects.IsSelected_SingleClassificationProject)
            {
                headers.Add(Constants.SingleClassificationProjectNameHeader, skillsetConfigs.Projects.SingleClassification.ProjectName);
                headers.Add(Constants.SingleClassificationDeploymentNameHeader, skillsetConfigs.Projects.SingleClassification.DeploymentName);
            }
            if (selectedProjects.IsSelected_MultiClassificationProject)
            {
                headers.Add(Constants.MultiClassificationProjectNameHeader, skillsetConfigs.Projects.MultiClassification.ProjectName);
                headers.Add(Constants.MultiClassificationDeploymentNameHeader, skillsetConfigs.Projects.MultiClassification.DeploymentName);
            }
            return(headers);
        }
        public async Task ValidateCustomSkillsetConfigsAsyncInternal(
            string azureFunctionUrl,
            CustomTextConfigModel skillsetConfigs,
            SelectedProjects selectedProjects)
        {
            // send request
            var body = new RequestBody()
            {
                Values = new RequestValue[]
                {
                    new RequestValue()
                    {
                        RecordId = "123",
                        Data     = new RequestData()
                        {
                            Text = "some testing text"
                        }
                    }
                }
            };
            var headers  = CreateHeaders(skillsetConfigs, selectedProjects);
            var response = await SendJsonPostRequestAsync(url : azureFunctionUrl, body : body, headers : headers, parameters : null);

            // validate response
            var result = JsonConvert.DeserializeObject <Response>(await response.Content.ReadAsStringAsync());

            ValidateResponse(result);
        }
 public ConfigModel()
 {
     Storage       = new StorageConfigModel();
     Parser        = new ParserConfigModel();
     Chunker       = new ChunkerConfigModel();
     CustomText    = new CustomTextConfigModel();
     TextAnalytics = new TextAnalyticsConfigModel();
 }
 public async Task ValidateCustomSkillsetConfigsAsync(
     string azureFunctionUrl,
     CustomTextConfigModel skillsetConfigs,
     SelectedProjects selectedProjects)
 {
     try
     {
         await ValidateCustomSkillsetConfigsAsyncInternal(azureFunctionUrl, skillsetConfigs, selectedProjects);
     }
     catch (Exception)
     {
         throw new Exception("Custom Text App Credentials Are Invalid!");
     }
 }
        public async Task CustomSkillsetValidationServiceAsyncTest(
            string azureFunctionUrl,
            CustomTextConfigModel customTextConfigs,
            SelectedProjects selectedProjects,
            bool isValidCredentials)
        {
            var validationService = new SkillsetValidationService();

            if (isValidCredentials)
            {
                await validationService.ValidateCustomSkillsetConfigsAsync(azureFunctionUrl, customTextConfigs, selectedProjects);
            }
            else
            {
                await Assert.ThrowsAsync <Exception>(() => validationService.ValidateCustomSkillsetConfigsAsync(azureFunctionUrl, customTextConfigs, selectedProjects));
            }
        }
        public SkillSet CreateSkillSetSchema(
            string skillSetName,
            string customTextSkillName,
            string azureFunctionUrl,
            CustomTextConfigModel customTextConfigs,
            SelectedProjects selectedProjects)
        {
            var customSkillSchema = CreateCustomSkillSchema(
                customTextSkillName,
                azureFunctionUrl,
                customTextConfigs,
                selectedProjects);

            return(new SkillSet
            {
                Name = skillSetName,
                Description = "Custom Text Skillset",
                Skills = new List <CustomSkillSchema> {
                    customSkillSchema
                }
            });
        }
        public static TheoryData CustomSkillsetValidationServiceAsyncTestData()
        {
            var customTextConfigs = new CustomTextConfigModel()
            {
                Resource = new CustomTextResource()
                {
                    Endpoint = Secrets.Instance.CustomSkillsetCustomtextServiceEndpoint,
                    Key      = Secrets.Instance.CustomSkillsetCustomtextServiceKey
                },
                Projects = new CustomTextProjects()
                {
                    EntityRecognition = new ProjectCredentials()
                    {
                        ProjectName    = Secrets.Instance.CustomSkillsetCustomtextProjectName,
                        DeploymentName = Secrets.Instance.CustomSkillsetCustomtextDeploymentName,
                    }
                }
            };

            var selectedProjects = new SelectedProjects()
            {
                IsSelected_EntityRecognitionProject    = false,
                IsSelected_SingleClassificationProject = false,
                IsSelected_MultiClassificationProject  = false
            };

            return(new TheoryData <string, CustomTextConfigModel, SelectedProjects, bool>
            {
                {
                    Secrets.Instance.CustomSkillsetAzureFunctionUrl,
                    customTextConfigs,
                    selectedProjects,
                    true
                },

                /*{
                 *  "https://customtextfunction20asd017202545.azurewebsites.net/api/customtext-extractor?code=kfOKcelrasdlvn64VobUn/CiU2asdAFdb2n/Tasdgknvx8IsAEMwoA==",
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceEndpoint,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceKey,
                 *  Secrets.Instance.CustomSkillsetCustomtextProjectName,
                 *  Secrets.Instance.CustomSkillsetCustomtextDeploymentName,
                 *  false
                 * },
                 * {
                 *  Secrets.Instance.CustomSkillsetAzureFunctionUrl,
                 *  "lknlknasdlnlasjdnlajknsdljnasdljnasd",
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceKey,
                 *  Secrets.Instance.CustomSkillsetCustomtextProjectName,
                 *  Secrets.Instance.CustomSkillsetCustomtextDeploymentName,
                 *  false
                 * },
                 * {
                 *  Secrets.Instance.CustomSkillsetAzureFunctionUrl,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceEndpoint,
                 *  "lojunaiosudbiaubsdasdasd",
                 *  Secrets.Instance.CustomSkillsetCustomtextProjectName,
                 *  Secrets.Instance.CustomSkillsetCustomtextDeploymentName,
                 *  false
                 * },
                 * {
                 *  Secrets.Instance.CustomSkillsetAzureFunctionUrl,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceEndpoint,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceKey,
                 *  "z9h8s6f664hf",
                 *  Secrets.Instance.CustomSkillsetCustomtextDeploymentName,
                 *  false
                 * },
                 * {
                 *  Secrets.Instance.CustomSkillsetAzureFunctionUrl,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceEndpoint,
                 *  Secrets.Instance.CustomSkillsetCustomtextServiceKey,
                 *  Secrets.Instance.CustomSkillsetCustomtextProjectName,
                 *  "iuygsdgulmae",
                 *  false
                 * },*/
            });
        }
        private static CustomSkillSchema CreateCustomSkillSchema(
            string customTextSkillName,
            string azureFunctionUrl,
            CustomTextConfigModel customTextConfigs,
            SelectedProjects selectedProjects)
        {
            // basic info
            var customSkillSchema = new CustomSkillSchema()
            {
                name = customTextSkillName,
                uri  = azureFunctionUrl
            };

            // add headers / outputs
            var outputs = new List <Output>();
            var headers = new HttpHeaders()
            {
                CustomTextResourceEndpointHeader = customTextConfigs.Resource.Endpoint,
                CustomTextResourceKeyHeader      = customTextConfigs.Resource.Key
            };

            if (selectedProjects.IsSelected_EntityRecognitionProject)
            {
                headers.EntityRecognitionProjectNameHeader    = customTextConfigs.Projects.EntityRecognition.ProjectName;
                headers.EntityRecognitionDeploymentNameHeader = customTextConfigs.Projects.EntityRecognition.DeploymentName;
                var output = new Output()
                {
                    name       = Constants.SkillsetResponseEntitiesKey,
                    targetName = Constants.SkillsetResponseEntitiesKey
                };
                outputs.Add(output);
            }
            if (selectedProjects.IsSelected_SingleClassificationProject)
            {
                headers.SingleClassificationProjectNameHeader    = customTextConfigs.Projects.SingleClassification.ProjectName;
                headers.SingleClassificationDeploymentNameHeader = customTextConfigs.Projects.SingleClassification.DeploymentName;
                var output = new Output()
                {
                    name       = Constants.SkillsetResponseSingleClassKey,
                    targetName = Constants.SkillsetResponseSingleClassKey
                };
                outputs.Add(output);
            }
            if (selectedProjects.IsSelected_MultiClassificationProject)
            {
                headers.MultiClassificationProjectNameHeader    = customTextConfigs.Projects.MultiClassification.ProjectName;
                headers.MultiClassificationDeploymentNameHeader = customTextConfigs.Projects.MultiClassification.DeploymentName;
                var output = new Output()
                {
                    name       = Constants.SkillsetResponseMultiClassKey,
                    targetName = Constants.SkillsetResponseMultiClassKey
                };
                outputs.Add(output);
            }

            customSkillSchema.HttpHeaders = headers;
            customSkillSchema.outputs     = outputs;


            // return
            return(customSkillSchema);
        }