/*! * Copyright (c) 2015-2018, NADAL Jean-Baptiste. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA * * @Author: NADAL Jean-Baptiste * @Date: 19/06/2017 */ #ifndef _REST_CONTROLLER_H #define _REST_CONTROLLER_H /*------------------------------- INCLUDES ----------------------------------*/ #include #include #include #include /*--------------------------------- Define ----------------------------------*/ #define kDefaultTimeout 20 #define kPassed "passed" #define kFailed "failed" /*----------------------------- Dependencies --------------------------------*/ struct json_object; /*--------------------------------- CLASS ----------------------------------*/ class RestController : public WebController { public: RestController(void); RestController(const std::string &a_path, const std::string &a_method_get = "", const std::string &a_method_put = "", int a_timeout = kDefaultTimeout, bool a_raw_response = false); ~RestController(void); WebConnection *new_connection(struct uhttpd_ops *an_ops, struct client *a_client, const std::string &a_parameters); bool from_json(struct json_object *a_node); bool find(uint8_t a_method, const std::string &an_url); std::string get_parameter(const std::string &an_url); const Ubus &get_ubus(void) const; const uint8_t get_method(void) const; const std::string &get_endpoint(void) const; bool is_raw_response(void); protected: uint8_t m_method; std::string m_endpoint; Ubus m_ubus; bool mf_raw_response; private: void manage_endpoint(void); std::string m_parameter_name; std::size_t m_parameter_position; std::string m_controller; }; #endif /* _REST_CONTROLLER_H */