Skip to content

Commit 17ef1ba

Browse files
committed
major ass overhaul
1 parent c36223c commit 17ef1ba

File tree

26 files changed

+513
-518
lines changed

26 files changed

+513
-518
lines changed

example/main.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1-
#include <mochios/client.h>
1+
#include <mochios/client/client.h>
22

33
int main(int argc, char **argv) {
4-
mochios::Client client("api.nasa.gov", 443);
5-
mochios::Request request;
6-
request.path = "/planetary/apod";
7-
request.queries["api_key"] = "DEMO_KEY";
4+
mochios::client::Connection connection;
5+
connection.host = "expresso.aditjain.me";
6+
connection.port = 80;
87

9-
mochios::Response response;
10-
client.get(request, response);
8+
mochios::Client client(connection);
9+
mochios::message::Response response;
1110

12-
std::cout << response.body.dumps(2) << std::endl;
11+
mochios::message::Request healthRequest("/health");
12+
response = client.get(healthRequest);
13+
logger::success(response.body);
14+
15+
json::parser parser;
16+
mochios::message::Request request("/about");
17+
response = client.get(request);
18+
logger::success(parser.loads(response.body).dumps(2));
1319

1420
return EXIT_SUCCESS;
1521
}

include/mochios/client.h

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

include/mochios/client/client.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#pragma once
2+
3+
#include <cstring>
4+
#include <netdb.h>
5+
6+
#include <brewtils/sys.h>
7+
#include <logger/log.h>
8+
9+
#include <mochios/client/options.h>
10+
#include <mochios/enums/method.h>
11+
#include <mochios/message/request.h>
12+
#include <mochios/message/response.h>
13+
14+
namespace mochios {
15+
16+
class Client {
17+
private:
18+
int socket;
19+
struct addrinfo *server;
20+
21+
mochios::client::Connection connection;
22+
23+
void connect();
24+
mochios::message::Response sendHelper(mochios::message::Request &request,
25+
const mochios::enums::method &method);
26+
27+
public:
28+
Client(const mochios::client::Connection &connection);
29+
~Client();
30+
31+
mochios::message::Response get(mochios::message::Request &request);
32+
mochios::message::Response post(mochios::message::Request &request);
33+
mochios::message::Response put(mochios::message::Request &request);
34+
mochios::message::Response patch(mochios::message::Request &request);
35+
mochios::message::Response del(mochios::message::Request &request);
36+
mochios::message::Response options(mochios::message::Request &request);
37+
mochios::message::Response head(mochios::message::Request &request);
38+
};
39+
40+
} // namespace mochios

include/mochios/client/options.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#pragma once
2+
3+
#include <string>
4+
5+
namespace mochios {
6+
7+
namespace client {
8+
9+
typedef struct {
10+
std::string host;
11+
unsigned short port;
12+
} Connection;
13+
14+
} // namespace client
15+
16+
} // namespace mochios

include/mochios/cookie.h

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

include/mochios/enums/method.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
#include <set>
4+
#include <sstream>
5+
#include <string>
6+
#include <unordered_map>
7+
8+
namespace mochios {
9+
10+
namespace enums {
11+
12+
enum class method { GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD };
13+
14+
extern const std::set<std::string> methods;
15+
16+
} // namespace enums
17+
18+
} // namespace mochios
19+
20+
bool operator==(const mochios::enums::method &m, const std::string &str);
21+
bool operator!=(const mochios::enums::method &m, const std::string &str);
22+
23+
std::ostream &operator<<(std::ostream &os, const mochios::enums::method &m);
24+
25+
std::string operator+(const mochios::enums::method &m, const std::string &str);
26+
std::string operator+(const std::string &str, const mochios::enums::method &m);

include/mochios/helpers/client.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#pragma once
2+
3+
#include <cstring>
4+
#include <sstream>
5+
6+
#include <brewtils/sys.h>
7+
#include <brewtils/url.h>
8+
9+
#include <mochios/enums/method.h>
10+
#include <mochios/message/request.h>
11+
#include <mochios/message/response.h>
12+
13+
namespace mochios {
14+
15+
namespace helpers {
16+
17+
std::pair<std::string, std::string>
18+
buildRequest(mochios::message::Request &request,
19+
const mochios::enums::method &method);
20+
21+
void buildResponse(mochios::message::Response &res,
22+
std::stringstream &response);
23+
24+
mochios::message::Response send(mochios::message::Request &request,
25+
const mochios::enums::method &method,
26+
const int &socket);
27+
28+
} // namespace helpers
29+
30+
} // namespace mochios

include/mochios/message.h

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

include/mochios/message/message.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#pragma once
2+
3+
#include <brewtils/string.h>
4+
#include <json/parse.h>
5+
6+
namespace mochios {
7+
8+
namespace message {
9+
10+
class Message {
11+
private:
12+
protected:
13+
public:
14+
Message();
15+
~Message();
16+
17+
// Don't use headers directly! Use them using the get and set
18+
// methods
19+
std::map<std::string, std::string> headers;
20+
std::map<std::string, std::string> params;
21+
std::map<std::string, std::string> queries;
22+
json::object body;
23+
24+
void set(const std::string &key, const std::string &value);
25+
const std::string get(const std::string &key) const;
26+
27+
virtual void print() = 0;
28+
};
29+
30+
} // namespace message
31+
32+
} // namespace mochios

include/mochios/message/request.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
3+
#include <mochios/message/message.h>
4+
5+
namespace mochios {
6+
7+
namespace message {
8+
9+
class Request : public Message {
10+
private:
11+
public:
12+
Request(const std::string &path);
13+
~Request();
14+
15+
std::string path;
16+
17+
void print() override;
18+
};
19+
20+
} // namespace message
21+
22+
} // namespace mochios

0 commit comments

Comments
 (0)