using System; using System.IO; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Xml.Linq; using Hammock; using MahApps.Twitter; using MahTweets.Core; using MahTweets.Core.Interfaces; using MahTweets.Core.Models; using MahTweets.Core.Repositories; namespace MahTweets.Extensions.Twitpic { public class Twitpic : IUploader { private readonly AccountRepository _accountRepository; public Twitpic(AccountRepository accountRepository) { _accountRepository = accountRepository; } #region IUploader Members public void BeginUpload(Stream source, Action callback) { //MessageBox.Show("Oh hai from twitpic"); var account = (Twitter.Twitter) _accountRepository.First(); // MessageBox.Show("Oh hai from twitpic2"); var client = new RestClient { Authority = "http://api.twitpic.com/", VersionPath = "2" }; // MessageBox.Show("Oh hai from twitpic3"); var temp = (HttpWebRequest) account.DelegatedQuery("http://api.twitpic.com/2/upload.xml", TwitterClient.Format.Json); var req = new RestRequest {Path = "upload.xml"}; req.AddHeader("X-Auth-Service-Provider", temp.Headers["X-Auth-Service-Provider"]); req.AddHeader("X-Verify-Credentials-Authorization", temp.Headers["X-Verify-Credentials-Authorization"]); req.AddField("key", "4888be65e9f33ebf27585fda77a63c05"); req.AddFile("media", "upload.jpg", source, "image/jpeg"); // MessageBox.Show("Oh hai from twitpic4" + req.Path); client.BeginRequest(req, (i, j, k) => { MessageBox.Show("Oh hai from twitpic5"); try { XDocument doc = XDocument.Parse(j.Content); string s = doc.Element("image").Element("url").Value; callback(s); } catch { callback(string.Empty); } }); } public Credential Credentials { get; set; } public string Name { get { return "Twitpic"; } } public string Protocol { get; set; } public Action ShowDialog { get; set; } public Uri DarkIcon { get; set; } public Uri LightIcon { get; set; } public void Setup(Action onSuccess, Action onError) { } #endregion public void Upload(Stream source, Action callback) { BeginUpload(source, callback); } } }