diff --git a/src/cocoatweet/api/api.cc b/src/cocoatweet/api/api.cc index 06be17e..04ca82d 100644 --- a/src/cocoatweet/api/api.cc +++ b/src/cocoatweet/api/api.cc @@ -9,7 +9,7 @@ API::API(CocoaTweet::OAuth::Key _key) { directMessage_ = DirectMessages::DirectMessage(oauth_); } -const std::string& API::generateBearerToken() const{ +const std::string& API::generateBearerToken() const { return oauth_->generateBearerToken(); } diff --git a/src/cocoatweet/api/interface/httpGet.cc b/src/cocoatweet/api/interface/httpGet.cc index fdd4f96..663fd41 100644 --- a/src/cocoatweet/api/interface/httpGet.cc +++ b/src/cocoatweet/api/interface/httpGet.cc @@ -26,7 +26,7 @@ void HttpGet::process(std::weak_ptr _oauth, auto url = url_; // エンドポイントへのパラメータにOAuthパラメータを付加して署名作成 - auto oauth = _oauth.lock(); + auto oauth = _oauth.lock(); // auto oauthParam = oauth->oauthParam(); // auto sigingParam = oauthParam; // if (contentType_ == "application/x-www-form-urlencoded") { @@ -40,7 +40,6 @@ void HttpGet::process(std::weak_ptr _oauth, // // 作成した署名をエンドポイントへのパラメータ及びOAuthパラメータに登録 // oauthParam.merge(signature); - // // ヘッダの構築 // std::string oauthHeader = "authorization: OAuth "; // { @@ -53,7 +52,7 @@ void HttpGet::process(std::weak_ptr _oauth, auto oauthHeader = std::string(); if (contentType_ == "application/x-www-form-urlencoded") { oauthHeader = oauth->calculateAuthHeader(bodyParam_, "GET", url_); - }else{ + } else { oauthHeader = oauth->calculateAuthHeader({}, "GET", url_); } @@ -105,7 +104,7 @@ void HttpGet::process(std::weak_ptr _oauth, exit(1); } -std::cout << rcv << std::endl; + std::cout << rcv << std::endl; if ((responseCode / 100) == 4) { auto j = nlohmann::json::parse(rcv); auto error = j["errors"][0]["code"]; @@ -118,17 +117,15 @@ std::cout << rcv << std::endl; throw CocoaTweet::Exception::TweetNotFoundException(message.get().c_str()); } else if (error.get() == 32) { throw CocoaTweet::Exception::AuthenticateException(message.get().c_str()); - }else if(error.get() == 89){ + } else if (error.get() == 89) { throw CocoaTweet::Exception::TokenInvalidException(message.get().c_str()); - }else if (error.get() == 187) { + } else if (error.get() == 187) { throw CocoaTweet::Exception::TweetDuplicateException(message.get().c_str()); } else if (error.get() == 88 || error.get() == 185) { throw CocoaTweet::Exception::RateLimitException(message.get().c_str()); } else if (error.get() == 186) { throw CocoaTweet::Exception::TweetTooLongException(message.get().c_str()); - } - else{ - + } else { } } diff --git a/src/cocoatweet/api/interface/httpPost.cc b/src/cocoatweet/api/interface/httpPost.cc index 409a5a7..10d4215 100644 --- a/src/cocoatweet/api/interface/httpPost.cc +++ b/src/cocoatweet/api/interface/httpPost.cc @@ -126,7 +126,7 @@ void HttpPost::process(std::weak_ptr _oauth, throw CocoaTweet::Exception::TweetNotFoundException(message.get().c_str()); } else if (error.get() == 32) { throw CocoaTweet::Exception::AuthenticateException(message.get().c_str()); - }else if(error.get() == 89){ + } else if (error.get() == 89) { throw CocoaTweet::Exception::TokenInvalidException(message.get().c_str()); } else if (error.get() == 187) { throw CocoaTweet::Exception::TweetDuplicateException(message.get().c_str()); diff --git a/src/cocoatweet/api/model/tweet.cc b/src/cocoatweet/api/model/tweet.cc index 20dab8b..26988ac 100644 --- a/src/cocoatweet/api/model/tweet.cc +++ b/src/cocoatweet/api/model/tweet.cc @@ -3,7 +3,7 @@ namespace CocoaTweet::API::Model { Tweet Tweet::parse(const std::string& _json) { - auto j = nlohmann::json::parse(_json); + auto j = nlohmann::json::parse(_json); Tweet tweet; tweet.id(j["id_str"]); @@ -11,7 +11,7 @@ Tweet Tweet::parse(const std::string& _json) { tweet.text(j["text"]); tweet.source(j["source"]); - tweet.user(CocoaTweet::API::Model::User(j["user"].dump())); + tweet.user(CocoaTweet::API::Model::User(j["user"].dump())); return tweet; } diff --git a/src/cocoatweet/api/model/user.cc b/src/cocoatweet/api/model/user.cc index b187069..2f35f6c 100644 --- a/src/cocoatweet/api/model/user.cc +++ b/src/cocoatweet/api/model/user.cc @@ -10,26 +10,24 @@ CocoaTweet::API::Model::User User::parse(const std::string& _json) { return user; } -void User::id(const std::string& _id){ - id_ = _id; +void User::id(const std::string& _id) { + id_ = _id; } -void User::name(const std::string& _name){ - name_ = _name; +void User::name(const std::string& _name) { + name_ = _name; } -void User::screenName(const std::string& _screen){ - screenName_ = _screen; +void User::screenName(const std::string& _screen) { + screenName_ = _screen; } -void User::location(const std::string& _location){ - location_ = _location; +void User::location(const std::string& _location) { + location_ = _location; } -const std::string& User::id() const{ - return id_; +const std::string& User::id() const { + return id_; } - - } // namespace CocoaTweet::API::Model diff --git a/src/cocoatweet/api/model/user.h b/src/cocoatweet/api/model/user.h index c7b11b8..bac9a01 100644 --- a/src/cocoatweet/api/model/user.h +++ b/src/cocoatweet/api/model/user.h @@ -25,36 +25,35 @@ public: void id(const std::string& _id); void name(const std::string& _name); - void screenName(const std::string& _screen); - void location(const std::string& _location); - void url(const std::string& _url); - void description(const std::string& _description); - void protectedUser(const bool _protected); - void follower(const long _follower); - void follow(const long _follow); - void listed(const long _listed); - void favorite(const long _favorite); - void tweet(const long _tweet); - void createdAt(const std::string& _created); - void bannerUrl(const std::string& _banner); - void iconUrl(const std::string& _icon); - + void screenName(const std::string& _screen); + void location(const std::string& _location); + void url(const std::string& _url); + void description(const std::string& _description); + void protectedUser(const bool _protected); + void follower(const long _follower); + void follow(const long _follow); + void listed(const long _listed); + void favorite(const long _favorite); + void tweet(const long _tweet); + void createdAt(const std::string& _created); + void bannerUrl(const std::string& _banner); + void iconUrl(const std::string& _icon); const std::string& id() const; - const std::string& name() const; - const std::string& screenName() const; - const std::string& location() const; - const std::string& url() const; - const std::string& description() const; - bool protectedUser() const; - long follower() const; - long follow() const; - long listed() const; - long favorite() const; - long tweet() const; - const std::string& created() const; - const std::string& banner() const; - const std::string& icon() const; + const std::string& name() const; + const std::string& screenName() const; + const std::string& location() const; + const std::string& url() const; + const std::string& description() const; + bool protectedUser() const; + long follower() const; + long follow() const; + long listed() const; + long favorite() const; + long tweet() const; + const std::string& created() const; + const std::string& banner() const; + const std::string& icon() const; private: std::string id_; @@ -73,6 +72,6 @@ private: std::string bannerUrl_; std::string iconUrl_; }; -} +} // namespace CocoaTweet::API::Model #endif diff --git a/src/cocoatweet/oauth/key.cc b/src/cocoatweet/oauth/key.cc index ffbfc1a..6230935 100644 --- a/src/cocoatweet/oauth/key.cc +++ b/src/cocoatweet/oauth/key.cc @@ -4,7 +4,6 @@ #include #include - namespace CocoaTweet::OAuth { Key Key::fromJsonFile(const std::string _jsonFile) { std::ifstream ifs(_jsonFile); @@ -12,25 +11,22 @@ Key Key::fromJsonFile(const std::string _jsonFile) { auto j = nlohmann::json::parse(str); Key key; - if(j.contains("consumer_key")){ + if (j.contains("consumer_key")) { key.consumerKey(j["consumer_key"].get()); } - - if(j.contains("consumer_secret")){ + if (j.contains("consumer_secret")) { key.consumerSecret(j["consumer_secret"].get()); } - - if(j.contains("access_token")){ + if (j.contains("access_token")) { key.accessToken(j["access_token"].get()); } - - if(j.contains("access_token_secret")){ + if (j.contains("access_token_secret")) { key.accessTokenSecret(j["access_token_secret"].get()); } -return key; + return key; } } // namespace CocoaTweet::OAuth diff --git a/src/cocoatweet/oauth/key.h b/src/cocoatweet/oauth/key.h index 0c5cbd8..8a39755 100644 --- a/src/cocoatweet/oauth/key.h +++ b/src/cocoatweet/oauth/key.h @@ -20,25 +20,26 @@ public: consumerSecret_(_consumerSecret), accessToken_(_accessToken), accessTokenSecret_(_accessTokenSecret) {} - Key(const std::string& _consumerKey, const std::string& _consumerSecret): consumerKey_(_consumerKey), consumerSecret_(_consumerSecret){} + Key(const std::string& _consumerKey, const std::string& _consumerSecret) + : consumerKey_(_consumerKey), consumerSecret_(_consumerSecret) {} - void consumerKey(const std::string& _consumerKey){ + void consumerKey(const std::string& _consumerKey) { consumerKey_ = _consumerKey; } - void consumerSecret(const std::string& _consumerSecret){ + void consumerSecret(const std::string& _consumerSecret) { consumerSecret_ = _consumerSecret; } - void accessToken(const std::string& _accessToken){ + void accessToken(const std::string& _accessToken) { accessToken_ = _accessToken; } - void accessTokenSecret(const std::string& _accessTokenSecret){ + void accessTokenSecret(const std::string& _accessTokenSecret) { accessTokenSecret_ = _accessTokenSecret; } - void bearerToken(const std::string& _bearer){ + void bearerToken(const std::string& _bearer) { bearerToken_ = _bearer; } const std::string& consumerKey() const { @@ -54,7 +55,7 @@ public: return accessTokenSecret_; } - const std::string& bearerToken() const{ + const std::string& bearerToken() const { return bearerToken_; } diff --git a/src/cocoatweet/oauth/oauth.cc b/src/cocoatweet/oauth/oauth.cc index 070af6b..1b8b7ae 100644 --- a/src/cocoatweet/oauth/oauth.cc +++ b/src/cocoatweet/oauth/oauth.cc @@ -23,7 +23,7 @@ extern "C" { #endif namespace CocoaTweet::OAuth { -OAuth1::OAuth1(): authType_(AuthType::OAuth) {} +OAuth1::OAuth1() : authType_(AuthType::OAuth) {} OAuth1::OAuth1(const Key _key) : key_(_key), authType_(AuthType::OAuth) {} @@ -46,12 +46,14 @@ std::map OAuth1::signature( return ret; } -const std::string OAuth1::calculateAuthHeader(std::map _bodyParam, const std::string& _method, const std::string& _url){ - if(authType_ == AuthType::Bearer){ +const std::string OAuth1::calculateAuthHeader(std::map _bodyParam, + const std::string& _method, + const std::string& _url) { + if (authType_ == AuthType::Bearer) { return "Authorization: Bearer " + key_.bearerToken(); } - auto authParam = oauthParam(); + auto authParam = oauthParam(); auto sigingParam = authParam; if (!_bodyParam.empty()) { for (const auto [k, v] : _bodyParam) { @@ -62,7 +64,7 @@ const std::string OAuth1::calculateAuthHeader(std::map auto sign = signature(sigingParam, _method, _url); authParam.merge(sign); - // ヘッダの構築 + // ヘッダの構築 std::string oauthHeader = "authorization: OAuth "; { std::vector tmp; @@ -75,14 +77,13 @@ const std::string OAuth1::calculateAuthHeader(std::map return oauthHeader; } - - -const std::string& OAuth1::generateBearerToken(){ - auto signature = key_.consumerKey() + ":" + key_.consumerSecret(); +const std::string& OAuth1::generateBearerToken() { + auto signature = key_.consumerKey() + ":" + key_.consumerSecret(); auto k64Signature = base64(signature); - auto authHeader = std::string("Authorization: Basic ") + k64Signature; - auto contentType = std::string("Content-Type: application/x-www-form-urlencoded;charset=UTF-8"); - auto url = std::string("https://api.twitter.com/oauth2/token"); + auto authHeader = std::string("Authorization: Basic ") + k64Signature; + auto contentType = + std::string("Content-Type: application/x-www-form-urlencoded;charset=UTF-8"); + auto url = std::string("https://api.twitter.com/oauth2/token"); auto requestBody = std::string("grant_type=client_credentials"); // do post @@ -118,8 +119,7 @@ const std::string& OAuth1::generateBearerToken(){ exit(1); } - - auto j = nlohmann::json::parse(rcv); + auto j = nlohmann::json::parse(rcv); if ((responseCode / 100) == 4) { auto error = j["errors"][0]["code"]; auto message = j["errors"][0]["message"]; @@ -128,14 +128,14 @@ const std::string& OAuth1::generateBearerToken(){ throw new CocoaTweet::Exception::Exception(j["error"]); } if (error.get() == 44) { - throw CocoaTweet::Exception::InvalidParameterException(message.get().c_str()); + throw CocoaTweet::Exception::InvalidParameterException( + message.get().c_str()); } } key_.bearerToken(j["access_token"]); authType_ = AuthType::Bearer; return key_.bearerToken(); - } const std::string OAuth1::nonce() const { diff --git a/src/cocoatweet/oauth/oauth.h b/src/cocoatweet/oauth/oauth.h index 347dfb9..ccd2cfe 100644 --- a/src/cocoatweet/oauth/oauth.h +++ b/src/cocoatweet/oauth/oauth.h @@ -9,21 +9,17 @@ namespace CocoaTweet::OAuth { class OAuth1 { public: - - enum AuthType{ - OAuth, - Bearer - }; + enum AuthType { OAuth, Bearer }; OAuth1(); OAuth1(const Key _key); std::map signature(const std::map& _param, const std::string& _method, const std::string& _url); - - const std::string& generateBearerToken(); - const std::string calculateAuthHeader(std::map _bodyParam, const std::string& _method, const std::string& _url); + const std::string& generateBearerToken(); + const std::string calculateAuthHeader(std::map _bodyParam, + const std::string& _method, const std::string& _url); const std::string nonce() const; const std::string timestamp() const; @@ -44,7 +40,6 @@ private: _stream->append(_ptr, realsize); return realsize; } - }; } // namespace CocoaTweet::OAuth diff --git a/src/main.cc b/src/main.cc index 53ccdf7..50c1b6d 100644 --- a/src/main.cc +++ b/src/main.cc @@ -11,7 +11,6 @@ #include #include - bool starts_with(const std::string& s, const std::string& prefix) { auto size = prefix.size(); if (s.size() < size) return false; @@ -32,7 +31,7 @@ auto main() -> int { // also can generate Key object from JSON file CocoaTweet::OAuth::Key key = CocoaTweet::OAuth::Key::fromJsonFile("api_key.json"); // auto oauth = CocoaTweet::OAuth::OAuth1(key); - // oauth.GenerateBearerToken(); + // oauth.GenerateBearerToken(); // std::cout << "sdfgwregfresgfresdwefgweragregreagretgreawgrt#$QTWREATGREWTGF$ERTF"; // Generate API Entry object using Key object