AsyncOAuth icon indicating copy to clipboard operation
AsyncOAuth copied to clipboard

How to upload picture on twitpic?

Open nilayshah80 opened this issue 12 years ago • 1 comments

Hi, Please add example for twitpic upload?

Thanks.

nilayshah80 avatar Dec 16 '13 14:12 nilayshah80

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;

neuecc avatar Dec 16 '13 15:12 neuecc