public async Task GetFileInfo()

in SamplesV1/ADFSecurePublish/AdfKeyVaultDeployment/AdfFileHelper.cs [134:256]


        public async Task<AdfFileInfo> GetFileInfo(string filePath, DeployConfigInfo deployConfig = null)
        {
            string fileContents = File.ReadAllText(filePath);
            string fileName = Path.GetFileNameWithoutExtension(filePath);

            // Initialize props to default values
            AdfFileInfo fileInfo = new AdfFileInfo
            {
                FileType = FileType.Unknown,
                SubType = string.Empty,
                Name = string.Empty,
                IsValid = false,
                FileContents = fileContents,
                FileName = fileName
            };

            JObject jObject = null;

            try
            {
                jObject = JObject.Parse(fileContents);

                JObject propertyJObject = jObject.GetValue("properties", StringComparison.OrdinalIgnoreCase) as JObject;
                JToken nameJToken = jObject.GetValue("name", StringComparison.OrdinalIgnoreCase);

                if (propertyJObject == null || nameJToken == null)
                {
                    logger.Write($"{fileInfo.FileName} is a not a valid ADF file.");
                    return fileInfo;
                }

                fileInfo.Name = nameJToken.ToObject<string>();

                if (deployConfig != null)
                {
                    // Update ADF files with deploymnet settings if they exist
                    jObject = ResolveDeploymentSettings(jObject, fileInfo.Name, deployConfig);
                    fileInfo.FileContents = jObject.ToString();
                }

                JToken typeJToken = propertyJObject.GetValue("type", StringComparison.OrdinalIgnoreCase);
                if (typeJToken != null)
                {
                    fileInfo.SubType = typeJToken.ToObject<string>();
                }

                if (fileInfo.SubType == "CPSServiceBusProxy" || jObject.IsValid(jsonLinkedServiceSchema))
                {
                    fileInfo.FileType = FileType.LinkedService;
                    fileInfo.IsValid = true;

                    logger.Write($"Retreived LinkedService: {fileInfo.FileName}");
                }
                else if (jObject.IsValid(jsonTableSchema))
                {
                    fileInfo.FileType = FileType.Table;
                    fileInfo.IsValid = true;

                    logger.Write($"Retreived Dataset: {fileInfo.FileName}");
                }
                else if (jObject.IsValid(jsonPipelineSchema))
                {
                    fileInfo.FileType = FileType.Pipeline;
                    fileInfo.IsValid = true;

                    logger.Write($"Retreived Pipeline: {fileInfo.FileName}");

                    // Get all custom activity packages if available
                    JArray activities = propertyJObject.GetValue("activities", StringComparison.InvariantCultureIgnoreCase) as JArray;

                    if (activities != null)
                    {
                        fileInfo.CustomActivityPackages = new List<CustomActivityPackageInfo>();

                        foreach (JObject activity in activities)
                        {
                            JToken activityTypeJToken = activity.GetValue("type", StringComparison.OrdinalIgnoreCase);

                            if (activityTypeJToken != null && activityTypeJToken.ToObject<string>().Equals("DotNetActivity", StringComparison.CurrentCultureIgnoreCase))
                            {
                                CustomActivityPackageInfo packageInfo = new CustomActivityPackageInfo();

                                packageInfo.PackageLinkedService = activity.SelectToken("$.typeProperties.packageLinkedService")?.ToObject<string>();
                                packageInfo.PackageFile = activity.SelectToken("$.typeProperties.packageFile")?.ToObject<string>();

                                logger.Write($"Retreived Custom Activity package: {packageInfo.PackageFile}");

                                fileInfo.CustomActivityPackages.Add(packageInfo);
                            }
                        }
                    }
                }
                else
                {
                    fileInfo.FileType = FileType.Unknown;
                    logger.Write($"{fileInfo.FileName} is a not a valid ADF file.");
                }
            }
            catch (Exception e)
            {
                fileInfo.ErrorException = e;
                logger.Write($"{fileInfo.FileName} is a not a valid ADF file. Error message: {e}");
                logger.WriteError(e);
            }

            if (fileInfo.IsValid)
            {
                // Search for keyvault tokens and resolve them
                string keyVaultResolvedContents = await ResolveKeyVault(fileInfo.FileContents);

                if (fileInfo.FileContents != keyVaultResolvedContents)
                {
                    fileInfo.FileContents = keyVaultResolvedContents;
                    fileInfo.JObject = JObject.Parse(fileInfo.FileContents);
                }
                else
                {
                    fileInfo.JObject = jObject;
                }
            }

            return fileInfo;
        }