Ejemplo n.º 1
0
        Result AddItem(HttpResponseMessage response, Uri uri, CancellationToken token)
        {
            var timestamp = Timestamp.FromResponse(uri, response);

#if NET5_0
            var meta = MetaData.FromEnumerables(response.Headers, response.Content.Headers, response.TrailingHeaders);
#else
            var meta = MetaData.FromEnumerables(response.Headers, response.Content.Headers);
#endif
            var tempFile = FilePair.GetTemp();
            try
            {
                using var httpStream = response.Content.ReadAsStream(token);
                using (var contentFileStream = FileEx.OpenWrite(tempFile.Content))
                    using (var metaFileStream = FileEx.OpenWrite(tempFile.Meta))
                        using (var writer = new Utf8JsonWriter(metaFileStream))
                        {
                            JsonSerializer.Serialize(writer, meta);
                            httpStream.CopyTo(contentFileStream);
                        }

                return(BuildResult(timestamp, tempFile));
            }
            finally
            {
                tempFile.Delete();
            }
        }
Ejemplo n.º 2
0
        Task <Result> AddItemAsync(HttpResponseMessage response, Uri uri, CancellationToken token)
        {
            var timestamp = Timestamp.FromResponse(uri, response);

            Task <Stream> ContentFunc(CancellationToken cancellationToken) => response.Content.ReadAsStreamAsync(cancellationToken);

            var meta = MetaData.FromEnumerables(response.Headers, response.Content.Headers, response.TrailingHeaders());

            return(InnerAddItemAsync(token, ContentFunc, meta, timestamp));
        }