aboutsummaryrefslogtreecommitdiff
path: root/api/umosapi.h
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2019-09-06 18:04:40 +0200
committerneodarz <neodarz@neodarz.net>2019-09-06 18:04:40 +0200
commit1b922f7319f821fe3daf302a8c68131aaa94f586 (patch)
treedebf82b507174f158b9cb4e030b3f82d31c44a64 /api/umosapi.h
parent3185dd695d58bb96672d4f33c4528bf8b361707f (diff)
downloadumosapicpp-1b922f7319f821fe3daf302a8c68131aaa94f586.tar.xz
umosapicpp-1b922f7319f821fe3daf302a8c68131aaa94f586.zip
Change code to use Restbed
Diffstat (limited to 'api/umosapi.h')
-rw-r--r--api/umosapi.h105
1 files changed, 88 insertions, 17 deletions
diff --git a/api/umosapi.h b/api/umosapi.h
index 20c6d7b..a1765d7 100644
--- a/api/umosapi.h
+++ b/api/umosapi.h
@@ -1,37 +1,108 @@
#ifndef UmosapiService_H_
#define UmosapiService_H_
-#include <pistache/http.h>
-#include <pistache/description.h>
-#include <pistache/endpoint.h>
+//#include <pistache/http.h>
+//#include <pistache/description.h>
+//#include <pistache/endpoint.h>
-#include <pistache/serializer/rapidjson.h>
+#include <restbed>
-using namespace Pistache;
+//#include <pistache/serializer/rapidjson.h>
+
+#include <nlohmann/json.hpp>
+
+using namespace restbed;
+using namespace std;
+
+using json = nlohmann::json;
+
+struct tag {
+ std::string name;
+ std::string description;
+};
+
+struct Propertie {
+
+ std::string name;
+ std::string format;
+ std::string type;
+ std::string required;
+};
+
+struct Definition {
+
+ std::string name;
+ std::string type;
+ std::vector<Propertie> props;
+};
+
+struct Definitions {
+ std::vector<Definition> defs;
+};
+
+struct HttpWord {
+ std::string name;
+};
+
+struct Path {
+ std::string name;
+ std::vector<HttpWord> words;
+};
+
+struct Paths {
+ std::vector<Path> paths;
+};
class UmosapiService {
public:
- UmosapiService(Address addr);
+ UmosapiService();
virtual ~UmosapiService() {};
- void init(size_t thr);
+ void init();
- void start(std::string swaggerui);
+ void start(int, int);
+ Service _service;
+ json _swagger;
+ vector<tag> _tags;
private:
- void createDescription();
-
- void retrieveAll(const Rest::Request& request, Http::ResponseWriter response);
+ void desc(std::string route, std::string http_word, const std::function< void ( const std::shared_ptr< Session > ) >& callback, const std::function< void(int, const std::exception&, std::shared_ptr<restbed::Session>) >& error_callback, tag tags[]);
+ void createResource();
- void addUObject(const Rest::Request& request, Http::ResponseWriter response);
+ static void retrieveAll( const shared_ptr<Session> session );
+ static void addUObject( const shared_ptr<Session> session );
+ static void deleteUObject( const shared_ptr<Session> session );
+ static void searchUObjectByKeyValue( const shared_ptr<Session> session );
+ static void swaggerEndpoint( const shared_ptr<Session> session );
+ static void swaggerEndpointResources( const shared_ptr<Session> session );
+ static void swaggerEndpointApi( const shared_ptr<Session> session );
- void deleteUObject(const Rest::Request& request, Http::ResponseWriter response);
+ shared_ptr< Resource> _resource;
+ Definition _definition;
+ Definitions _definitions;
+ Path _path;
+ Paths _paths;
+ void set_path();
+ void set_path(std::string route);
+ void set_method_handler(std::string http_word, const std::function< void ( const std::shared_ptr< Session > ) >& callback);
+ void set_error_handler(const std::function< void(int, const std::exception&, std::shared_ptr<restbed::Session>) >& error_callback);
+ void produce(std::string);
+ void consume(std::string);
+ void parameter(std::string, std::string, std::string);
+ void response(std::string err_code, std::string description, std::string schema);
+ void publish();
+ void basePath(std::string basePath);
+ void description(std::string description);
+ void title(std::string title);
+ void version(std::string version);
+ void host(std::string host);
+ void atag(std::string name, std::string description);
+ void scheme(std::string scheme);
- void searchUObjectByKeyValue(const Rest::Request& request, Http::ResponseWriter response);
+ void definition(std::string name, std::string type);
+ void propertie(std::string name, std::string format, std::string type, std::string required);
+ void swagger(std::string ui_path, std::string swagger_dir, std::string api_path);
- std::shared_ptr<Http::Endpoint> httpEndpoint;
- Rest::Description desc;
- Rest::Router router;
};
#endif