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;
}