void Client::start (System::Socket* socket) { HTTP* request = new HTTP; while (!request->done()) { std::string string = socket->readLine().toString(); request->request(string); } HTTP* response = new HTTP; if (request->isOk()) { try { response->setData(System::readFile( Config::get("directories->document[path]")+System::normalizePath(request->getUri()) )); response->setStatus(200); response->setVersion(request->getVersion()); response->setHeader("Connection", "close"); response->setHeader("Content-Type", Mime::getType(request->getUri())); response->setHeader("Content-Length", response->getData().length()); response->setHeader("Server", "lulzHTTPd/0.1"); socket->send(response->get()); } catch (Exception e) { std::stringstream resp; resp << "WUT, ARE YOU BLIND? :O" << std::endl; response->setStatus(404); response->setVersion(request->getVersion()); response->setHeader("Connection", "close"); response->setHeader("Content-Type", "text/plain"); response->setHeader("Content-Length", resp.str().length()); response->setHeader("Server", "lulzHTTPd/0.1"); response->setData(resp.str()); socket->send(response->get()); } } else { std::stringstream resp; resp << "F****T IT'S A BAD REQUEST" << std::endl; response->setStatus(request->getStatus()); response->setVersion(request->getVersion() ? request->getVersion() : 1.0); response->setHeader("Connection", "close"); response->setHeader("Content-Type", "text/plain"); response->setHeader("Content-Length", resp.str().length()); response->setHeader("Server", "lulzHTTPd/0.1"); response->setData(resp.str()); socket->send(response->get()); } delete request; delete response; delete socket; }