std::istream& PlexServer::MakeRequest(Poco::Net::HTTPResponse& response, bool& ok, std::string path, const std::map<std::string, std::string>& queryParameters) { Poco::URI uri(path); // Create a request with an optional query if(queryParameters.size()) { for (auto const& pair : queryParameters) { // addQueryParameter does the encode already uri.addQueryParameter(pair.first, pair.second); } } Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, uri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1); request.add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"); request.add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); request.add("X-Plex-Device", "PC"); request.add("X-Plex-Device-Name", Config::GetInstance().GetHostname()); request.add("X-Plex-Language", Config::GetInstance().GetLanguage()); request.add("X-Plex-Model", "Linux"); request.add("X-Plex-Platform", "VDR"); request.add("X-Plex-Product", "plex for vdr"); request.add("X-Plex-Provides", "player"); request.add("X-Plex-Version", VERSION); if(Config::GetInstance().UsePlexAccount && !GetAuthToken().empty()) { // Add PlexToken to Header request.add("X-Plex-Token", GetAuthToken()); } bool excep = false; try { GetClientSession()->sendRequest(request); } catch (Poco::TimeoutException &exc) { esyslog("[plex] Timeout: %s", path.c_str()); ok = false; excep = true; } catch (Poco::Exception &exc) { esyslog("[plex] Oops Exception: %s", exc.displayText().c_str()); ok = false; excep = true; } if(!excep) { std::istream& stream = GetClientSession()->receiveResponse(response); ok = response.getStatus() == 200; return stream; } static std::stringstream* ss; return *ss; }
bool FOnlineIdentitySteam::AutoLogin(int32 LocalUserNum) { if (!IsRunningDedicatedServer()) { // Double check they are properly logged in if (SteamUserPtr != NULL && // Login is handled by steam SteamUserPtr->BLoggedOn()) { // Login changed delegate TriggerOnLoginChangedDelegates(LocalUserNum); // Login completion delegate FString AuthToken = GetAuthToken(LocalUserNum); TriggerOnLoginCompleteDelegates(LocalUserNum, true, FUniqueNetIdSteam(SteamUserPtr->GetSteamID()), TEXT("")); return true; } TriggerOnLoginCompleteDelegates(0, false, FUniqueNetIdSteam(0), TEXT("AutoLogin failed. Not logged in or no connection.")); return false; } else { // Autologin for dedicated servers happens via session creation in the GameServerAPI LogOnAnonymous() return false; } }