public async Task ReadParametersFromGetRequest()
        {
            /* given */
            var httpRequest = new HttpRequestMessage
            {
                Method = HttpMethod.Get,
                RequestUri = new Uri(
                    string.Format(
                        "https://files/upload?flowChunkNumber={0}&flowChunkSize={1}&flowTotalSize={2}&flowIdentifier={3}&flowFilename={4}",
                        1,
                        2048,
                        1024,
                        "0001-my-file.file",
                        "my-file.file"), UriKind.Absolute)
            };

            var reader = new FlowRequestReader();

            /* when */
            var parameters = await reader.ReadGetAsync(httpRequest);

            /* then */
            parameters.FlowChunkNumber.ShouldBeEquivalentTo(1);
            parameters.FlowChunkSize.ShouldBeEquivalentTo(2048);
            parameters.FlowTotalSize.ShouldBeEquivalentTo(1024);
            parameters.FlowIdentifier.ShouldBeEquivalentTo("0001-my-file.file");
            parameters.FlowFilename.ShouldBeEquivalentTo("my-file.file");
        }
Exemplo n.º 2
0
        public async Task ReadParametersFromPostRequest()
        {
            /* given */
            var httpRequest = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                RequestUri = new Uri("http://files/upload")
            };

            var streamContent = new StreamContent(new MemoryStream());

            streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "my-file.txt"
            };

            var formDataContent = new MultipartFormDataContent
            {
                { new StringContent("1"), "flowChunkNumber" },
                { new StringContent("2048"), "flowChunkSize" },
                { new StringContent("1024"), "flowTotalSize" },
                { new StringContent("0001-my-file.file"), "flowIdentifier" },
                { new StringContent("my-file.file"), "flowFilename" },
                { streamContent, "content", "my-file.txt" }
            };
            var context = new FlowRequestContext(httpRequest);

            /* when */
            using (formDataContent)
            {
                httpRequest.Content = formDataContent;

                var         reader = new FlowRequestReader();
                FlowRequest request;
                using (var memoryStream = new MemoryStream())
                {
                    request =
                        await reader.ReadPostAsync(context, new FileSystem()).ConfigureAwait(false);
                }

                /* then */
                request.FlowChunkNumber.ShouldBeEquivalentTo(1);
                request.FlowChunkSize.ShouldBeEquivalentTo(2048);
                request.FlowTotalSize.ShouldBeEquivalentTo(1024);
                request.FlowIdentifier.ShouldBeEquivalentTo("0001-my-file.file");
                request.FlowFilename.ShouldBeEquivalentTo("my-file.file");
            }
        }
        public async Task ReadParametersFromPostRequest()
        {
            /* given */
            var httpRequest = new HttpRequestMessage
            {
                Method = HttpMethod.Get,
                RequestUri = new Uri("http://files/upload")
            };

            var streamContent = new StreamContent(new MemoryStream());
            streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "my-file.txt"
            };

            var formDataContent = new MultipartFormDataContent
            {
                {new StringContent("1"), "flowChunkNumber"},
                {new StringContent("2048"), "flowChunkSize"},
                {new StringContent("1024"), "flowTotalSize"},
                {new StringContent("0001-my-file.file"), "flowIdentifier"},
                {new StringContent("my-file.file"), "flowFilename"},
                {streamContent, "content", "my-file.txt"}
            };
            var context = new FlowRequestContext(httpRequest);

            /* when */
            using (formDataContent)
            {
                httpRequest.Content = formDataContent;

                var reader = new FlowRequestReader();
                FlowRequest request;
                using (var memoryStream = new MemoryStream())
                {
                    request =
                        await reader.ReadPostAsync(context, new FileSystem());
                }

                /* then */
                request.FlowChunkNumber.ShouldBeEquivalentTo(1);
                request.FlowChunkSize.ShouldBeEquivalentTo(2048);
                request.FlowTotalSize.ShouldBeEquivalentTo(1024);
                request.FlowIdentifier.ShouldBeEquivalentTo("0001-my-file.file");
                request.FlowFilename.ShouldBeEquivalentTo("my-file.file");
            }
        }
Exemplo n.º 4
0
        public async Task ReadParametersFromGetRequest()
        {
            /* given */
            var httpRequest = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                RequestUri = new Uri(
                    $"https://files/upload?flowChunkNumber={1}&flowChunkSize={2048}&flowTotalSize={1024}&flowIdentifier=0001-my-file.file&flowFilename=my-file.file", UriKind.Absolute)
            };

            var reader = new FlowRequestReader();

            /* when */
            var parameters = await reader.ReadGetAsync(httpRequest).ConfigureAwait(false);

            /* then */
            parameters.FlowChunkNumber.ShouldBeEquivalentTo(1);
            parameters.FlowChunkSize.ShouldBeEquivalentTo(2048);
            parameters.FlowTotalSize.ShouldBeEquivalentTo(1024);
            parameters.FlowIdentifier.ShouldBeEquivalentTo("0001-my-file.file");
            parameters.FlowFilename.ShouldBeEquivalentTo("my-file.file");
        }