1
- #include " msg_controller.h"
2
-
3
1
#include < drogon/drogon.h>
4
2
#include < json/json.h>
5
-
6
3
#include " jwt_controller.h"
4
+ #include " msg_controller.h"
7
5
#include " mysql.h"
6
+
8
7
using namespace drogon ;
9
- void chat (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
10
- {
8
+
9
+ // send a message
10
+ void chat (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) {
11
11
auto body = req->getBody ();
12
12
Json::Value req_json, res_json;
13
13
Json::Reader reader;
14
14
std::string bodyStr (body);
15
- if (!reader.parse (bodyStr, req_json))
16
- {
15
+ if (!reader.parse (bodyStr, req_json)) {
17
16
callback (HttpResponse::newHttpResponse ());
18
17
return ;
19
18
}
20
19
Json::FastWriter writer;
21
- std::string authHeader = req->getHeader (" Authorization" );
22
- if (authHeader.substr (0 , 7 ) == " Bearer " )
23
- {
24
- std::string bearerToken = authHeader.substr (7 );
25
- // 在此处使用Bearer Token进行身份验证
26
- try
27
- {
28
- std::string sender = jwtDecrypt (bearerToken);
29
- std::string content = req_json[" content" ].asString ();
30
- std::string receiver = req_json[" receiver" ].asString ();
31
- std::cout << " Connect success: " << sender << std::endl;
32
- sql_addhistory (sender, receiver, content, " 0" );
33
- }
34
- catch (const std::exception &e)
35
- {
36
- std::cerr << e.what () << ' \n ' ;
37
- std::cout << " Wrong token" << std::endl;
38
- }
39
- }
40
- else
41
- {
42
- // 连接没有Authorization头部Bearer Token
43
- std::cout << " No Authorization" << std::endl;
44
- }
45
- std::string msg = req_json[" content" ].asString ();
46
- auto output = writer.write (res_json);
47
20
auto res = HttpResponse::newHttpResponse ();
48
21
res->addHeader (" Access-Control-Allow-Origin" , " *" );
49
- res->setBody (output);
22
+ if (jwtVerify (req)) {
23
+ std::string sender = jwtDecrypt (req->getHeader (" Authorization" ).substr (7 ));
24
+ std::string content = req_json[" content" ].asString ();
25
+ std::string receiver = req_json[" receiver" ].asString ();
26
+ sql_addhistory (sender, receiver, content, " 0" );
27
+ std::string msg = req_json[" content" ].asString ();
28
+ auto output = writer.write (res_json);
29
+ res->setBody (output);
30
+ } else {
31
+ res->setBody (" No Authorization" );
32
+ }
50
33
callback (res);
51
34
}
52
- void check ( const HttpRequestPtr &req, std::function< void ( const HttpResponsePtr &)> &&callback)
53
- {
35
+ // get message history
36
+ void check ( const HttpRequestPtr &req, std::function< void ( const HttpResponsePtr &)> &&callback) {
54
37
Json::Value res_json;
55
38
Json::Reader reader;
56
39
std::string me;
57
40
Json::FastWriter writer;
58
- std::string authHeader = req->getHeader (" Authorization" );
59
- if (authHeader.substr (0 , 7 ) == " Bearer " )
60
- {
61
- std::string bearerToken = authHeader.substr (7 );
62
- // 在此处使用Bearer Token进行身份验证
63
- try
64
- {
65
- me = jwtDecrypt (bearerToken);
66
- }
67
- catch (const std::exception &e)
68
- {
69
- std::cerr << e.what () << ' \n ' ;
70
- std::cout << " Wrong token" << std::endl;
71
- }
72
- }
73
- else
74
- {
75
- // 连接没有Authorization头部Bearer Token
76
- std::cout << " No Authorization" << std::endl;
77
- }
78
-
79
41
auto res = HttpResponse::newHttpResponse ();
80
42
res->addHeader (" Access-Control-Allow-Origin" , " *" );
81
- auto output = writer.write (sql_find_my_msg (me));
82
- res->setBody (output);
43
+ if (jwtVerify (req)) {
44
+ me = jwtDecrypt (req->getHeader (" Authorization" ).substr (7 ));
45
+ auto output = writer.write (sql_find_my_msg (me));
46
+ res->setBody (output);
47
+ } else {
48
+ res->setBody (" No Authorization" );
49
+ }
83
50
callback (res);
84
51
}
85
-
86
- void friend_operation (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
87
- {
88
- std::string authHeader = req->getHeader (" Authorization" );
89
- if (authHeader.substr (0 , 7 ) == " Bearer " )
90
- {
91
- std::string bearerToken = authHeader.substr (7 );
92
- // 在此处使用Bearer Token进行身份验证
93
- try
94
- {
95
- std::string sender = jwtDecrypt (bearerToken);
96
- std::string receiver = req->getParameter (" username" );
97
- std::string operation = req->getParameter (" operation" );
98
- if (operation==" add" )
52
+ // request new friend or cancel request
53
+ void friend_operation (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) {
54
+ auto res = HttpResponse::newHttpResponse ();
55
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
56
+ if (jwtVerify (req)) {
57
+ std::string sender = jwtDecrypt (req->getHeader (" Authorization" ).substr (7 ));
58
+ std::string receiver = req->getParameter (" username" );
59
+ std::string operation = req->getParameter (" operation" );
60
+ if (operation == " add" )
99
61
sql_addrequest (sender, receiver);
100
- else sql_delete_operation (sender,receiver);
101
- }
102
- catch (const std::exception &e)
103
- {
104
- std::cerr << e.what () << ' \n ' ;
105
- std::cout << " Wrong token" << std::endl;
106
- }
62
+ else
63
+ sql_delete_operation (sender, receiver);
64
+ res->setBody (" Success" );
65
+ } else {
66
+ res->setBody (" No Authorization" );
107
67
}
108
- auto res = HttpResponse::newHttpResponse ();
109
- res->setBody (" Success" );
110
68
callback (res);
111
69
}
112
- void request_processing (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
113
- {
114
- std::string authHeader = req->getHeader (" Authorization" );
115
- if (authHeader.substr (0 , 7 ) == " Bearer " )
116
- {
117
- std::string bearerToken = authHeader.substr (7 );
118
- // 在此处使用Bearer Token进行身份验证
119
- try
120
- {
121
- std::string receiver = jwtDecrypt (bearerToken);
122
- std::string sender = req->getParameter (" username" );
123
- std::string attitude = req->getParameter (" info" );
124
- sql_process_request (sender, receiver, attitude);
125
- }
126
- catch (const std::exception &e)
127
- {
128
- std::cerr << e.what () << ' \n ' ;
129
- std::cout << " Wrong token" << std::endl;
130
- }
131
- }
70
+ // handle new friend request
71
+ void request_processing (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) {
132
72
auto res = HttpResponse::newHttpResponse ();
133
- res->setBody (" Success" );
73
+ res->addHeader (" Access-Control-Allow-Origin" , " *" );
74
+ if (jwtVerify (req)) {
75
+ std::string receiver = jwtDecrypt (req->getHeader (" Authorization" ).substr (7 ));
76
+ std::string sender = req->getParameter (" username" );
77
+ std::string attitude = req->getParameter (" info" );
78
+ sql_process_request (sender, receiver, attitude);
79
+ res->setBody (" Success" );
80
+ } else {
81
+ res->setBody (" No Authorization" );
82
+ }
83
+ callback (res);
134
84
}
135
- void info ( const HttpRequestPtr &req, std::function< void ( const HttpResponsePtr &)> &&callback)
136
- {
85
+ // get chat info
86
+ void info ( const HttpRequestPtr &req, std::function< void ( const HttpResponsePtr &)> &&callback) {
137
87
auto body = req->getBody ();
138
88
Json::Value req_json, res_json;
139
89
Json::Reader reader;
140
90
std::string bodyStr (body);
141
- if (!reader.parse (bodyStr, req_json))
142
- {
91
+ if (!reader.parse (bodyStr, req_json)) {
143
92
callback (HttpResponse::newHttpResponse ());
144
93
return ;
145
94
}
146
95
std::string me, who_send_me;
147
96
Json::FastWriter writer;
148
- std::string authHeader = req->getHeader (" Authorization" );
149
- if (authHeader.substr (0 , 7 ) == " Bearer " )
150
- {
151
- std::string bearerToken = authHeader.substr (7 );
152
- // 在此处使用Bearer Token进行身份验证
153
- try
154
- {
155
- me = jwtDecrypt (bearerToken);
156
- }
157
- catch (const std::exception &e)
158
- {
159
- std::cerr << e.what () << ' \n ' ;
160
- std::cout << " Wrong token" << std::endl;
161
- }
162
- }
163
- else
164
- {
165
- // 连接没有Authorization头部Bearer Token
166
- std::cout << " No Authorization" << std::endl;
167
- }
168
-
169
97
auto res = HttpResponse::newHttpResponse ();
170
98
res->addHeader (" Access-Control-Allow-Origin" , " *" );
171
- if (req_json[ " person " ]. asString () == " " )
172
- {
173
- res-> setBody (writer. write ( get_chat_info (me, " " )));
174
- callback ( res);
175
- }
176
- else
177
- {
178
- who_send_me = req_json[ " person " ]. asString ();
179
- res-> setBody (writer. write ( get_chat_info (me, who_send_me)));
180
- callback ( res);
99
+ if (jwtVerify (req)) {
100
+ me = jwtDecrypt (req-> getHeader ( " Authorization " ). substr ( 7 ));
101
+ if (req_json[ " person " ]. asString () == " " ) {
102
+ res-> setBody (writer. write ( get_chat_info (me, " " )) );
103
+ } else {
104
+ who_send_me = req_json[ " person " ]. asString ();
105
+ res-> setBody (writer. write ( get_chat_info (me, who_send_me)));
106
+ }
107
+ } else {
108
+ res-> setBody ( " No Authorization " );
181
109
}
110
+ callback (res);
182
111
}
0 commit comments