api_return SessionApi::handleSocketConnect(ApiRequest& aRequest, bool aIsSecure, const WebSocketPtr& aSocket) { auto sessionToken = JsonUtil::getField<string>("authorization", aRequest.getRequestBody(), false); auto session = WebServerManager::getInstance()->getUserManager().getSession(sessionToken); if (!session) { aRequest.setResponseErrorStr("Invalid session token"); return websocketpp::http::status_code::bad_request; } if (session->isSecure() != aIsSecure) { aRequest.setResponseErrorStr("Invalid protocol"); return websocketpp::http::status_code::bad_request; } session->onSocketConnected(aSocket); aSocket->setSession(session); return websocketpp::http::status_code::ok; }