diff --git a/sunshine/nvhttp.cpp b/sunshine/nvhttp.cpp index 72bb77e9..18851b30 100644 --- a/sunshine/nvhttp.cpp +++ b/sunshine/nvhttp.cpp @@ -73,6 +73,10 @@ std::unordered_map map_id_sess; std::unordered_map map_id_client; using args_t = SimpleWeb::CaseInsensitiveMultimap; +using resp_https_t = std::shared_ptr::Response>; +using req_https_t = std::shared_ptr::Request>; +using resp_http_t = std::shared_ptr::Response>; +using req_http_t = std::shared_ptr::Request>; enum class op_e { ADD, @@ -381,14 +385,16 @@ template void serverinfo(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { print_req(request); - auto args = request->parse_query_string(); - auto clientID = args.find("uniqueid"s); - int pair_status = 0; + if constexpr (std::is_same_v) { + auto args = request->parse_query_string(); + auto clientID = args.find("uniqueid"s); - if(clientID != std::end(args)) { - if (auto it = map_id_client.find(clientID->second); it != std::end(map_id_client)) { - pair_status = 1; + + if(clientID != std::end(args)) { + if (auto it = map_id_client.find(clientID->second); it != std::end(map_id_client)) { + pair_status = 1; + } } } @@ -420,9 +426,8 @@ void serverinfo(std::shared_ptr::Response> res response->write(data.str()); } -template -void applist(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { - print_req(request); +void applist(resp_https_t response, req_https_t request) { + print_req(request); auto args = request->parse_query_string(); auto clientID = args.at("uniqueid"s); @@ -466,9 +471,8 @@ void applist(std::shared_ptr::Response> respon apps.push_back(std::make_pair("App", desktop)); } -template -void launch(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { - print_req(request); +void launch(resp_https_t response, req_https_t request) { + print_req(request); pt::ptree tree; auto g = util::fail_guard([&]() { @@ -542,9 +546,8 @@ void launch(std::shared_ptr::Response> respons tree.put("root.gamesession", 1); } -template -void resume(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { - print_req(request); +void resume(resp_https_t response, req_https_t request) { + print_req(request); pt::ptree tree; auto g = util::fail_guard([&]() { @@ -581,9 +584,8 @@ void resume(std::shared_ptr::Response> respons tree.put("root.gamesession", 1); } -template -void cancel(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { - print_req(request); +void cancel(resp_https_t response, req_https_t request) { + print_req(request); pt::ptree tree; auto g = util::fail_guard([&]() { @@ -605,8 +607,9 @@ void cancel(std::shared_ptr::Response> respons tree.put("root..status_code", 200); } -template -void appasset(std::shared_ptr::Response> response, std::shared_ptr::Request> request) { +void appasset(resp_https_t response, req_https_t request) { + print_req(request); + std::ifstream in(SUNSHINE_ASSETS_DIR "/box.png"); response->write(SimpleWeb::StatusCode::success_ok, in); } @@ -630,12 +633,12 @@ void start() { https_server.default_resource = not_found; https_server.resource["^/serverinfo$"]["GET"] = serverinfo; https_server.resource["^/pair$"]["GET"] = pair; - https_server.resource["^/applist$"]["GET"] = applist; - https_server.resource["^/appasset$"]["GET"] = appasset; - https_server.resource["^/launch$"]["GET"] = launch; + https_server.resource["^/applist$"]["GET"] = applist; + https_server.resource["^/appasset$"]["GET"] = appasset; + https_server.resource["^/launch$"]["GET"] = launch; https_server.resource["^/pin/([0-9]+)$"]["GET"] = pin; - https_server.resource["^/resume$"]["GET"] = resume; - https_server.resource["^/cancel$"]["GET"] = cancel; + https_server.resource["^/resume$"]["GET"] = resume; + https_server.resource["^/cancel$"]["GET"] = cancel; https_server.config.reuse_address = true; https_server.config.address = "0.0.0.0"s; @@ -644,12 +647,7 @@ void start() { http_server.default_resource = not_found; http_server.resource["^/serverinfo$"]["GET"] = serverinfo; http_server.resource["^/pair$"]["GET"] = pair; - http_server.resource["^/applist$"]["GET"] = applist; - http_server.resource["^/appasset$"]["GET"] = appasset; - http_server.resource["^/launch$"]["GET"] = launch; http_server.resource["^/pin/([0-9]+)$"]["GET"] = pin; - http_server.resource["^/resume$"]["GET"] = resume; - http_server.resource["^/cancel$"]["GET"] = cancel; http_server.config.reuse_address = true; http_server.config.address = "0.0.0.0"s;