BoxKite.Twitter.UserSession.PostFileAsync C# (CSharp) Метод

PostFileAsync() публичный Метод

public PostFileAsync ( string url, string>.SortedDictionary parameters, string fileName, string fileContentsKey, byte fileContents = null, Stream srImageStream = null ) : Task
url string
parameters string>.SortedDictionary
fileName string
fileContentsKey string
fileContents byte
srImageStream Stream
Результат Task
        public async Task<HttpResponseMessage> PostFileAsync(string url, SortedDictionary<string, string> parameters, string fileName, string fileContentsKey, byte[] fileContents = null, Stream srImageStream = null)
        {
            if (TwitterCredentials == TwitterCredentials.Null || TwitterCredentials.Valid == false)
                throw new ArgumentException("TwitterCredentials must be specified and validated");

            if (fileContents == null && srImageStream == null)
            {
                throw new ArgumentException("FileContents must have something actually in them.");
            }
            var oauth1aAuthheader = BuildAuthenticatedResult(url, parameters, "POST", multipartform: true);
            var handler = new HttpClientHandler();
            if (handler.SupportsAutomaticDecompression)
            {
                handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            }
            var client = new HttpClient(handler);
            client.DefaultRequestHeaders.ExpectContinue = false;
            client.DefaultRequestHeaders.Add("Authorization", oauth1aAuthheader.Header);
            client.DefaultRequestHeaders.Add("User-Agent", TwitterApi.UserAgent());

            var data = new MultipartFormDataContent();
            if (parameters.Count > 0)
            {
                foreach (var parameter in parameters)
                {
                    var statusData = new StringContent(parameter.Value);
                    statusData.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                    {
                        Name = "\"" + parameter.Key + "\""
                    };
                    data.Add(statusData);
                }
            }

            var filedata = FileDataContent(fileContents, srImageStream);
            filedata.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            filedata.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
            {
                FileName = "\"" + fileName + "\"",
                Name = "\"" + fileContentsKey + "\"",
            };
            data.Add(filedata);

            var download = client.PostAsync(url, data).ToObservable().Timeout(TimeSpan.FromSeconds(waitTimeoutSeconds));
            var clientdownload = await download;

            return clientdownload;
        }