public static XDocument UpdateProfileImage(ConsumerBase twitter, string accessToken, Stream image, string contentType) { var parts = new[] { MultipartPostPart.CreateFormFilePart("image", "twitterPhoto", contentType, image), }; HttpWebRequest request = twitter.PrepareAuthorizedRequest(UpdateProfileImageEndpoint, accessToken, parts); IncomingWebResponse response = twitter.Channel.WebRequestHandler.GetResponse(request); string responseString = response.GetResponseReader().ReadToEnd(); return XDocument.Parse(responseString); }
/// <summary> /// Initializes a new instance of the <see cref="OAuthAuthorization"/> class. /// </summary> /// <param name="consumer">The consumer.</param> protected OAuthAuthorization(ConsumerBase consumer) { if (consumer == null) { throw new ArgumentNullException("consumer"); } this.Consumer = consumer; }
public static XDocument UpdateStatus(ConsumerBase twitter, string accessToken, string message) { var data = new Dictionary<string, string>(); data.Add("status", message); HttpWebRequest request = twitter.PrepareAuthorizedRequest(UpdateStatusEndpoint, accessToken, data); var response = twitter.Channel.WebRequestHandler.GetResponse(request); return XDocument.Load(XmlReader.Create(response.GetResponseReader())); }
public static XDocument UpdateProfileBackgroundImage(ConsumerBase twitter, string accessToken, string image, bool tile) { var parts = new[] { MultipartPostPart.CreateFormFilePart("image", image, "image/" + Path.GetExtension(image).Substring(1).ToLowerInvariant()), MultipartPostPart.CreateFormPart("tile", tile.ToString().ToLowerInvariant()), }; HttpWebRequest request = twitter.PrepareAuthorizedRequest(UpdateProfileBackgroundImageEndpoint, accessToken, parts); request.ServicePoint.Expect100Continue = false; IncomingWebResponse response = twitter.Channel.WebRequestHandler.GetResponse(request); string responseString = response.GetResponseReader().ReadToEnd(); return XDocument.Parse(responseString); }
public static string GetProfile(ConsumerBase consumer, string accessToken) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var request = consumer.PrepareAuthorizedRequest(ProfileEndpoint, accessToken, new Dictionary<string, string>()); var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); return body; }
/// <summary> /// Gets the current oDesk user. /// </summary> /// <param name="consumer">The oDesk consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <returns>An XML document returned by oDesk.</returns> public static XDocument GetUser(ConsumerBase consumer, string accessToken) { if (consumer == null) throw new ArgumentNullException("consumer"); var request = consumer.PrepareAuthorizedRequest(GetUserEndpoint, accessToken); var response = consumer.Channel.WebRequestHandler.GetResponse(request); var body = response.GetResponseReader().ReadToEnd(); var result = XDocument.Parse(body); return result; }
public static string GetDigs(ConsumerBase consumer, string accessToken, string id) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "story_id", id } }; var request = consumer.PrepareAuthorizedRequest(GetDiggsEndpoint, accessToken, extraData); var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); return body; }
public static Stream GetDoc(ConsumerBase consumer, string accessToken, string docEndpoint, out long size) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var endpoint = new MessageReceivingEndpoint(docEndpoint, HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest); var extraData = new Dictionary<string, string>() /*{ {"GData-Version","3.0"} }*/; var request = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData); var response = consumer.Channel.WebRequestHandler.GetResponse(request); if (!string.IsNullOrEmpty(response.Headers[HttpResponseHeader.ContentLength])) { long.TryParse(response.Headers[HttpResponseHeader.ContentLength], out size); } else { size = 0; } return response.ResponseStream; }
public static XDocument GetDocList(ConsumerBase consumer, string accessToken, string nextEndpoint) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var endpoint = GetDocsEntriesEndpoint; if (!string.IsNullOrEmpty(nextEndpoint)) { endpoint = new MessageReceivingEndpoint(nextEndpoint, HttpDeliveryMethods.GetRequest); } var extraData = new Dictionary<string, string>() /*{ {"GData-Version","3.0"} }*/; //var request = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData); //var response = consumer.Channel.WebRequestHandler.GetResponse(request); //string body = response.GetResponseReader().ReadToEnd(); //XDocument result = XDocument.Parse(body); //return result; var request = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData); // Enable gzip compression. Google only compresses the response for recognized user agent headers. - Mike Lim request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); XDocument result = XDocument.Parse(body); return result; }
/// <summary> /// Gets the Gmail address book's contents. /// </summary> /// <param name="consumer">The Google consumer previously constructed using <see cref="CreateWebConsumer"/> or <see cref="CreateDesktopConsumer"/>.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <returns>An XML document returned by Google.</returns> public static XDocument GetContacts(ConsumerBase consumer, string accessToken) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var response = consumer.PrepareAuthorizedRequestAndSend(GetContactsEndpoint, accessToken); string body = response.GetResponseReader().ReadToEnd(); XDocument result = XDocument.Parse(body); return result; }
public static Stream GetDoc(ConsumerBase consumer, string accessToken, string docEndpoint) { long size; return GetDoc(consumer, accessToken, docEndpoint, out size); }
public YDResourceAPI(ConsumerBase consumer, string accessToken) : base(consumer, accessToken) { }
public YDBaseAPI(ConsumerBase consumer,string accessToken) { _consumer = consumer; _tokenManager = consumer.TokenManager; _accessToken = accessToken; }
/// <summary> /// Gets the Gmail address book's contents. /// </summary> /// <param name="consumer">The Google consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="maxResults">The maximum number of entries to return. If you want to receive all of the contacts, rather than only the default maximum, you can specify a very large number here.</param> /// <param name="startIndex">The 1-based index of the first result to be retrieved (for paging).</param> /// <returns>An XML document returned by Google.</returns> public static XDocument GetContacts(ConsumerBase consumer, string accessToken, int maxResults/* = 25*/, int startIndex/* = 1*/) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "start-index", startIndex.ToString(CultureInfo.InvariantCulture) }, { "max-results", maxResults.ToString(CultureInfo.InvariantCulture) }, }; var request = consumer.PrepareAuthorizedRequest(GetContactsEndpoint, accessToken, extraData); var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); XDocument result = XDocument.Parse(body); return result; }
/// <summary> /// Gets the Xing adress book's contents. /// </summary> /// <param name="consumer">The Xing consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="maxResults">The maximum number of entries to return. If you want to receive all of the contacts, rather than only the default maximum, you can specify a very large number here.</param> /// <param name="startIndex">The 1-based index of the first result to be retrieved (for paging).</param> /// <param name="field">user_fields of info on https://dev.xing.com/docs/get/users/:id </param> /// <returns>An dynamic Object returned by Xing.</returns> public static Object GetMyContacts(ConsumerBase consumer, string accessToken, string field, int maxResults/* = 25*/, int startIndex/* = 1*/) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "offset", startIndex.ToString(CultureInfo.InvariantCulture) }, { "limit", maxResults.ToString(CultureInfo.InvariantCulture) }, { "user_fields",field }, }; var request = consumer.PrepareAuthorizedRequest(GetContactsEndpoint, accessToken, extraData); //request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new DynamicJsonConverter() }); dynamic obj = serializer.Deserialize(body, typeof(object)); return obj; }
public static XDocument UpdateProfileImage(ConsumerBase twitter, string accessToken, string pathToImage) { string contentType = "image/" + Path.GetExtension(pathToImage).Substring(1).ToLowerInvariant(); return UpdateProfileImage(twitter, accessToken, File.OpenRead(pathToImage), contentType); }
public static string GetUsername(ConsumerBase twitter, string accessToken) { XDocument xml = VerifyCredentials(twitter, accessToken); XPathNavigator nav = xml.CreateNavigator(); return nav.SelectSingleNode("/user/screen_name").Value; }
/// <summary> /// Updates the authenticating user's status, also known as tweeting. /// </summary> /// <param name="twitter"></param> /// <param name="accessToken"></param> /// <param name="status">The text of your status update, typically up to 140 characters. URL encode as necessary. t.co link wrapping may effect character counts.</param> /// <param name="includeEntities">When set to either true, t or 1, each tweet will include a node called "entities,". This node offers a variety of metadata about the tweet in a discreet structure, including: user_mentions, urls, and hashtags. While entities are opt-in on timelines at present, they will be made a default component of output in the future. See Tweet Entities for more detail on entities. /// </param> /// <returns></returns> public static JObject UpdateStatus(ConsumerBase twitter, string accessToken, String status, bool includeEntities) { var parts = new[] { MultipartPostPart.CreateFormPart("status", status), MultipartPostPart.CreateFormPart("include_entities", includeEntities.ToString()), }; HttpWebRequest request = twitter.PrepareAuthorizedRequest(UpdateStatusEndpoint, accessToken, parts); IncomingWebResponse response = twitter.Channel.WebRequestHandler.GetResponse(request); using (var responseReader = response.GetResponseReader()) { var result = responseReader.ReadToEnd(); return JObject.Parse(result); } }
public static XDocument YQL(ConsumerBase consumer, string accessToken, string yql) { if (consumer == null) { throw new ArgumentNullException("consumer"); } yql = yql.Replace("'", "\""); string uri = "http://query.yahooapis.com/v1/yql?q=" + HttpUtility.UrlEncode(yql).Replace("+", "%20").Replace("*", "%2A").Replace("(", "%28").Replace(")", "%29"); MessageReceivingEndpoint endPoint = new MessageReceivingEndpoint(uri, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.GetRequest); var request = consumer.PrepareAuthorizedRequest(endPoint, accessToken); string header = request.Headers.GetValues(0)[0]; header = header.Replace("OAuth", "").Replace("\"", "").Replace(",", "&").Trim(); uri += "&" + header; HttpWebRequest req = (HttpWebRequest) WebRequest.Create(uri); req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5"; WebResponse resp = req.GetResponse(); Encoding enc = System.Text.Encoding.GetEncoding(1252); StreamReader loResponseStream = new StreamReader(resp.GetResponseStream(), enc); string body = loResponseStream.ReadToEnd(); return XDocument.Parse(body); }
/// <summary> /// Post a Status Messages. /// </summary> /// <param name="consumer">The Xing consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="message">The new status update. The maximum length is 420 characters.</param> /// <param name="user_id">ID of the user starting the conversation.</param> /// <returns>An dynamic Object returned by Xing.</returns> public static bool PostStatus(ConsumerBase consumer, string accessToken, string message, string user_id) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "message", message }, }; MessageReceivingEndpoint Endpoint = new MessageReceivingEndpoint("https://api.xing.com/v1/users/" + user_id + "/status_message", HttpDeliveryMethods.PostRequest); var request = consumer.PrepareAuthorizedRequest(Endpoint, accessToken, extraData); //request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); if (body.Contains("has been posted")) return true; else return false; }
/// <summary> /// Post a Conversation. /// </summary> /// <param name="consumer">The Xing consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="content">Message text. Max. size is 16384 UTF-8 characters.</param> /// <param name="recipient_ids">Comma-separated list of recipients. There must be at least one recipient. Sender cannot be included.</param> /// <param name="subject">Subject for conversation. Max. size is 32 UTF-8 characters</param> /// <param name="user_id">ID of the user starting the conversation.</param> /// <returns>An dynamic Object returned by Xing.</returns> public static Object PostConversation(ConsumerBase consumer, string accessToken, string content, string recipient_ids, string subject, string user_id) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "content", content }, { "recipient_ids", recipient_ids }, { "subject", subject }, }; MessageReceivingEndpoint Endpoint = new MessageReceivingEndpoint("https://api.xing.com/v1/users/" + user_id + "/conversations", HttpDeliveryMethods.PostRequest); var request = consumer.PrepareAuthorizedRequest(Endpoint, accessToken, extraData); //request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new DynamicJsonConverter() }); dynamic obj = serializer.Deserialize(body, typeof(object)); return obj; }
/// <summary> /// Gets a Xing user contents. /// </summary> /// <param name="consumer">The Xing consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="id">ID(s) of requested user(s). </param> /// <returns>An dynamic Object returned by Xing.</returns> public static Object GetUser(ConsumerBase consumer, string accessToken, string id) { if (consumer == null) { throw new ArgumentNullException("consumer"); } MessageReceivingEndpoint Endpoint = new MessageReceivingEndpoint("https://api.xing.com/v1/users/" + id, HttpDeliveryMethods.GetRequest); var request = consumer.PrepareAuthorizedRequest(Endpoint, accessToken); // Enable gzip compression. Google only compresses the response for recognized user agent headers. - Mike Lim //request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new DynamicJsonConverter() }); dynamic obj = serializer.Deserialize(body, typeof(object)); return obj.users[0]; }
public static XDocument GetUpdates(ConsumerBase twitter, string accessToken) { IncomingWebResponse response = twitter.PrepareAuthorizedRequestAndSend(GetFriendTimelineStatusEndpoint, accessToken); return XDocument.Load(XmlReader.Create(response.GetResponseReader())); }
public static string Follow(ConsumerBase consumer, string accessToken, string username) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "username", username } }; var request = consumer.PrepareAuthorizedRequest(FollowUserEndpoint, accessToken, extraData); var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); return body; }
public static XDocument VerifyCredentials(ConsumerBase twitter, string accessToken) { IncomingWebResponse response = twitter.PrepareAuthorizedRequestAndSend(VerifyCredentialsEndpoint, accessToken); return XDocument.Load(XmlReader.Create(response.GetResponseReader())); }
public static XDocument GetDocList(ConsumerBase consumer, string accessToken, string nextEndpoint) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var endpoint = GetDocsEntriesEndpoint; if (!string.IsNullOrEmpty(nextEndpoint)) { endpoint = new MessageReceivingEndpoint(nextEndpoint, HttpDeliveryMethods.GetRequest); } var extraData = new Dictionary<string, string>() /*{ {"GData-Version","3.0"} }*/; var request = consumer.PrepareAuthorizedRequest(endpoint, accessToken, extraData); var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); XDocument result = XDocument.Parse(body); return result; }
public GoogleDocumentProvider(AuthData authData) { _accessToken = authData.Token; _consumer = new WebConsumer(GoogleConsumer.ServiceDescription, ImportConfiguration.GoogleTokenManager); }
/// <summary> /// Gets the Gmail address book's contents. /// </summary> /// <param name="consumer">The Google consumer.</param> /// <param name="accessToken">The access token previously retrieved.</param> /// <param name="maxResults">The maximum number of entries to return. If you want to receive all of the contacts, rather than only the default maximum, you can specify a very large number here.</param> /// <param name="startIndex">The 1-based index of the first result to be retrieved (for paging).</param> /// <returns>An XML document returned by Google.</returns> public static XDocument GetContacts(ConsumerBase consumer, string accessToken, int maxResults/* = 25*/, int startIndex/* = 1*/) { if (consumer == null) { throw new ArgumentNullException("consumer"); } var extraData = new Dictionary<string, string>() { { "start-index", startIndex.ToString(CultureInfo.InvariantCulture) }, { "max-results", maxResults.ToString(CultureInfo.InvariantCulture) }, }; var request = consumer.PrepareAuthorizedRequest(GetContactsEndpoint, accessToken, extraData); // Enable gzip compression. Google only compresses the response for recognized user agent headers. - Mike Lim request.AutomaticDecompression = DecompressionMethods.GZip; request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; var response = consumer.Channel.WebRequestHandler.GetResponse(request); string body = response.GetResponseReader().ReadToEnd(); XDocument result = XDocument.Parse(body); return result; }
public static void PostBlogEntry(ConsumerBase consumer, string accessToken, string blogUrl, string title, XElement body) { string feedUrl; var getBlogHome = WebRequest.Create(blogUrl); using (var blogHomeResponse = getBlogHome.GetResponse()) { using (StreamReader sr = new StreamReader(blogHomeResponse.GetResponseStream())) { string homePageHtml = sr.ReadToEnd(); Match m = Regex.Match(homePageHtml, @"http://www.blogger.com/feeds/\d+/posts/default"); Debug.Assert(m.Success, "Posting operation failed."); feedUrl = m.Value; } } const string Atom = "http://www.w3.org/2005/Atom"; XElement entry = new XElement( XName.Get("entry", Atom), new XElement(XName.Get("title", Atom), new XAttribute("type", "text"), title), new XElement(XName.Get("content", Atom), new XAttribute("type", "xhtml"), body), new XElement(XName.Get("category", Atom), new XAttribute("scheme", "http://www.blogger.com/atom/ns#"), new XAttribute("term", "oauthdemo"))); MemoryStream ms = new MemoryStream(); XmlWriterSettings xws = new XmlWriterSettings() { Encoding = Encoding.UTF8, }; XmlWriter xw = XmlWriter.Create(ms, xws); entry.WriteTo(xw); xw.Flush(); WebRequest request = consumer.PrepareAuthorizedRequest(new MessageReceivingEndpoint(feedUrl, HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest), accessToken); request.ContentType = "application/atom+xml"; request.Method = "POST"; request.ContentLength = ms.Length; ms.Seek(0, SeekOrigin.Begin); using (Stream requestStream = request.GetRequestStream()) { ms.CopyTo(requestStream); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.Created) { // Success } else { // Error! } } }
public static string Tweet(ConsumerBase twitter, string accessToken, string status) { Dictionary<string, string> extraData = new Dictionary<string, string>(); extraData.Add("status", status); HttpWebRequest request = twitter.PrepareAuthorizedRequest(TweetEndpoint, accessToken, extraData); IncomingWebResponse response = twitter.Channel.WebRequestHandler.GetResponse(request); return response.GetResponseReader().ReadToEnd(); }