diff options
author | chriszero <zerov83@gmail.com> | 2015-12-19 21:55:26 +0100 |
---|---|---|
committer | chriszero <zerov83@gmail.com> | 2015-12-19 21:55:26 +0100 |
commit | 516d7da6bf79c8e48d5348706faeba8ea5061984 (patch) | |
tree | d200477fa28271c5c47ceb9811394e405fd56b1d /SubscriptionManager.cpp | |
parent | 1d624e296ee8b6a13abf0a4012a5e07b2354970e (diff) | |
download | vdr-plugin-plex-516d7da6bf79c8e48d5348706faeba8ea5061984.tar.gz vdr-plugin-plex-516d7da6bf79c8e48d5348706faeba8ea5061984.tar.bz2 |
Starting to redesign server communication.
Diffstat (limited to 'SubscriptionManager.cpp')
-rw-r--r-- | SubscriptionManager.cpp | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/SubscriptionManager.cpp b/SubscriptionManager.cpp index 67ab723..061f823 100644 --- a/SubscriptionManager.cpp +++ b/SubscriptionManager.cpp @@ -59,14 +59,15 @@ void SubscriptionManager::ReportProgress() std::string state = "playing"; if (m_pStatus->PlayerStopped) state = "stopped"; else if(!play) state = "paused"; - - Poco::Net::HTTPClientSession session(m_pStatus->pVideo->m_pServer->GetHost(), m_pStatus->pVideo->m_pServer->GetPort()); - std::string uri = "/:/progress?key=" + std::string(itoa(m_pStatus->pVideo->m_iRatingKey)) + "&identifier=com.plexapp.plugins.library&time=" + std::string(itoa(current)) + "&state=" + state; - Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, uri); - session.sendRequest(req); + std::map<std::string, std::string> queryMap; + queryMap["key"] = std::to_string(m_pStatus->pVideo->m_iRatingKey); + queryMap["identifier"] = "com.plexapp.plugins.library"; + queryMap["time"] = std::to_string(current); + queryMap["state"] = state; + Poco::Net::HTTPResponse resp; - session.receiveResponse(resp); + m_pStatus->pVideo->m_pServer->MakeRequest(resp, "/:/progress", queryMap); } catch (Poco::Exception&) {} } @@ -88,40 +89,33 @@ void SubscriptionManager::NotifyServer() return; } - std::string server; - int port; + PlexServer* pServer; if(pVid) { - server = pVid->m_pServer->GetHost(); - port = pVid->m_pServer->GetPort(); + pServer = pVid->m_pServer; } else if ( plexgdm::GetInstance().GetPlexservers().size() > 0) { - server = plexgdm::GetInstance().GetPlexservers().at(0).GetHost(); - port = plexgdm::GetInstance().GetPlexservers().at(0).GetPort(); + pServer = &plexgdm::GetInstance().GetPlexservers().at(0); } else { // no plexservers in network return; } + + std::map<std::string, std::string> queryMap; - std::stringstream uri; - uri << "/:/timeline"; - uri << "?containerKey=" << Plexservice::encode(pVid ? pVid->m_sKey : "/library/metadata/900000"); - uri << "&key=" << Plexservice::encode(pVid ? pVid->m_sKey : "/library/metadata/900000"); - uri << "&ratingKey=" << (pVid ? pVid->m_iRatingKey : 900000); - uri << "&state="; - if (m_pStatus->PlayerStopped) uri << "stopped"; - else if(!play) uri << "paused"; - else uri << "playing"; - uri << "&time=" << current; - uri << "&duration=" << total; - - Poco::Net::HTTPRequest Request(Poco::Net::HTTPRequest::HTTP_GET, uri.str(), Poco::Net::HTTPMessage::HTTP_1_1); + queryMap["containerKey"] = pVid ? pVid->m_sKey : "/library/metadata/900000"; + queryMap["key"] = pVid ? pVid->m_sKey : "/library/metadata/900000"; + queryMap["ratingKey"] = pVid ? std::to_string(pVid->m_iRatingKey) : "900000"; - PlexHelper::AddHttpHeader(Request); - - Poco::Net::HTTPClientSession session(server, port); + if (m_pStatus->PlayerStopped) queryMap["state"] = "stopped"; + else if(!play) queryMap["state"] = "paused"; + else queryMap["state"] = "playing"; + + queryMap["time"] = std::to_string(current); + queryMap["duration"] = std::to_string(total); - session.sendRequest(Request); + Poco::Net::HTTPResponse response; - session.receiveResponse(response); + pServer->MakeRequest(response, "/:/timeline", queryMap); + if(m_pStatus->PlayerStopped) { m_bStoppedSent = true; |