/* Copyright © 2012-18 Miranda NG team Copyright © 2009 Jim Porter This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma once using std::string; using std::wstring; using std::map; using std::vector; #include "http.h" #define wstring wstring typedef unsigned long long twitter_id; typedef std::map OAuthParameters; struct twitter_status { std::string text; twitter_id id; time_t time; }; struct twitter_user { std::string username; std::string real_name; std::string profile_image_url; twitter_status status; }; time_t parse_time(const std::string &); class bad_response : public std::exception { public: virtual const char * what() const { return "bad http response"; } }; class twitter { public: typedef std::vector status_list; typedef std::map status_map; twitter(); bool twitter::set_credentials(const std::string&, const std::wstring&, const std::wstring&, const std::wstring&, const std::wstring&, const std::wstring &, bool); http::response twitter::request_token(); http::response twitter::request_access_tokens(); void set_base_url(const std::string &base_url); const std::string & get_username() const; const std::string & get_base_url() const; bool get_info(const std::string &name,twitter_user *); bool get_info_by_email(const std::string &email,twitter_user *); std::vector get_friends(); //js::array buildFriendList(); twitter_user add_friend(const std::string &name); void remove_friend(const std::string &name); void set_status(const std::string &text); std::vector get_statuses(int count=20,twitter_id id=0); void send_direct(const std::string &name,const std::string &text); std::vector get_direct(twitter_id id=0); std::string urlencode(const std::string &c); std::wstring UrlEncode( const std::wstring& url ); std::string char2hex( char dec ); protected: virtual http::response slurp(const std::string &,http::method, OAuthParameters postParams = OAuthParameters()) = 0; std::string username_; std::string password_; std::string base_url_; std::wstring consumerKey_; std::wstring consumerSecret_; std::wstring oauthAccessToken_; std::wstring oauthAccessTokenSecret_; std::wstring pin_; };