1
0
mirror of https://github.com/binary-kitchen/doorlockd synced 2024-12-22 02:14:26 +01:00

Added proper Response handling

This commit is contained in:
Ralf Ramsauer 2015-09-22 21:22:48 +02:00
parent a522f1b70f
commit 3b7338ea6e
3 changed files with 67 additions and 0 deletions

View File

@ -30,6 +30,7 @@ main.cpp
logger.cpp
door.cpp
logic.cpp
response.cpp
util.cpp
daemon.cpp
)

22
doorlockd/response.cpp Normal file
View File

@ -0,0 +1,22 @@
#include <json/json.h>
#include "response.h"
const std::string Response::_codeKey = "code";
const std::string Response::_messageKey = "message";
Response::operator bool() const
{
return code == Response::Code::Success;
}
std::string Response::toJson() const
{
Json::Value response;
Json::StyledWriter writer;
response[_codeKey] = code;
response[_messageKey] = message;
return writer.write(response);
}

44
doorlockd/response.h Normal file
View File

@ -0,0 +1,44 @@
#ifndef RESPONSE_H
#define RESPONSE_H
#include <string>
struct Response
{
enum Code {
Success = 0, // Request successful
Fail, // General non-specified error
AlreadyUnlocked, // Authentication successful, but door is already unlocked
AlreadyLocked, // Authentication successful, but door is already locked
NotJson, // Request is not a valid JSON object
JsonError, // Request is valid JSON, but does not contain necessary material
InvalidToken, // Request contains invalid token
InvalidCredentials, // Invalid LDAP credentials
InvalidIP, // IP check failure
UnknownAction, // Unknown action
LDAPInit, // Ldap initialization failed
} code;
std::string message;
std::string toJson() const;
operator bool() const;
Response() :
code(Fail),
message("General failure")
{
}
Response(Response::Code code, const std::string &message = "") :
code(code),
message(message)
{
}
private:
const static std::string _codeKey;
const static std::string _messageKey;
};
#endif // RESPONSE_H