HttpServer audio and thumbnail lookups explicitly only support GET -- I

think we were doing some unnecessary process with HEAD (and potentially
OPTIONS) requests.
This commit is contained in:
casey langen 2017-11-12 20:48:15 -08:00
parent 2f7fa348bf
commit 41f1020ac9

View File

@ -318,33 +318,35 @@ int HttpServer::HandleRequest(
int status = MHD_HTTP_NOT_FOUND; int status = MHD_HTTP_NOT_FOUND;
try { try {
if (!isAuthenticated(connection, server->context)) { if (method && std::string(method) == "GET") {
status = 401; /* unauthorized */ if (!isAuthenticated(connection, server->context)) {
static const char* error = "unauthorized"; status = 401; /* unauthorized */
response = MHD_create_response_from_buffer(strlen(error), (void*) error, MHD_RESPMEM_PERSISTENT); static const char* error = "unauthorized";
response = MHD_create_response_from_buffer(strlen(error), (void*)error, MHD_RESPMEM_PERSISTENT);
#ifdef ENABLE_DEBUG #ifdef ENABLE_DEBUG
std::cerr << "unauthorized\n"; std::cerr << "unauthorized\n";
#endif #endif
}
else {
/* if we get here we're authenticated */
std::string urlStr(url);
if (urlStr[0] == '/') {
urlStr = urlStr.substr(1);
} }
else {
/* if we get here we're authenticated */
std::string urlStr(url);
std::vector<std::string> parts; if (urlStr[0] == '/') {
boost::split(parts, urlStr, boost::is_any_of("/")); urlStr = urlStr.substr(1);
if (parts.size() > 0) {
/* /audio/id/<id> OR /audio/external_id/<external_id> */
if (parts.at(0) == fragment::audio && parts.size() == 3) {
status = HandleAudioTrackRequest(server, response, connection, parts);
} }
/* /thumbnail/<id> */
else if (parts.at(0) == fragment::thumbnail && parts.size() == 2) { std::vector<std::string> parts;
status = HandleThumbnailRequest(server, response, connection, parts); boost::split(parts, urlStr, boost::is_any_of("/"));
if (parts.size() > 0) {
/* /audio/id/<id> OR /audio/external_id/<external_id> */
if (parts.at(0) == fragment::audio && parts.size() == 3) {
status = HandleAudioTrackRequest(server, response, connection, parts);
}
/* /thumbnail/<id> */
else if (parts.at(0) == fragment::thumbnail && parts.size() == 2) {
status = HandleThumbnailRequest(server, response, connection, parts);
}
} }
} }
} }