26#include "mythwsstream.h"
28#define MYTH_API_VERSION_MIN_RANKING 0x00020000
29#define MYTH_API_VERSION_MAX_RANKING 0x0005FFFF
63 WSAPI(
const std::string& server,
unsigned port,
const std::string& securityPin);
66 WSAPI& WithAuthorization(
const std::string& user,
const std::string& password);
67 WSAPI& WithSSL(
bool yesno);
69 unsigned CheckService();
71 void InvalidateService();
72 std::string GetServerHostName();
73 std::string GetBaseURL();
74 VersionPtr GetVersion();
75 std::string ResolveHostName(
const std::string& hostname);
86 SettingPtr
GetHostSetting(
const std::string& key,
const std::string& hostname)
89 if (wsv.ranking >= 0x00050000)
return GetSetting5_0(key, hostname);
90 if (wsv.ranking >= 0x00020000)
return GetSetting2_0(key, hostname);
97 SettingPtr
GetSetting(
const std::string& key,
bool myhost);
105 if (wsv.ranking >= 0x00050000)
return GetSettings5_0(hostname);
106 if (wsv.ranking >= 0x00020000)
return GetSettings2_0(hostname);
107 return SettingMapPtr(
new SettingMap);
118 bool PutSetting(
const std::string& key,
const std::string& value,
bool myhost)
121 if (wsv.ranking >= 0x00020000)
return PutSetting2_0(key, value, myhost);
131 if (wsv.ranking >= 0x00010004)
return GetCaptureCardList1_4();
132 return CaptureCardListPtr(
new CaptureCardList);
141 if (wsv.ranking >= 0x00010002)
return GetVideoSourceList1_2();
142 return VideoSourceListPtr(
new VideoSourceList);
151 if (wsv.ranking >= 0x00010005)
return GetChannelList1_5(sourceid, onlyVisible);
152 if (wsv.ranking >= 0x00010002)
return GetChannelList1_2(sourceid, onlyVisible);
153 return ChannelListPtr(
new ChannelList);
162 if (wsv.ranking >= 0x00010002)
return GetChannel1_2(chanid);
172 if (wsv.ranking >= 0x00020002)
return GetProgramList2_2(chanid, starttime, endtime);
173 if (wsv.ranking >= 0x00010000)
return GetProgramGuide1_0(chanid, starttime, endtime);
174 return ProgramMapPtr(
new ProgramMap);
183 if (wsv.ranking >= 0x00020002)
return GetProgramGuide2_2(starttime, endtime);
184 if (wsv.ranking >= 0x00010000)
return GetProgramGuide1_0(starttime, endtime);
185 return std::map<uint32_t, ProgramMapPtr>();
194 if (wsv.ranking >= 0x00010005)
return GetRecordedList1_5(n, descending);
195 return ProgramListPtr(
new ProgramList);
204 if (wsv.ranking >= 0x00010005)
return GetRecorded1_5(chanid, recstartts);
214 if (wsv.ranking >= 0x00060000)
return GetRecorded6_0(recordedid);
224 if (wsv.ranking >= 0x00040005)
return UpdateRecordedWatchedStatus4_5(chanid, recstartts, watched);
234 if (wsv.ranking >= 0x00060000)
return UpdateRecordedWatchedStatus6_0(recordedid, watched);
241 bool DeleteRecording(uint32_t chanid, time_t recstartts,
bool forceDelete =
false,
bool allowRerecord =
false)
244 if (wsv.ranking >= 0x00020001)
return DeleteRecording2_1(chanid, recstartts, forceDelete, allowRerecord);
251 bool DeleteRecording(uint32_t recordedid,
bool forceDelete =
false,
bool allowRerecord =
false)
254 if (wsv.ranking >= 0x00060000)
return DeleteRecording6_0(recordedid, forceDelete, allowRerecord);
264 if (wsv.ranking >= 0x00020001)
return UnDeleteRecording2_1(chanid, recstartts);
274 if (wsv.ranking >= 0x00060000)
return UnDeleteRecording6_0(recordedid);
284 if (wsv.ranking >= 0x00010005)
return GetRecordScheduleList1_5();
285 return RecordScheduleListPtr(
new RecordScheduleList);
294 if (wsv.ranking >= 0x00010005)
return GetRecordSchedule1_5(recordid);
295 return RecordSchedulePtr();
304 if (wsv.ranking >= 0x00010007)
return AddRecordSchedule1_7(record);
305 if (wsv.ranking >= 0x00010005)
return AddRecordSchedule1_5(record);
315 if (wsv.ranking >= 0x00010007)
return UpdateRecordSchedule1_7(record);
325 if (wsv.ranking >= 0x00010005)
return DisableRecordSchedule1_5(recordid);
335 if (wsv.ranking >= 0x00010005)
return EnableRecordSchedule1_5(recordid);
345 if (wsv.ranking >= 0x00010005)
return RemoveRecordSchedule1_5(recordid);
355 if (wsv.ranking >= 0x00020002)
return GetUpcomingList2_2();
356 if (wsv.ranking >= 0x00010005)
return GetUpcomingList1_5();
357 return ProgramListPtr(
new ProgramList);
366 if (wsv.ranking >= 0x00010005)
return GetConflictList1_5();
367 return ProgramListPtr(
new ProgramList);
376 if (wsv.ranking >= 0x00010005)
return GetExpiringList1_5();
377 return ProgramListPtr(
new ProgramList);
386 if (wsv.ranking >= 0x00010005)
return GetRecGroupList1_5();
387 return StringListPtr(
new StringList);
393 WSStreamPtr
GetFile(
const std::string& filename,
const std::string& sgname)
396 if (wsv.ranking >= 0x00010020)
return GetFile1_32(filename, sgname);
397 return WSStreamPtr();
403 WSStreamPtr
GetChannelIcon(uint32_t chanid,
unsigned width = 0,
unsigned height = 0)
406 if (wsv.ranking >= 0x00010020)
return GetChannelIcon1_32(chanid, width, height);
407 return WSStreamPtr();
416 if (wsv.ranking >= 0x00010020)
return GetChannelIconUrl1_32(chanid, width, height);
423 WSStreamPtr
GetPreviewImage(uint32_t chanid, time_t recstartts,
unsigned width = 0,
unsigned height = 0)
426 if (wsv.ranking >= 0x00010020)
return GetPreviewImage1_32(chanid, recstartts, width, height);
427 return WSStreamPtr();
433 std::string
GetPreviewImageUrl(uint32_t chanid, time_t recstartts,
unsigned width = 0,
unsigned height = 0)
436 if (wsv.ranking >= 0x00010020)
return GetPreviewImageUrl1_32(chanid, recstartts, width, height);
443 WSStreamPtr
GetRecordingArtwork(
const std::string& type,
const std::string& inetref, uint16_t season,
unsigned width = 0,
unsigned height = 0)
446 if (wsv.ranking >= 0x00010020)
return GetRecordingArtwork1_32(type, inetref, season, width, height);
447 return WSStreamPtr();
453 std::string
GetRecordingArtworkUrl(
const std::string& type,
const std::string& inetref, uint16_t season,
unsigned width = 0,
unsigned height = 0)
456 if (wsv.ranking >= 0x00010020)
return GetRecordingArtworkUrl1_32(type, inetref, season, width, height);
466 if (wsv.ranking >= 0x00010020)
return GetRecordingArtworkList1_32(chanid, recstartts);
467 return ArtworkListPtr(
new ArtworkList);
479 if (wsv.ranking >= 0x00060001)
return GetRecordedCommBreak6_1(recordedid, unit);
480 return MarkListPtr(
new MarkList);
492 if (wsv.ranking >= 0x00060001)
return GetRecordedCutList6_1(recordedid, unit);
493 return MarkListPtr(
new MarkList);
506 if (wsv.ranking >= 0x00060002)
return SetSavedBookmark6_2(recordedid, unit, value);
520 if (wsv.ranking >= 0x00060002)
return GetSavedBookmark6_2(recordedid, unit);
526 std::string m_server;
529 std::string m_securityPin;
530 std::string m_authUser;
531 std::string m_authPassword;
532 std::string m_authToken;
535 std::string m_serverHostName;
537 std::map<std::string, std::string> m_namedCache;
546 WSRequest * m_request;
550 WSRequest& Request();
551 WSResponse * Execute(
int maxRedirs,
bool trustedLocation,
bool followAny);
552 WSResponse * Execute() {
return Execute(1,
true,
false); }
557 bool CheckServerHostName2_0();
558 bool CheckVersion2_0();
560 SettingPtr GetSetting2_0(
const std::string& key,
const std::string& hostname);
561 SettingPtr GetSetting5_0(
const std::string& key,
const std::string& hostname);
562 SettingMapPtr GetSettings2_0(
const std::string& hostname);
563 SettingMapPtr GetSettings5_0(
const std::string& hostname);
564 bool PutSetting2_0(
const std::string& key,
const std::string& value,
bool myhost);
566 CaptureCardListPtr GetCaptureCardList1_4();
568 VideoSourceListPtr GetVideoSourceList1_2();
569 ChannelListPtr GetChannelList1_2(uint32_t sourceid,
bool onlyVisible);
570 ChannelListPtr GetChannelList1_5(uint32_t sourceid,
bool onlyVisible);
571 ChannelPtr GetChannel1_2(uint32_t chanid);
573 std::map<uint32_t, ProgramMapPtr> GetProgramGuide1_0(time_t starttime, time_t endtime);
574 ProgramMapPtr GetProgramGuide1_0(uint32_t chanid, time_t starttime, time_t endtime);
575 std::map<uint32_t, ProgramMapPtr> GetProgramGuide2_2(time_t starttime, time_t endtime);
576 ProgramMapPtr GetProgramList2_2(uint32_t chanid, time_t starttime, time_t endtime);
578 ProgramListPtr GetRecordedList1_5(
unsigned n,
bool descending);
579 ProgramPtr GetRecorded1_5(uint32_t chanid, time_t recstartts);
580 ProgramPtr GetRecorded6_0(uint32_t recordedid);
581 bool DeleteRecording2_1(uint32_t chanid, time_t recstartts,
bool forceDelete,
bool allowRerecord);
582 bool DeleteRecording6_0(uint32_t recordedid,
bool forceDelete,
bool allowRerecord);
583 bool UnDeleteRecording2_1(uint32_t chanid, time_t recstartts);
584 bool UnDeleteRecording6_0(uint32_t recordedid);
585 bool UpdateRecordedWatchedStatus4_5(uint32_t chanid, time_t recstartts,
bool watched);
586 bool UpdateRecordedWatchedStatus6_0(uint32_t recordedid,
bool watched);
587 MarkListPtr GetRecordedCommBreak6_1(uint32_t recordedid,
int unit);
588 MarkListPtr GetRecordedCutList6_1(uint32_t recordedid,
int unit);
589 bool SetSavedBookmark6_2(uint32_t recordedid,
int unit, int64_t value);
590 int64_t GetSavedBookmark6_2(uint32_t recordedid,
int unit);
592 RecordScheduleListPtr GetRecordScheduleList1_5();
593 RecordSchedulePtr GetRecordSchedule1_5(uint32_t recordid);
597 bool DisableRecordSchedule1_5(uint32_t recordid);
598 bool EnableRecordSchedule1_5(uint32_t recordid);
599 bool RemoveRecordSchedule1_5(uint32_t recordid);
600 ProgramListPtr GetUpcomingList1_5();
601 ProgramListPtr GetUpcomingList2_2();
602 ProgramListPtr GetConflictList1_5();
603 ProgramListPtr GetExpiringList1_5();
604 StringListPtr GetRecGroupList1_5();
606 WSStreamPtr GetFile1_32(
const std::string& filename,
const std::string& sgname);
607 WSStreamPtr GetChannelIcon1_32(uint32_t chanid,
unsigned width,
unsigned height);
608 std::string GetChannelIconUrl1_32(uint32_t chanid,
unsigned width,
unsigned height);
609 WSStreamPtr GetPreviewImage1_32(uint32_t chanid, time_t recstartts,
unsigned width,
unsigned height);
610 std::string GetPreviewImageUrl1_32(uint32_t chanid, time_t recstartts,
unsigned width,
unsigned height);
611 WSStreamPtr GetRecordingArtwork1_32(
const std::string& type,
const std::string& inetref, uint16_t season,
unsigned width,
unsigned height);
612 std::string GetRecordingArtworkUrl1_32(
const std::string& type,
const std::string& inetref, uint16_t season,
unsigned width,
unsigned height);
613 ArtworkListPtr GetRecordingArtworkList1_32(uint32_t chanid, time_t recstartts);
bool LoginUser()
GET Myth/LoginUser From v36.
bool PutSetting(const std::string &key, const std::string &value, bool myhost)
POST Myth/PutSetting.
ProgramPtr GetRecorded(uint32_t recordedid)
GET Dvr/GetRecorded.
WSStreamPtr GetFile(const std::string &filename, const std::string &sgname)
GET Content/GetFile.
WSStreamPtr GetRecordingArtwork(const std::string &type, const std::string &inetref, uint16_t season, unsigned width=0, unsigned height=0)
GET Content/GetRecordingArtwork.
WSStreamPtr GetChannelIcon(uint32_t chanid, unsigned width=0, unsigned height=0)
GET Guide/GetChannelIcon.
bool UnDeleteRecording(uint32_t recordedid)
POST Dvr/UnDeleteRecording.
std::map< uint32_t, ProgramMapPtr > GetProgramGuide(time_t starttime, time_t endtime)
GET Guide/GetProgramGuide.
CaptureCardListPtr GetCaptureCardList()
GET Capture/GetCaptureCardList.
SettingPtr GetSetting(const std::string &key, bool myhost)
GET Myth/GetSetting.
RecordSchedulePtr GetRecordSchedule(uint32_t recordid)
GET Dvr/GetRecordSchedule.
ChannelListPtr GetChannelList(uint32_t sourceid, bool onlyVisible=true)
GET Channel/GetChannelInfoList.
std::string GetChannelIconUrl(uint32_t chanid, unsigned width=0, unsigned height=0)
Returns URL for channel icon.
bool DeleteRecording(uint32_t chanid, time_t recstartts, bool forceDelete=false, bool allowRerecord=false)
POST Dvr/DeleteRecording.
std::string GetRecordingArtworkUrl(const std::string &type, const std::string &inetref, uint16_t season, unsigned width=0, unsigned height=0)
Returns URL for recording artwork.
bool RemoveRecordSchedule(uint32_t recordid)
POST Dvr/RemoveRecordSchedule.
ArtworkListPtr GetRecordingArtworkList(uint32_t chanid, time_t recstartts)
GET Content/GetRecordingArtworkList.
WSStreamPtr GetPreviewImage(uint32_t chanid, time_t recstartts, unsigned width=0, unsigned height=0)
GET Content/GetPreviewImage.
bool UpdateRecordedWatchedStatus(uint32_t chanid, time_t recstartts, bool watched)
POST Dvr/UpdateRecordedWatchedStatus.
ProgramMapPtr GetProgramGuide(uint32_t chanid, time_t starttime, time_t endtime)
GET Guide/GetProgramGuide for the given channel.
SettingPtr GetHostSetting(const std::string &key, const std::string &hostname)
GET Myth/GetSetting.
bool DeleteRecording(uint32_t recordedid, bool forceDelete=false, bool allowRerecord=false)
POST Dvr/DeleteRecording.
ProgramListPtr GetRecordedList(unsigned n=0, bool descending=false)
GET Dvr/GetRecordedList.
SettingMapPtr GetSettings(bool myhost)
GET Myth/GetSetting.
ProgramPtr GetRecorded(uint32_t chanid, time_t recstartts)
GET Dvr/GetRecorded.
ProgramListPtr GetUpcomingList()
GET Dvr/GetUpcomingList.
int64_t GetSavedBookmark(uint32_t recordedid, int unit)
GET Dvr/GetSavedBookmark.
MarkListPtr GetRecordedCommBreak(uint32_t recordedid, int unit)
GET Dvr/GetRecordedCommBreak.
ProgramListPtr GetExpiringList()
GET Dvr/GetExpiringList.
StringListPtr GetRecGroupList()
GET Dvr/GetRecGroupList.
std::string GetPreviewImageUrl(uint32_t chanid, time_t recstartts, unsigned width=0, unsigned height=0)
Returns URL for preview image.
VideoSourceListPtr GetVideoSourceList()
GET Channel/GetVideoSourceList.
bool AddRecordSchedule(RecordSchedule &record)
POST Dvr/AddRecordSchedule.
bool UpdateRecordedWatchedStatus(uint32_t recordedid, bool watched)
POST Dvr/UpdateRecordedWatchedStatus.
bool GetServiceVersion(WSServiceId_t id, WSServiceVersion_t &version)
bool DisableRecordSchedule(uint32_t recordid)
POST Dvr/DisableRecordSchedule.
bool UnDeleteRecording(uint32_t chanid, time_t recstartts)
POST Dvr/UnDeleteRecording.
bool SetSavedBookmark(uint32_t recordedid, int unit, int64_t value)
POST Dvr/SetSavedBookmark.
bool EnableRecordSchedule(uint32_t recordid)
POST Dvr/EnableRecordSchedule.
ProgramListPtr GetConflictList()
GET Dvr/GetConflictList.
bool UpdateRecordSchedule(RecordSchedule &record)
POST Dvr/UpdateRecordSchedule.
RecordScheduleListPtr GetRecordScheduleList()
GET Dvr/GetRecordScheduleList.
ChannelPtr GetChannel(uint32_t chanid)
GET Channel/GetChannelInfo.
MarkListPtr GetRecordedCutList(uint32_t recordedid, int unit)
GET Dvr/GetRecordedCutList.
SettingMapPtr GetHostSettings(const std::string &hostname)
GET Myth/GetSetting.
This is the main namespace that encloses all public classes.