bool CPlaylistOperations::FillFileItemList(const Value ¶meterObject, CFileItemList &list) { bool found = false; if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_FILE) && parameterObject["playlist"][PLAYLIST_MEMBER_FILE].isString()) { CStdString file = parameterObject["playlist"][PLAYLIST_MEMBER_FILE].asString(); CPlayListPtr playlist = CPlayListPtr(CPlayListFactory::Create(file)); if (playlist && playlist->Load(file)) { for (int i = 0; i < playlist->size(); i++) list.Add((*playlist)[i]); found = true; } } CSingleLock lock(VirtualCriticalSection); if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_VIRTUAL) && parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].isString()) { CStdString id = parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].asString(); CPlayListPtr playlist = VirtualPlaylists[id]; if (playlist) { for (int i = 0; i < playlist->size(); i++) list.Add((*playlist)[i]); found = true; } } return found; }
CPlayListPtr CPlaylistOperations::GetPlaylist(const Value ¶meterObject) { if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_VIRTUAL) && parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].isString()) { CStdString id = parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].asString(); return VirtualPlaylists[id]; } else if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_FILE) && parameterObject["playlist"][PLAYLIST_MEMBER_FILE].isString()) { CStdString file = parameterObject["playlist"][PLAYLIST_MEMBER_FILE].asString(); CPlayListPtr playlist = CPlayListPtr(CPlayListFactory::Create(file)); if (playlist && playlist->Load(file)) return playlist; } return CPlayListPtr(); }
JSON_STATUS CPlaylistOperations::Create(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, Value &result) { if (!(parameterObject.isString() || parameterObject.isNull() || parameterObject.isObject())) return InvalidParams; CStdString file = ""; CStdString id = ""; if (parameterObject.isObject()) { if (parameterObject.isMember(PLAYLIST_MEMBER_FILE) && parameterObject[PLAYLIST_MEMBER_FILE].isString()) file = parameterObject[PLAYLIST_MEMBER_FILE].asString(); if (parameterObject.isMember(PLAYLIST_MEMBER_VIRTUAL) && parameterObject[PLAYLIST_MEMBER_VIRTUAL].isString()) id = parameterObject[PLAYLIST_MEMBER_VIRTUAL].asString(); } CPlayListPtr playlist; if (file.size() > 0) { CPlayListPtr playlist = CPlayListPtr(CPlayListFactory::Create(file)); if (playlist == NULL || !playlist->Load(file)) return playlist == NULL ? InvalidParams : InternalError; } else playlist = CPlayListPtr(new CPlayList()); if (id.size() == 0) { do { id = StringUtils::CreateUUID(); } while (VirtualPlaylists.find(id) != VirtualPlaylists.end()); } CSingleLock lock(VirtualCriticalSection); VirtualPlaylists[id] = playlist; result[PLAYLIST_MEMBER_VIRTUAL] = id; return OK; }