From cb2d284e541af8f750352e000c2d323a750ab403 Mon Sep 17 00:00:00 2001 From: keita Date: Thu, 11 Mar 2021 20:33:08 +0900 Subject: [PATCH] =?UTF-8?q?statuses/update=E3=81=AE=E3=82=A8=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=83=9D=E3=82=A4=E3=83=B3=E3=83=88=E3=81=AE=E3=82=AA?= =?UTF-8?q?=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E6=9B=B8=E3=81=84?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++++- src/cocoatweet/api/status/status.cc | 43 +++++++++++++++++++++++++++++ src/cocoatweet/api/status/status.h | 17 +++++++++++- src/cocoatweet/api/status/update.cc | 37 +++++++++++++++++++++++++ src/cocoatweet/api/status/update.h | 21 +++++++++++++- 5 files changed, 124 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0fbfb1d..9215baa 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ you can use these endpoint - statuses/destroy/:id - favorites/create - favorites/destroy - +- media/upload(support: jpg, jpeg, png, gif, mp4) # Dependency - libcurl(openssl version) - libssl @@ -114,6 +114,11 @@ CocoaTweet::API::API api(key); // Post a tweet api.status().Update("Hello, World!!\nTweet from Cocoa Twitter Library"); +// Upload a media +// auto media1 = api.media().Upload("path/to/file/image.jpeg"); +// auto media2 = api.media().Upload("path/to/file/image2.png"); +// api.status().Update("Upload media from Cocoa Twitter Library", {media1.id(), media2.id()}); + // Delete a tweet api.status().Destroy("tweet id"); @@ -123,3 +128,5 @@ api.favorite().Create("tweet id"); // un Fav. a tweet api.favorite().Destroy("tweet id"); ``` + +donate by BitCoin : bc1qhpm8tmq72scqpl2ccemcf0ktfjg4rsu73e99tz \ No newline at end of file diff --git a/src/cocoatweet/api/status/status.cc b/src/cocoatweet/api/status/status.cc index 4f066a2..a5c1ad8 100644 --- a/src/cocoatweet/api/status/status.cc +++ b/src/cocoatweet/api/status/status.cc @@ -13,6 +13,49 @@ CocoaTweet::API::Model::Tweet Status::Update(const std::string& _status) const { return update.process(oauth_); } +CocoaTweet::API::Model::Tweet Status::Update(const std::string& _status, const Options _options) const{ + CocoaTweet::API::Statuses::Update update; + update.status(_status); + + if(_options.replyToStatusId != defaultOpt_.replyToStatusId){ + update.replyToStatusId(_options.replyToStatusId); + } + + if(_options.autoPopulateReplyMetaData != defaultOpt_.autoPopulateReplyMetaData){ + update.autoPopulateReplyMetaData(_options.autoPopulateReplyMetaData); + } + + if(_options.excludeReplyUserId != defaultOpt_.excludeReplyUserId){ + update.excludeReplyUserId(_options.excludeReplyUserId); + } + + if(_options.attachmentUrl != defaultOpt_.attachmentUrl){ + update.attachmentUrl(_options.attachmentUrl); + } + + if(_options.coord != defaultOpt_.coord){ + update.coord(_options.coord); + } + + if(_options.displayCoord != defaultOpt_.displayCoord){ + update.displayCoord(_options.displayCoord); + } + + if(_options.trimUser != defaultOpt_.trimUser){ + update.trimUser(_options.trimUser); + } + + if(_options.enableDMCommands != defaultOpt_.enableDMCommands){ + update.enableDMCommands(_options.enableDMCommands); + } + + if(_options.failDMCommands != defaultOpt_.failDMCommands){ + update.failDMCommands(_options.failDMCommands); + } + + return update.process(oauth_); +} + CocoaTweet::API::Model::Tweet Status::Update(const std::string& _status, std::vector _mediaId) const { CocoaTweet::API::Statuses::Update update; diff --git a/src/cocoatweet/api/status/status.h b/src/cocoatweet/api/status/status.h index ce0f976..f9a62e4 100644 --- a/src/cocoatweet/api/status/status.h +++ b/src/cocoatweet/api/status/status.h @@ -5,20 +5,35 @@ #include "cocoatweet/oauth/oauth.h" #include #include - +#include namespace CocoaTweet::API::Statuses { class Status : public groupInterface { public: + +struct Options{ + std::string replyToStatusId; + bool autoPopulateReplyMetaData = false; + std::vector excludeReplyUserId; + std::string attachmentUrl; + std::pair coord; + bool displayCoord = false; + bool trimUser = false; + bool enableDMCommands = false; + bool failDMCommands = true; +}; Status() = default; Status(std::shared_ptr _oauth); CocoaTweet::API::Model::Tweet Update(const std::string& _status) const; + CocoaTweet::API::Model::Tweet Update(const std::string& _status, const Options _options) const; + CocoaTweet::API::Model::Tweet Update(const std::string& _status, std::vector _mediaId) const; CocoaTweet::API::Model::Tweet Destroy(const std::string& _id) const; private: +Options defaultOpt_; }; } // namespace CocoaTweet::API::Statuses diff --git a/src/cocoatweet/api/status/update.cc b/src/cocoatweet/api/status/update.cc index df13b6d..3f2a171 100644 --- a/src/cocoatweet/api/status/update.cc +++ b/src/cocoatweet/api/status/update.cc @@ -16,6 +16,43 @@ void Update::mediaId(const std::vector _media) { bodyParam_.insert_or_assign("media_ids", CocoaTweet::Util::join(_media, ",")); } +void Update::replyToStatusId(const std::string _reply){ + bodyParam_.insert_or_assign("in_reply_to_status_id", _reply); +} + +void Update::autoPopulateReplyMetaData(bool _meta){ + bodyParam_.insert_or_assign("auto_populate_reply_metadata", std::to_string(_meta)); +} + +void Update::excludeReplyUserId(const std::vector _ex){ + bodyParam_.insert_or_assign("exclude_reply_user_ids", CocoaTweet::Util::join(_ex, ",")); +} + +void Update::attachmentUrl(const std::string _url){ + bodyParam_.insert_or_assign("attachment_url", _url); +} + +void Update::coord(std::pair _coord){ + bodyParam_.insert_or_assign("lat", _coord.first); + bodyParam_.insert_or_assign("long", _coord.second); +} + +void Update::displayCoord(bool _disp){ + bodyParam_.insert_or_assign("display_coordinates", std::to_string(_disp)); +} + +void Update::trimUser(bool _trim){ + bodyParam_.insert_or_assign("trim_user", std::to_string(_trim)); +} + +void Update::enableDMCommands(bool _enable){ + bodyParam_.insert_or_assign("enable_dmcommands", std::to_string(_enable)); +} + +void Update::failDMCommands(bool _fail){ + bodyParam_.insert_or_assign("fail_dmcommands", std::to_string(_fail)); +} + CocoaTweet::API::Model::Tweet Update::process(std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, diff --git a/src/cocoatweet/api/status/update.h b/src/cocoatweet/api/status/update.h index 640e1bb..8ee384e 100644 --- a/src/cocoatweet/api/status/update.h +++ b/src/cocoatweet/api/status/update.h @@ -1,10 +1,11 @@ #ifndef COCOATWEET_API_STATUS_UPDATE_H_ #define COCOATWEET_API_STATUS_UPDATE_H_ -#include #include #include #include +#include +#include namespace CocoaTweet::API::Statuses { class Update : public CocoaTweet::API::Interface::HttpPost { @@ -14,6 +15,24 @@ public: void mediaId(const std::vector _media); + void replyToStatusId(const std::string _reply); + + void autoPopulateReplyMetaData(bool _meta); + + void excludeReplyUserId(const std::vector _ex); + + void attachmentUrl(const std::string _url); + +void coord(std::pair _coord); + +void displayCoord(bool _disp); + +void trimUser(bool _trim); + +void enableDMCommands(bool _enable); + +void failDMCommands(bool _fail); + CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); private: