1
0
Fork 0
mirror of https://gitlab.com/niansa/commsy-rest.git synced 2025-03-06 20:48:27 +01:00

Initial commit

This commit is contained in:
niansa 2020-09-16 14:54:48 +02:00
commit 5fb5c88c8f
5 changed files with 189 additions and 0 deletions

73
.gitignore vendored Normal file
View file

@ -0,0 +1,73 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "qcommsy"]
path = qcommsy
url = https://gitlab.com/niansa/qcommsy

16
commsy-rest.pro Normal file
View file

@ -0,0 +1,16 @@
TEMPLATE = app
CONFIG += console c++17
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp \
qcommsy/curlreq.cpp \
qcommsy/libcommsy.cpp
INCLUDEPATH += /usr/include/jsoncpp
LIBS += -ldrogon -ltrantor -luuid -lz -lcrypto -ldl -ljson-c -lsqlite3 -lssl -ljsoncpp -pthread
LIBS += -lgumbo -lcurl -lcurlpp
HEADERS += \
qcommsy/libcommsy.hpp

96
main.cpp Normal file
View file

@ -0,0 +1,96 @@
#include <drogon/drogon.h>
#include <jsoncpp/json/json.h>
#include "qcommsy/libcommsy.hpp"
using namespace drogon;
int main() {
// Register handlers
app().registerHandler("/",
[](const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback)
{
auto resp = HttpResponse::newHttpResponse();
resp->setBody("Hello world!");
callback(resp);
}, {Get}
);
app().registerHandler("/fetchList?url={serverUrl}&sid={sid}&room={room}&startId={startId}&maxPosts={_maxPosts}",
[](const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,
const std::string &serverUrl, const std::string &sid, const std::string &room, const std::string &startId, const std::string& _maxPosts)
{
std::string maxPosts = _maxPosts;
if (maxPosts.empty()) {
maxPosts = "0";
}
// Load data from server
libCommsy *connection = nullptr;
std::string resStr = "unknown";
auto resCode = HttpStatusCode::k500InternalServerError;
try {
connection = new libCommsy(serverUrl, sid, room, startId, std::stoull(maxPosts));
resStr = "ok";
resCode = HttpStatusCode::k200OK;
} catch (libCommsy::invalidRoomError&) {
resStr = "invalidRoom";
resCode = HttpStatusCode::k404NotFound;
} catch (libCommsy::invalidSIDError&) {
resStr = "invalidSid";
resCode = HttpStatusCode::k403Forbidden;
} catch (libCommsy::connectionFailError&) {
resStr = "invalidUrl";
resCode = HttpStatusCode::k502BadGateway;
} catch (std::invalid_argument&) {
resStr = "invalidNumber";
resCode = HttpStatusCode::k400BadRequest;
}
// Generate JSON
Json::Value json;
json["result"] = resStr;
if (resCode == 200) {
json["numposts"] = static_cast<unsigned int>(connection->numposts);
json["posts"] = Json::arrayValue;
for (const auto& rawPost : connection->posts) {
Json::Value jsonPost;
// Get basic details
jsonPost["name"] = rawPost.name;
jsonPost["meta"] = rawPost.meta;
jsonPost["taskState"] = rawPost.taskState;
jsonPost["url"] = rawPost.url;
jsonPost["id"] = rawPost.id;
jsonPost["files"] = Json::arrayValue;
// Get files
for (const auto& rawFile : rawPost.files) {
Json::Value jsonFile;
jsonFile["name"] = rawFile.name;
jsonFile["url"] = rawFile.url;
jsonPost["files"].append(jsonFile);
}
// Append to posts array
json["posts"].append(jsonPost);
}
}
auto resp = HttpResponse::newHttpJsonResponse(json);
resp->setStatusCode(resCode);
callback(resp);
// Clean up
if (connection) {
delete connection;
}
}, {Get}
);
// Start server
app().setLogPath("./")
.setLogLevel(trantor::Logger::kWarn)
.addListener("0.0.0.0", 8000)
.setThreadNum(16)
//.enableRunAsDaemon()
.run();
}

1
qcommsy Submodule

@ -0,0 +1 @@
Subproject commit 83b2ec15faab5574028012ede42fbb6e6f756d8c