SNode.C
Loading...
Searching...
No Matches
jsonclient.cpp File Reference
Include dependency graph for jsonclient.cpp:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 53 of file jsonclient.cpp.

53 {
54 core::SNodeC::init(argc, argv);
55
57 using MasterRequest = Client::MasterRequest;
58 using Request = Client::Request;
59 using Response = Client::Response;
60 using SocketAddress = Client::SocketAddress;
61
62 const Client jsonClient(
63 "legacy",
64 [](const std::shared_ptr<MasterRequest>& req) {
65 VLOG(1) << "-- OnRequest";
66 req->method = "POST";
67 req->url = "/index.html";
68 req->type("application/json");
69 req->set("Connection", "close");
70 req->send(
71 "{\"userId\":1,\"schnitzel\":\"good\",\"hungry\":false}",
72 []([[maybe_unused]] const std::shared_ptr<Request>& req, const std::shared_ptr<Response>& res) {
73 VLOG(1) << "-- OnResponse";
74 VLOG(1) << " Status:";
75 VLOG(1) << " " << res->httpVersion;
76 VLOG(1) << " " << res->statusCode;
77 VLOG(1) << " " << res->reason;
78
79 VLOG(1) << " Headers:";
80 for (const auto& [field, value] : res->headers) {
81 VLOG(1) << " " << field + " = " + value;
82 }
83
84 VLOG(1) << " Cookies:";
85 for (const auto& [name, cookie] : res->cookies) {
86 VLOG(1) << " " + name + " = " + cookie.getValue();
87 for (const auto& [option, value] : cookie.getOptions()) {
88 VLOG(1) << " " + option + " = " + value;
89 }
90 }
91
92 res->body.push_back(0);
93 VLOG(1) << " Body:\n----------- start body -----------" << res->body.data() << "------------ end body ------------";
94 },
95 [](const std::shared_ptr<Request>&, const std::string& message) {
96 VLOG(1) << "legacy: Request parse error: " << message;
97 });
98 },
99 []([[maybe_unused]] const std::shared_ptr<MasterRequest>& req) {
100 LOG(INFO) << " -- OnRequestEnd";
101 });
102
103 jsonClient.connect("localhost",
104 8080,
105 [instanceName = jsonClient.getConfig().getInstanceName()](
106 const SocketAddress& socketAddress,
107 const core::socket::State& state) { // example.com:81 simulate connect timeout
108 switch (state) {
110 VLOG(1) << instanceName << ": connected to '" << socketAddress.toString() << "'";
111 break;
113 VLOG(1) << instanceName << ": disabled";
114 break;
116 LOG(ERROR) << instanceName << ": " << socketAddress.toString() << ": " << state.what();
117 break;
119 LOG(FATAL) << instanceName << ": " << socketAddress.toString() << ": " << state.what();
120 break;
121 }
122 });
123 /*
124 jsonClient.connect("localhost",
125 8080,
126 [instanceName = jsonClient.getConfig().getInstanceName()](
127 const SocketAddress& socketAddress,
128 const core::socket::State& state) { // example.com:81 simulate connnect timeout
129 switch (state) {
130 case core::socket::State::OK:
131 VLOG(1) << instanceName << ": connected to '" << socketAddress.toString() << "'";
132 break;
133 case core::socket::State::DISABLED:
134 VLOG(1) << instanceName << ": disabled";
135 break;
136 case core::socket::State::ERROR:
137 LOG(ERROR) << instanceName << ": " << socketAddress.toString() << ": " << state.what();
138 break;
139 case core::socket::State::FATAL:
140 LOG(FATAL) << instanceName << ": " << socketAddress.toString() << ": " << state.what();
141 break;
142 }
143 });
144 */
145 /*
146 jsonClient.post("localhost", 8080, "/index.html", "{\"userId\":1,\"schnitzel\":\"good\",\"hungry\":false}", [](int err) {
147 if (err != 0) {
148 PLOG(ERROR) << "OnError: " << err;
149 }
150 });
151 */
152
153 return core::SNodeC::start();
154}
static void init(int argc, char *argv[])
Definition SNodeC.cpp:54
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
Definition SNodeC.cpp:60
static constexpr int DISABLED
Definition State.h:56
static constexpr int ERROR
Definition State.h:57
static constexpr int FATAL
Definition State.h:58
static constexpr int OK
Definition State.h:55
Client::Response Response
Definition clients.h:93
Client::Request Request
Definition clients.h:92
Client::MasterRequest MasterRequest
Definition clients.h:91
web::http::legacy::NET::Client Client
Definition clients.h:90
SocketClient::SocketAddress SocketAddress
web::http::client::Client< net::in::stream::legacy::SocketClient > Client
Definition Client.h:54

References web::http::client::Response::body, web::http::client::Client< SocketClientT >::Client(), net::in::stream::SocketClient< SocketConnectorT, ConfigSocketClientT, SocketContextFactoryT, Args >::connect(), web::http::client::Response::cookies, core::socket::State::DISABLED, core::socket::State::ERROR, core::socket::State::FATAL, core::socket::Socket< ConfigT >::getConfig(), net::config::ConfigInstance::getInstanceName(), web::http::CookieOptions::getOptions(), web::http::CookieOptions::getValue(), web::http::client::Response::headers, web::http::client::Response::httpVersion, core::SNodeC::init(), web::http::client::Request::method, core::socket::State::OK, web::http::client::Response::reason, web::http::client::MasterRequest::send(), web::http::client::Request::set(), core::SNodeC::start(), web::http::client::Response::statusCode, net::in::SocketAddress::toString(), web::http::client::Request::type(), web::http::client::Request::url, and core::socket::State::what().

Here is the call graph for this function: