summaryrefslogtreecommitdiff
path: root/PlexServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'PlexServer.cpp')
-rw-r--r--PlexServer.cpp36
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;