in src/Utilities.cs [164:194]
internal static async Task<DateTime?> InferFileCreationTimeUtcAsync(IPersistentStorageFile cloudFile, DateTimeFormatPattern blobCreationTimeFormat)
{
// Metadata always wins, as it is more deliberate
if (cloudFile is IFileWithMetadata cloudFileWithMetadata)
{
var metadata = await cloudFileWithMetadata.GetFileMetaDataAsync();
DateTime? creationTimeUtc = GetDateTimeProperty(metadata,
#if !OPEN_SOURCE_COMPILATION
(cloudFile is S3PersistentStorageFile) ? Constants.AwsMetadataCreationTimeLegacy :
#endif
Constants.BlobMetadataCreationTimeLegacy);
if (creationTimeUtc.HasValue)
{
return creationTimeUtc.Value;
}
creationTimeUtc = GetDateTimeProperty(metadata,
#if !OPEN_SOURCE_COMPILATION
(cloudFile is S3PersistentStorageFile) ? Constants.AwsMetadataCreationTimeUtc :
#endif
Constants.BlobMetadataCreationTimeUtc);
if (creationTimeUtc.HasValue)
{
return creationTimeUtc.Value;
}
}
// We use the entire blob URI absolute path (container and blob path) to infer creationTime
return TryParseDateTimeUtcFromString(cloudFile.GetFileUri(), blobCreationTimeFormat);
}