about summary refs log tree commit diff stats
path: root/src/notification.h
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2016-05-20 15:34:44 -0400
committerKelly Rauchenberger <fefferburbia@gmail.com>2016-05-20 15:34:44 -0400
commit0ccac89815ee92c69fefc148cfb272faf7309136 (patch)
tree228775a433018c8a5fd20f0ebb0f8446057b2112 /src/notification.h
parentf465dce27cf0f07039e29d8975ad98939f0df3a9 (diff)
downloadlibtwittercpp-0ccac89815ee92c69fefc148cfb272faf7309136.tar.gz
libtwittercpp-0ccac89815ee92c69fefc148cfb272faf7309136.tar.bz2
libtwittercpp-0ccac89815ee92c69fefc148cfb272faf7309136.zip
Started implementing user streams
You can now start a user stream and end it yourself. If it disconnects abnormally, it will reconnect with a backoff as described by Twitter. Some data structures have some fields parsed now; tweets have IDs, text, and authors. Users have IDs, screen names, and names. Notifications from the stream are parsed completely. The ability to follow and unfollow users has also been added, as well as the ability to get a list of friends and followers, and to reply to a tweet.
Diffstat (limited to 'src/notification.h')
-rw-r--r--src/notification.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/notification.h b/src/notification.h new file mode 100644 index 0000000..da83b0f --- /dev/null +++ b/src/notification.h
@@ -0,0 +1,145 @@
1#ifndef NOTIFICATION_H_69AEF4CC
2#define NOTIFICATION_H_69AEF4CC
3
4#include <string>
5#include <vector>
6#include <set>
7#include "tweet.h"
8#include "user.h"
9#include "list.h"
10#include "direct_message.h"
11
12namespace twitter {
13
14 enum class disconnect_code {
15 shutdown,
16 duplicate,
17 stall,
18 normal,
19 token_revoked,
20 admin_logout,
21 limit,
22 exception,
23 broker,
24 load,
25 unknown
26 };
27
28 class notification {
29 public:
30 enum class type {
31 // Tweet object
32 tweet,
33
34 // User object
35 update_user,
36 block,
37 unblock,
38 follow,
39 followed,
40 unfollow,
41
42 // User and tweet
43 favorite,
44 favorited,
45 unfavorite,
46 unfavorited,
47 quoted,
48
49 // List
50 list_created,
51 list_destroyed,
52 list_updated,
53
54 // User and list
55 list_add,
56 list_added,
57 list_remove,
58 list_removed,
59 list_subscribe,
60 list_subscribed,
61 list_unsubscribe,
62 list_unsubscribed,
63
64 // Warning
65 stall,
66 follow_limit,
67 unknown_warning,
68
69 // User ID and tweet ID
70 deletion,
71 scrub_location,
72
73 // Special
74 limit,
75 withhold_status,
76 withhold_user,
77 disconnect,
78 friends,
79 direct,
80
81 // Nothing
82 unknown,
83 invalid
84 };
85
86 type getType() const;
87
88 notification();
89 notification(std::string data, const user& current_user);
90 notification(const notification& other);
91 notification& operator=(const notification& other);
92 ~notification();
93
94 tweet getTweet() const;
95 user getUser() const;
96 list getList() const;
97 tweet_id getTweetID() const;
98 user_id getUserID() const;
99 std::vector<std::string> getCountries() const;
100 disconnect_code getDisconnectCode() const;
101 std::set<user_id> getFriends() const;
102 direct_message getDirectMessage() const;
103 int getLimit() const;
104 std::string getWarning() const;
105
106 operator bool() const;
107
108 private:
109 union {
110 tweet _tweet;
111 user _user;
112 list _list;
113 struct {
114 user _user;
115 tweet _tweet;
116 } _user_and_tweet;
117 struct {
118 user _user;
119 list _list;
120 } _user_and_list;
121 std::string _warning;
122 struct {
123 user_id _user_id;
124 tweet_id _tweet_id;
125 } _user_id_and_tweet_id;
126 int _limit;
127 struct {
128 user_id _user_id;
129 tweet_id _tweet_id;
130 std::vector<std::string> _countries;
131 } _withhold_status;
132 struct {
133 user_id _user_id;
134 std::vector<std::string> _countries;
135 } _withhold_user;
136 disconnect_code _disconnect;
137 std::set<user_id> _friends;
138 direct_message _direct_message;
139 };
140 type _type;
141 };
142
143};
144
145#endif /* end of include guard: NOTIFICATION_H_69AEF4CC */