public async Task <UploadResponse> UploadFile(Stream fileStream, string fileName, string accessToken = null)
        {
            var url = ClientSettings.Origin + UploadFilesEndpoint;

            if (accessToken != null)
            {
                Token = accessToken;
            }

            if (fileStream.Length == 0)
            {
                throw new PyrusApiClientException("Uploaded file can not be empty");
            }

            var streamFactory = new NoDisposeStreamWrapperFactory(fileStream);

            var response = await this.RunQuery <UploadResponse>(() => RequestHelper.PostFileRequest(this, url, streamFactory, fileName, Token));

            return(response);
        }
예제 #2
0
        internal static async Task <MessageWithStatusCode> PostFileRequest(PyrusClient client, string url, NoDisposeStreamWrapperFactory streamFactory, string fileName, string token)
        {
            using (var httpClient = client.ClientSettings.NewHttpClient(_fileRequestTimeout))
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                httpClient.DefaultRequestHeaders.Add("ContentType", "multipart/form-data");
                httpClient.DefaultRequestHeaders.Add("User-Agent", UserAgent);

                var streamContent = new StreamContent(streamFactory.Create());

                var multipart = new MultipartFormDataContent {
                    { streamContent, "file", $"{fileName}" }
                };
                using (var response = await httpClient.PostAsync(url, multipart))
                {
                    var message = await response.Content.ReadAsStringAsync();

                    return(new MessageWithStatusCode {
                        Message = message, StatusCode = response.StatusCode, ResponseMessage = response
                    });
                }
            }
        }