Skip to content

Commit 6dfdf23

Browse files
committed
upgrade interceptors and stuff..
1 parent 03435b0 commit 6dfdf23

File tree

10 files changed

+74
-17
lines changed

10 files changed

+74
-17
lines changed

example/main.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ int main(int argc, char **argv) {
66
connection.port = 80;
77

88
mochios::Client client(connection);
9-
client.interceptors.request.push_back([](mochios::message::Request &request) {
9+
client.interceptors.request.use([](mochios::message::Request &request) {
1010
logger::info("Intercepting request!");
1111
request.print();
1212
});
@@ -16,10 +16,9 @@ int main(int argc, char **argv) {
1616
response = client.get(healthRequest);
1717
logger::success(response.body);
1818

19-
json::parser parser;
2019
mochios::message::Request request("/about");
2120
response = client.get(request);
22-
logger::success(parser.loads(response.body).dumps(2));
21+
logger::success(response.body.dumps(2));
2322

2423
return EXIT_SUCCESS;
2524
}

include/mochios/client/client.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
#include <mochios/client/options.h>
1010
#include <mochios/interceptors/interceptor.h>
11-
#include <mochios/interceptors/user_agent.h>
11+
#include <mochios/interceptors/request/user_agent.h>
12+
#include <mochios/interceptors/response/json.h>
1213

1314
namespace mochios {
1415

include/mochios/interceptors/interceptor.h

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,31 @@
77

88
namespace mochios {
99

10+
class Client;
11+
1012
namespace interceptor {
1113

14+
template <typename T> class Manager {
15+
private:
16+
std::vector<std::function<void(T &)>> interceptors;
17+
18+
public:
19+
Manager() { return; }
20+
~Manager() {
21+
this->interceptors.clear();
22+
return;
23+
}
24+
25+
void use(std::function<void(T &)> interceptor) {
26+
interceptors.push_back(interceptor);
27+
}
28+
29+
friend class mochios::Client;
30+
};
31+
1232
typedef struct {
13-
std::vector<std::function<void(mochios::message::Request &)>> request;
14-
std::vector<std::function<void(mochios::message::Response &)>> response;
33+
mochios::interceptor::Manager<mochios::message::Request> request;
34+
mochios::interceptor::Manager<mochios::message::Response> response;
1535
} Interceptors;
1636

1737
} // namespace interceptor

include/mochios/interceptors/user_agent.h renamed to include/mochios/interceptors/request/user_agent.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ namespace mochios {
77

88
namespace interceptor {
99

10+
namespace request {
11+
1012
void userAgent(mochios::message::Request &request);
1113

14+
} // namespace request
15+
1216
} // namespace interceptor
1317

1418
} // namespace mochios
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include <json/parse.h>
4+
5+
#include <mochios/message/response.h>
6+
7+
namespace mochios {
8+
9+
namespace interceptor {
10+
11+
namespace response {
12+
13+
void json(mochios::message::Response &response);
14+
15+
} // namespace response
16+
17+
} // namespace interceptor
18+
19+
} // namespace mochios

src/client/client.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ mochios::Client::Client(const mochios::client::Connection &connection)
1818
this->connect();
1919
close(this->socket);
2020

21-
this->interceptors.request.push_back(mochios::interceptor::userAgent);
21+
this->interceptors.request.use(mochios::interceptor::request::userAgent);
22+
this->interceptors.response.use(mochios::interceptor::response::json);
2223
return;
2324
}
2425

@@ -97,14 +98,14 @@ mochios::Client::sendHelper(mochios::message::Request &request) {
9798
request.set("Accept", "*/*");
9899
request.set("Connection", "close");
99100
for (const std::function<void(mochios::message::Request &)>
100-
&requestIntercptor : this->interceptors.request) {
101-
requestIntercptor(request);
101+
&requestInterceptor : this->interceptors.request.interceptors) {
102+
requestInterceptor(request);
102103
}
103104
this->connect();
104105
mochios::message::Response res =
105106
mochios::helpers::send(request, this->socket);
106107
for (const std::function<void(mochios::message::Response &)>
107-
&responseInterceptor : this->interceptors.response) {
108+
&responseInterceptor : this->interceptors.response.interceptors) {
108109
responseInterceptor(res);
109110
}
110111
return res;

src/helpers/client.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ void mochios::helpers::buildResponse(mochios::message::Response &res,
5656
while (std::getline(response, line) && line != "\r") {
5757
body << line;
5858
}
59+
5960
res.body = body.str();
6061
return;
6162
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#include <mochios/interceptors/request/user_agent.h>
2+
3+
const std::string mochiosUserAgent = "mochios/" + mochios::version;
4+
5+
void mochios::interceptor::request::userAgent(
6+
mochios::message::Request &request) {
7+
request.set("User-Agent", mochiosUserAgent);
8+
}

src/interceptors/response/json.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include <mochios/interceptors/response/json.h>
2+
3+
void mochios::interceptor::response::json(
4+
mochios::message::Response &response) {
5+
if (response.get("content-type") != "application/json") {
6+
return;
7+
}
8+
9+
json::parser parser;
10+
response.body = parser.loads(static_cast<std::string>(response.body));
11+
}

src/interceptors/user_agent.cpp

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)