#ifndef PLEXSERVICE_H #define PLEXSERVICE_H //#include "plexgdm.h" #include "PlexServer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Config.h" #include "user.h" #include "MediaContainer.h" #ifdef CRYPTOPP #include #include #include #include #include #include #endif namespace plexclient { class Plexservice { public: Plexservice(PlexServer *server); ~Plexservice(); void DisplaySections(); MediaContainer* GetAllSections(); MediaContainer* GetSection(std::string section); void GetAuthDetails(); std::string GetMyPlexToken(); void Authenticate(); //void DiscoverFirstServer(); PlexServer* GetServer(); std::string GetUniversalTranscodeUrl(Video* video); static MediaContainer* GetMediaContainer(std::string fullUrl); protected: std::string encode(std::string message); private: Poco::Mutex m_mutex; // Never Access m_sToken directly! => possible race condition std::string m_sToken; std::string USERAGENT; Poco::Net::HTTPClientSession *m_pPlexSession; PlexServer *pServer; Poco::Net::HTTPClientSession* GetHttpSession(bool createNew = false); Poco::Net::HTTPRequest* CreateRequest(std::string path); #ifdef CRYPTOPP protected: std::string computeHMAC(std::string message); public: std::string GetTranscodeUrl(Video* video); #endif }; } #endif // PLEXSERVICE_H