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(); } } }
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); } } }
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; }