AsyncOAuth
AsyncOAuth copied to clipboard
How to upload picture on twitpic?
Hi, Please add example for twitpic upload?
Thanks.
This code is broken, but maybe you can reference it.
public class TwitpicAuthroizeHandler : DelegatingHandler
{
const string ServiceProvider = "https://api.twitter.com/1/account/verify_credentials.json";
const string Realm = "http://api.twitter.com/";
readonly string consumerKey;
readonly string consumerSecret;
readonly AccessToken accessToken;
public TwitpicAuthroizeHandler(string consumerKey, string consumerSecret, AccessToken accessToken)
: this(consumerKey, consumerSecret, accessToken, new HttpClientHandler())
{
}
public TwitpicAuthroizeHandler(string consumerKey, string consumerSecret, AccessToken accessToken, HttpMessageHandler innerHandler)
: base(innerHandler)
{
this.consumerKey = consumerKey;
this.consumerSecret = consumerSecret;
this.accessToken = accessToken;
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
var parameters = OAuthUtility.BuildBasicParameters(consumerKey, consumerSecret, ServiceProvider, HttpMethod.Get, accessToken);
var realm = new[] { new KeyValuePair<string, string>("realm", Realm) };
var authHeader = "OAuth " + string.Join(",", realm.Concat(parameters).Select(x => x.Key + "=\"" + x.Value + "\""));
request.Headers.TryAddWithoutValidation("X-Verify-Credentials-Authorization", authHeader);
request.Headers.TryAddWithoutValidation("X-Auth-Service-Provider", ServiceProvider);
return base.SendAsync(request, cancellationToken);
}
}
var client = new HttpClient(new TwitpicAuthroizeHandler(consumerKey, consumerSecret, accessToken));
var uploadPic = new MultipartFormDataContent();
uploadPic.Add(new StringContent(twitPicApiKey), "\"key\"");
uploadPic.Add(new StringContent("upload test"), "\"message\"");
uploadPic.Add(new ByteArrayContent(File.ReadAllBytes(@"test.jpg")), "\"media\"", "\"test.jpg\"");
var result = client.PostAsync("http://api.twitpic.com/2/upload.xml", uploadPic).Result;