mirror of
https://github.com/Karaka-Management/oms-OnlineResourceWatcher.git
synced 2026-02-02 01:38:40 +00:00
65 lines
1.6 KiB
C++
Executable File
65 lines
1.6 KiB
C++
Executable File
/**
|
|
* Karaka
|
|
*
|
|
* @package Models
|
|
* @copyright Dennis Eichhorn
|
|
* @license OMS License 1.0
|
|
* @version 1.0.0
|
|
* @link https://karaka.app
|
|
*/
|
|
#ifndef ROUTES_H
|
|
#define ROUTES_H
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <iostream>
|
|
#include <regex>
|
|
|
|
#include "Controller/ApiController.h"
|
|
#include "Controller/InstallController.h"
|
|
#include "cOMS/Stdlib/HashTable.h"
|
|
|
|
typedef void (*Fptr)(int, char **);
|
|
|
|
Stdlib::HashTable::ht *generate_routes()
|
|
{
|
|
Stdlib::HashTable::ht *table = Stdlib::HashTable::create_table(4, true);
|
|
if (table == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
Stdlib::HashTable::set_entry(table, "^.*?\\-h *.*$", (void *) &Controller::ApiController::printHelp);
|
|
Stdlib::HashTable::set_entry(table, "^.*?\\-v *.*$", (void *) &Controller::ApiController::printVersion);
|
|
Stdlib::HashTable::set_entry(table, "^.*?\\-r *.*$", (void *) &Controller::ApiController::checkResources);
|
|
|
|
Stdlib::HashTable::set_entry(table, "^.*?\\-\\-install *.*$", (void *) &Controller::InstallController::installApplication);
|
|
|
|
return table;
|
|
}
|
|
|
|
Fptr match_route(Stdlib::HashTable::ht *routes, char *uri)
|
|
{
|
|
Fptr ptr = NULL;
|
|
Stdlib::HashTable::it itr = Stdlib::HashTable::table_iterator(routes);
|
|
|
|
std::regex regex;
|
|
std::cmatch match;
|
|
|
|
while (Stdlib::HashTable::next(&itr)) {
|
|
regex = std::regex(itr.key);
|
|
|
|
bool status = std::regex_search(uri, match, regex);
|
|
if (status) {
|
|
ptr = (Fptr) itr.value;
|
|
}
|
|
}
|
|
|
|
// No endpoint found
|
|
if (ptr == NULL) {
|
|
ptr = &Controller::ApiController::printHelp;
|
|
}
|
|
|
|
return ptr;
|
|
}
|
|
|
|
#endif |