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;
	}
}