mirror of
https://github.com/outbackdingo/sysadm.git
synced 2026-01-27 18:20:23 +00:00
60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
// ===============================
|
|
// PC-BSD REST/JSON API Server
|
|
// Available under the 3-clause BSD License
|
|
// Written by: Ken Moore <ken@pcbsd.org> July 2015
|
|
// =================================
|
|
#ifndef _PCBSD_REST_SERVER_REST_STRUCTS_H
|
|
#define _PCBSD_REST_SERVER_REST_STRUCTS_H
|
|
#include "globals-qt.h"
|
|
|
|
#define CurHttpVersion QString("HTTP/1.1")
|
|
|
|
//NOTE: The input structure parsing assumes a JSON input body
|
|
//NOTE: Common VERB's are:
|
|
/* GET - Read a resource (no changes made)
|
|
PUT - Insert/update a resource (makes changes - nothing automatically assigned for a new resource)
|
|
POST - Insert/update a resource (makes changes - automatically assigns data for new resource as necessary)
|
|
DELETE - Remove a resource (makes changes)
|
|
OPTIONS - List the allowed options on a resource (no changes made)
|
|
HEAD - List the response headers only (no changes made)
|
|
*/
|
|
class RestInputStruct{
|
|
public:
|
|
//REST Variables
|
|
QString VERB, URI, HTTPVERSION;
|
|
//JSON input variables
|
|
QString name, namesp, id, auth;
|
|
QJsonValue args;
|
|
QString bridgeID;
|
|
|
|
//Raw Text
|
|
QStringList Header; //REST Headers
|
|
QString Body; //Everything else
|
|
//User Permissions level
|
|
bool fullaccess;
|
|
|
|
RestInputStruct(QString message = "", bool isRest = false);
|
|
~RestInputStruct();
|
|
|
|
void ParseBodyIntoJson();
|
|
|
|
};
|
|
|
|
class RestOutputStruct{
|
|
public:
|
|
enum ExitCode{OK, CREATED, ACCEPTED, NOCONTENT, RESETCONTENT, PARTIALCONTENT, PROCESSING, BADREQUEST, UNAUTHORIZED, FORBIDDEN, NOTFOUND };
|
|
RestInputStruct in_struct;
|
|
ExitCode CODE;
|
|
QStringList Header; //REST output header lines
|
|
QJsonValue out_args;
|
|
|
|
RestOutputStruct(){
|
|
CODE = BADREQUEST; //default exit code
|
|
}
|
|
~RestOutputStruct(){}
|
|
|
|
QString assembleMessage(); //normal operation - no special processing needed
|
|
};
|
|
|
|
#endif
|