public async Task<HttpResponseMessage> PostAsync(string url, SortedDictionary<string, string> parameters)
{
if (TwitterCredentials == TwitterCredentials.Null || TwitterCredentials.Valid == false)
throw new ArgumentException("TwitterCredentials must be specified and validated");
var oauth1aAuthheader = BuildAuthenticatedResult(url, parameters, "POST");
var handler = new HttpClientHandler();
if (handler.SupportsAutomaticDecompression)
{
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
}
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("Authorization", oauth1aAuthheader.Header);
client.DefaultRequestHeaders.Add("User-Agent", TwitterApi.UserAgent());
var content = parameters.Aggregate(string.Empty, (current, e) => current + string.Format("{0}={1}&", e.Key, Uri.EscapeDataString(e.Value)));
var data = new StringContent(content, Encoding.UTF8, "application/x-www-form-urlencoded");
var download = client.PostAsync(url, data).ToObservable().Timeout(TimeSpan.FromSeconds(waitTimeoutSeconds));
var clientdownload = await download;
return clientdownload;
}