ported HTTP-Server with W5500 Ethernet Shield

Dependencies:   W5500Interface mbed-rpc mbed

Fork of HTTP-Server by Francois Berder

RequestHandler.cpp

Committer:
feb11
Date:
2013-07-17
Revision:
0:9e4bcb10b3e3
Child:
7:838d7ea07e18

File content as of revision 0:9e4bcb10b3e3:

#include "RequestHandler.h"
#include "mbed_rpc.h"
#include "RPCObjectManager.h"
#include "RPCCommand.h"

void GetRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
    switch(cmd.get_type())
    {
        case DELETE:
            strcat(reply, "You must send a DELETE request to remove an object ");
            break;
        case FUNCTION_CALL:
            RPC::call(cmd.get_cmd(), reply);
            break;
        case CREATE:
            strcat(reply, "You must send a PUT request to call a function");
            break;
        default:
            strcat(reply, "Invalid RPC command");
            break;
    }
}

void PutRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
    switch(cmd.get_type())
    {
        case DELETE:
            strcat(reply, "You must send a DELETE request to remove an object ");
            break;
        case FUNCTION_CALL:
            strcat(reply, "You must send a GET request to call a function");
            break;
        case CREATE:
            RPC::call(cmd.get_cmd(), reply);
            if(strlen(reply) > 0)
            {
                RPCObjectManager::instance().store_object(reply);
                strcat(reply, " has been created");
            }
            else
                strcat(reply, "Error while creating object.");
            break;
        default:
            strcat(reply, "Invalid RPC command");
            break;
    }
}

void DeleteRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
    switch(cmd.get_type())
    {
        case CREATE:
            strcat(reply, "You must send a PUT request to remove an object ");
            break;
        case FUNCTION_CALL:
            strcat(reply, "You must send a GET request to call a function");
            break;
        case DELETE:
            RPC::call(cmd.get_cmd(), reply);
            RPCObjectManager::instance().remove_object(cmd.get_obj_name());
            strcat(reply, "Deleted object ");
            strcat(reply, cmd.get_obj_name());
            break;
        default:
            strcat(reply, "Invalid RPC command");
            break;
    }
}

void ComplexRequestHandler::handle(const RPCCommand& cmd, char *reply)
{
    switch(cmd.get_type())
    {
        case CREATE :
            putHandler.handle(cmd, reply);
            break;
        case DELETE :
            deleteHandler.handle(cmd, reply);
            break;
        case FUNCTION_CALL :
            getHandler.handle(cmd, reply);
            break;
        default :
            strcat(reply, "Invalid RPC command");
            break;
    }
}