Пример #1
0
void RestResourceHandler::handleDelete(const RestRequest& request, RestResponse& response)
{
    handleCommon(request, response);
    struct OperationResult res = locateRsrcAndHandlePotentialProblems(request, response);
    if(res.isSuccessful)
    {
        const InternalRsrcId rsrcId = res.resultRsrcId;
        res = deleteRsrc(rsrcId);
        if(!res.isImplemented)
        {
            response.setStatusCode(HTTP_STATUS_SERVER_ERROR_NOT_IMPLEMENTED);
        }
        else if(!res.isSuccessful)
        {
            // dump failed for whatever reason
            response.setStatusCode(HTTP_STATUS_SERVER_ERROR_INTERNAL_ERROR);
        }
        else
        {
            std::ostringstream body;

            body << "DELETE class #" << rsrcId;

            response.addBodyContent(body);
            response.setStatusCodeOk();
        }
    }
}
Пример #2
0
void RestResourceHandler::handlePost(const RestRequest& request, RestResponse& response)
{
    handleCommon(request, response);

    struct OperationResult res = createNewRsrc();
    if(!res.isImplemented)
    {
        response.setStatusCode(HTTP_STATUS_SERVER_ERROR_NOT_IMPLEMENTED);
    }
    else if(!res.isSuccessful)
    {
        // no free slot...
        response.setStatusCode(HTTP_STATUS_INSUFFICIENT_STORAGE);
    }
    else
    {
        const InternalRsrcId rsrcId = res.resultRsrcId;
        std::ostringstream body;

        body << "POST class #" << rsrcId;
        res = dumpRsrcRepresentation(rsrcId, body);
        if(!res.isImplemented)
        {
            response.setStatusCode(HTTP_STATUS_SERVER_ERROR_NOT_IMPLEMENTED);
        }
        else if(!res.isSuccessful)
        {
            // dump failed for whatever reason
            response.setStatusCode(HTTP_STATUS_SERVER_ERROR_INTERNAL_ERROR);
        }
        else
        {
            response.addBodyContent(body);
            response.setStatusCode(HTTP_STATUS_CREATED);
        }
    }
}
Пример #3
0
FontFace * FontImporter::loadFont(const std::string & filename)
{
    std::ifstream in(filename, std::ios::in | std::ios::binary);

    if (!in)
    {
        return nullptr;
    }

    FontFace * font = new FontFace();

    std::string line;
    std::string identifier;
    while (std::getline(in, line))
    {
        std::stringstream ss(line);

        if (std::getline(ss, identifier, ' '))
        {
            if (identifier == "info")
            {
                handleInfo(ss, font);
            }
            else if (identifier == "common")
            {
                handleCommon(ss, font);
            }
            else if (identifier == "page")
            {
                handlePage(ss, font, filename);
            }
            else if (identifier == "chars")
            {
                handleChars(ss, font);
            }
            else if (identifier == "char")
            {
                handleChar(ss, font);
            }
            else if (identifier == "kernings")
            {
                handleKernings(ss, font);
            }
            else if (identifier == "kerning")
            {
                handleKerning(ss, font);
            }
            else
            {
                assert(false);
            }
        }
        else
        {
            assert(false);
        }
    }

    if (!font->glyphTexture())
    {
        delete font;

        return nullptr;
    }

    return font;
}