a2093e24a6
Ready to implement this private base struct to MQTT client
88 lines
2.9 KiB
C++
88 lines
2.9 KiB
C++
#include "libs/http_client/curl_thread_pool_p.h"
|
|
#include "picodeparser.h"
|
|
#include "pidigest.h"
|
|
#include "pihttpclient.h"
|
|
#include "piliterals.h"
|
|
#include "pimqttclient.h"
|
|
#include "pip.h"
|
|
#include "piunits.h"
|
|
#include "pivaluetree_conversions.h"
|
|
|
|
using namespace PICoutManipulators;
|
|
using namespace PIHTTP;
|
|
|
|
|
|
PIKbdListener kbd;
|
|
|
|
MessageMutable createMessage(Code c, const char * path, const MessageConst & msg) {
|
|
piCout << "path" << path << "args" << msg.pathArguments();
|
|
return MessageMutable().setCode(c);
|
|
};
|
|
int main(int argc, char * argv[]) {
|
|
piCout << "start ...";
|
|
PIHTTPServer server;
|
|
server.registerUnhandled([](const MessageConst & msg) { return createMessage(Code::BadRequest, "unhadled", msg); });
|
|
server.registerPath("api/v1/status", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/status", msg);
|
|
});
|
|
server.registerPath("api/v1/plugins", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/plugins", msg);
|
|
});
|
|
server.registerPath("api/v1/task-status", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/task-status", msg);
|
|
});
|
|
server.registerPath("api/v1/task/{taskID}/status", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/task/{taskID}/status", msg);
|
|
});
|
|
server.registerPath("api/v1/bort/list", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/bort/list", msg);
|
|
});
|
|
server.registerPath("api/v1/all", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/all", msg);
|
|
});
|
|
server.registerPath("api/v1/all/bort{A}/f", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/all/*/f", msg);
|
|
});
|
|
server.registerPath("api/v1/all2/**", Method::Get, [](const MessageConst & msg) {
|
|
return createMessage(Code::Accepted, "api/v1/all2/**", msg);
|
|
});
|
|
server.listenAll(12345);
|
|
|
|
kbd.enableExitCapture('Q');
|
|
WAIT_FOR_EXIT
|
|
piCout << "exiting ...";
|
|
server.stop();
|
|
|
|
return 0;
|
|
|
|
PISystemMonitor mon;
|
|
mon.startOnSelf();
|
|
PISystemMonitor::totalRAM();
|
|
2_s .sleep();
|
|
|
|
return 0;
|
|
PIMQTT::Client cl;
|
|
cl.setConnectTimeout(2_s);
|
|
CONNECTL(&cl, connected, [&cl] {
|
|
piCout << "connected";
|
|
cl.subscribe("/zigbee2mqtt");
|
|
cl.subscribe("/zigbee2mqtt/+");
|
|
cl.unsubscribe("/zigbee2mqtt");
|
|
cl.publish("/zigbee2mqtt/abc", "hello from PIP"_a.toAscii());
|
|
});
|
|
CONNECTL(&cl, disconnected, [&cl](PIMQTT::Error code) {
|
|
piCout << "disconnected code" << (int)code;
|
|
cl.connect("localhost", "PIP");
|
|
});
|
|
CONNECTL(&cl, received, [](const PIMQTT::MessageConst & message) {
|
|
piCout << "received" << message.topic() << message.pathArguments() << message.payload().size();
|
|
});
|
|
|
|
cl.connect("localhost", "PIP");
|
|
|
|
kbd.enableExitCapture('Q');
|
|
WAIT_FOR_EXIT
|
|
|
|
piCout << "exiting ...";
|
|
}
|