internal static async Task InferFileCreationTimeUtcAsync()

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