diff options
Diffstat (limited to 'PlexServer.cpp')
-rw-r--r-- | PlexServer.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/PlexServer.cpp b/PlexServer.cpp index 687c8d1..00a41eb 100644 --- a/PlexServer.cpp +++ b/PlexServer.cpp @@ -1,5 +1,7 @@ #include <vdr/tools.h> #include "PlexServer.h" +#include "Config.h" +#include "plex.h" namespace plexclient { @@ -103,6 +105,40 @@ Poco::Net::HTTPClientSession* PlexServer::GetClientSession() return m_httpSession; } +std::istream& PlexServer::MakeRequest(Poco::Net::HTTPResponse& response, std::string path, 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()); + } + + GetClientSession()->sendRequest(request); + return GetClientSession()->receiveResponse(response); + +} + std::string PlexServer::GetUri() { return m_uri; |