about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client.cpp16
-rw-r--r--src/client.h2
-rw-r--r--src/tweet.cpp17
-rw-r--r--src/tweet.h4
-rw-r--r--src/user.cpp5
-rw-r--r--src/user.h1
6 files changed, 45 insertions, 0 deletions
diff --git a/src/client.cpp b/src/client.cpp index bae563f..617af62 100644 --- a/src/client.cpp +++ b/src/client.cpp
@@ -420,6 +420,22 @@ namespace twitter {
420 _user_stream.stop(); 420 _user_stream.stop();
421 } 421 }
422 422
423 std::string client::generateReplyPrefill(tweet _tweet) const
424 {
425 std::ostringstream output;
426 output << "@" << _tweet.getAuthor().getScreenName() << " ";
427
428 for (auto mention : _tweet.getMentions())
429 {
430 if ((mention.first != _tweet.getAuthor().getID()) && (mention.first != _current_user.getID()))
431 {
432 output << "@" << mention.second << " ";
433 }
434 }
435
436 return output.str();
437 }
438
423 bool client::performGet(std::string url, long& response_code, std::string& result) 439 bool client::performGet(std::string url, long& response_code, std::string& result)
424 { 440 {
425 std::ostringstream output; 441 std::ostringstream output;
diff --git a/src/client.h b/src/client.h index 750d603..901c7b5 100644 --- a/src/client.h +++ b/src/client.h
@@ -84,6 +84,8 @@ namespace twitter {
84 void startUserStream(); 84 void startUserStream();
85 void stopUserStream(); 85 void stopUserStream();
86 86
87 std::string generateReplyPrefill(tweet t) const;
88
87 private: 89 private:
88 friend class stream; 90 friend class stream;
89 91
diff --git a/src/tweet.cpp b/src/tweet.cpp index 5885b51..bf95bc0 100644 --- a/src/tweet.cpp +++ b/src/tweet.cpp
@@ -18,6 +18,18 @@ namespace twitter {
18 _text = _data.at("text"); 18 _text = _data.at("text");
19 _author = user(_data.at("user").dump()); 19 _author = user(_data.at("user").dump());
20 _retweeted = _data.at("retweeted"); 20 _retweeted = _data.at("retweeted");
21
22 if (_data.find("entities") != _data.end())
23 {
24 auto _entities = _data.at("entities");
25 if (_entities.find("user_mentions") != _entities.end())
26 {
27 for (auto _mention : _entities.at("user_mentions"))
28 {
29 _mentions.push_back(std::make_pair(_mention.at("id"), _mention.at("screen_name").get<std::string>()));
30 }
31 }
32 }
21 } 33 }
22 34
23 tweet_id tweet::getID() const 35 tweet_id tweet::getID() const
@@ -48,6 +60,11 @@ namespace twitter {
48 return _retweeted; 60 return _retweeted;
49 } 61 }
50 62
63 std::vector<std::pair<user_id, std::string>> tweet::getMentions() const
64 {
65 return _mentions;
66 }
67
51 tweet::operator bool() const 68 tweet::operator bool() const
52 { 69 {
53 return _valid; 70 return _valid;
diff --git a/src/tweet.h b/src/tweet.h index fba1ced..34a9cd7 100644 --- a/src/tweet.h +++ b/src/tweet.h
@@ -3,6 +3,8 @@
3 3
4#include <string> 4#include <string>
5#include "user.h" 5#include "user.h"
6#include <vector>
7#include <utility>
6 8
7namespace twitter { 9namespace twitter {
8 10
@@ -17,6 +19,7 @@ namespace twitter {
17 std::string getText() const; 19 std::string getText() const;
18 const user& getAuthor() const; 20 const user& getAuthor() const;
19 bool isRetweet() const; 21 bool isRetweet() const;
22 std::vector<std::pair<user_id, std::string>> getMentions() const;
20 23
21 operator bool() const; 24 operator bool() const;
22 25
@@ -26,6 +29,7 @@ namespace twitter {
26 std::string _text; 29 std::string _text;
27 user _author; 30 user _author;
28 bool _retweeted; 31 bool _retweeted;
32 std::vector<std::pair<user_id, std::string>> _mentions;
29 }; 33 };
30 34
31}; 35};
diff --git a/src/user.cpp b/src/user.cpp index 9352938..0fa1e39 100644 --- a/src/user.cpp +++ b/src/user.cpp
@@ -42,5 +42,10 @@ namespace twitter {
42 { 42 {
43 return _id == other._id; 43 return _id == other._id;
44 } 44 }
45
46 bool user::operator!=(const user& other) const
47 {
48 return _id != other._id;
49 }
45 50
46}; 51};
diff --git a/src/user.h b/src/user.h index 0af40d6..1d8be99 100644 --- a/src/user.h +++ b/src/user.h
@@ -18,6 +18,7 @@ namespace twitter {
18 18
19 operator bool() const; 19 operator bool() const;
20 bool operator==(const user& other) const; 20 bool operator==(const user& other) const;
21 bool operator!=(const user& other) const;
21 22
22 private: 23 private:
23 bool _valid = false; 24 bool _valid = false;