diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp | 2 | ||||
-rw-r--r-- | plugins/provider/fileProvider/fileProvider.cpp | 72 | ||||
-rw-r--r-- | plugins/provider/recProvider/recProvider.cpp | 15 | ||||
-rw-r--r-- | plugins/provider/vdrProvider/vdrProvider.cpp | 45 |
4 files changed, 39 insertions, 95 deletions
diff --git a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp index 0204b4e..6820481 100644 --- a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp +++ b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp @@ -122,7 +122,7 @@ public: } } - virtual bool GetMetadata(const string& uri, cMetadata& metadata){ + virtual bool GetMetadata(const string& uri, cMetadata& metadata, cUPnPResourceProvider*){ if (uri.find("vdr",0) == 0){ return GetChannelMetadata(uri, metadata); } diff --git a/plugins/provider/fileProvider/fileProvider.cpp b/plugins/provider/fileProvider/fileProvider.cpp index a60d772..9121d90 100644 --- a/plugins/provider/fileProvider/fileProvider.cpp +++ b/plugins/provider/fileProvider/fileProvider.cpp @@ -6,11 +6,7 @@ */ #include <plugin.h> -#include <server.h> -#include <fstream> -#include <sstream> #include <tools/string.h> -#include <vdr/plugin.h> #include <pwd.h> #include <unistd.h> @@ -24,47 +20,12 @@ private: StringMap directoryMap; FILE* fileFD; - bool IsRootContainer(const string& uri){ - if(uri.find(GetRootContainer(), 0) != 0){ - isyslog("RecProvider\tUri does not contain the root."); - return false; - } else { - return true; - } - } - - bool Load(const string& filename) - { - if (access(filename.c_str(), F_OK) == 0) { - isyslog("loading %s", filename.c_str()); - ifstream file; - file.open(filename.c_str(), ifstream::in); - if(!file.is_open()) - return false; - string line; int pos; - while(getline(file, line)){ - if(line.length() > 0 && line[0] != '#'){ - if((pos = line.find_first_of(':')) != string::npos){ - directoryMap[tools::Trim(line.substr(0,pos))] = tools::Trim(line.substr(pos+1)); - } - } - } - return true; - } - return false; - } - - string GetFile(const string& uri){ - string mountPoint = uri.substr(7, uri.find_first_of('/',7) - 7); - - string file; - if(!mountPoint.empty() && !directoryMap[mountPoint].empty()){ - file = directoryMap[mountPoint]; - if(uri.find_first_of('/', 7) != string::npos) - file += uri.substr(uri.find_first_of('/',7)); + bool Parse(const string& line){ + int pos; + if((pos = line.find_first_of(':')) != string::npos){ + directoryMap[tools::Trim(line.substr(0,pos))] = tools::Trim(line.substr(pos+1)); } - - return file; + return true; } bool GetFileStat(const string& uri, struct stat& fileStat){ @@ -82,9 +43,7 @@ public: FileProvider() : fileFD(NULL) { - stringstream file; - file << cMediaServer::GetInstance()->GetConfigDirectory() << "/directories.conf"; - Load(file.str()); + LoadConfigFile("directories.conf"); } virtual string ProvidesSchema() { return "file"; } @@ -120,6 +79,8 @@ public: virtual StringList GetContainerEntries(const string& uri) { StringList list; + if(!HasRootContainer(uri)) return list; + DIR* dirHandle; struct dirent* dirEntry; @@ -149,7 +110,7 @@ public: } virtual bool GetMetadata(const string& uri, cMetadata& metadata){ - if(!IsRootContainer(uri)) return false; + if(!HasRootContainer(uri)) return false; if(!cUPnPResourceProvider::GetMetadata(uri, metadata)) return false; @@ -173,6 +134,21 @@ public: return true; } + virtual string GetFile(const string& uri){ + if(!HasRootContainer(uri)) return string(); + + string mountPoint = uri.substr(7, uri.find_first_of('/',7) - 7); + + string file; + if(!mountPoint.empty() && !directoryMap[mountPoint].empty()){ + file = directoryMap[mountPoint]; + if(uri.find_first_of('/', 7) != string::npos) + file += uri.substr(uri.find_first_of('/',7)); + } + + return file; + } + virtual bool Open(const string& uri) { if(fileFD) Close(); diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp index c8273fd..41ca849 100644 --- a/plugins/provider/recProvider/recProvider.cpp +++ b/plugins/provider/recProvider/recProvider.cpp @@ -24,15 +24,6 @@ namespace upnp { class RecProvider : public cUPnPResourceProvider { private: - bool IsRootContainer(const string& uri){ - if(uri.find(GetRootContainer(), 0) != 0){ - isyslog("RecProvider\tUri does not contain the root."); - return false; - } else { - return true; - } - } - bool GetFileStat(const string& uri, struct stat& fileStat){ stringstream filename; filename << VideoDirectory << "/" << uri.substr(6); @@ -111,7 +102,7 @@ public: } virtual StringList GetContainerEntries(const string& u){ - if(!IsRootContainer(u)) return StringList(); + if(!HasRootContainer(u)) return StringList(); StringList list; string videoDir(VideoDirectory), fs, uri = u.substr(6); @@ -169,7 +160,7 @@ public: } virtual bool GetMetadata(const string& uri, cMetadata& metadata){ - if(!IsRootContainer(uri)) return false; + if(!HasRootContainer(uri)) return false; if(!cUPnPResourceProvider::GetMetadata(uri, metadata)) return false; @@ -204,6 +195,8 @@ public: } virtual bool Open(const string& uri){ + if(!HasRootContainer(uri)) return false; + filename = string(VideoDirectory) + "/" + uri.substr(6); currentFileNumber = 1; return ScanFiles(); diff --git a/plugins/provider/vdrProvider/vdrProvider.cpp b/plugins/provider/vdrProvider/vdrProvider.cpp index c9b9a95..6b4c1b1 100644 --- a/plugins/provider/vdrProvider/vdrProvider.cpp +++ b/plugins/provider/vdrProvider/vdrProvider.cpp @@ -13,7 +13,6 @@ #include <vdr/plugin.h> #include <string> #include <sstream> -#include <fstream> #include <algorithm> #include <tools.h> #include <pwd.h> @@ -29,39 +28,17 @@ private: int from; int to; - bool Load(const string& filename) + bool Parse(const string& line) { - if (access(filename.c_str(), F_OK) == 0) { - isyslog("loading %s", filename.c_str()); - ifstream file; - file.open(filename.c_str(), ifstream::in); - if(!file.is_open()) - return false; - string line; int pos; - while(getline(file, line)){ - if(line.length() > 0 && line[0] != '#'){ - if((pos = line.find_first_of('-')) != string::npos){ - from = atoi(line.substr(0, pos).c_str()); - to = atoi(line.substr(pos+1).c_str()); - break; - } - } - } - if(to == 0) to = INT_MAX; + int pos = 0; + if((pos = line.find_first_of('-')) != string::npos){ + from = atoi(line.substr(0, pos).c_str()); + to = atoi(line.substr(pos+1).c_str()); return true; } return false; } - bool IsRootContainer(const string& uri){ - if(uri.find(GetRootContainer(), 0) != 0){ - isyslog("VdrProvider\tUri does not contain the root."); - return false; - } else { - return true; - } - } - int GetGroupByName(string name) { if(name.empty()) return -1; @@ -83,9 +60,7 @@ public: , from(0) , to(INT_MAX) { - stringstream file; - file << cMediaServer::GetInstance()->GetConfigDirectory() << "/vdrProvider.conf"; - Load(file.str()); + LoadConfigFile("vdrProvider.conf"); } virtual ~VdrProvider(){ @@ -99,7 +74,7 @@ public: } virtual StringList GetContainerEntries(const string& uri){ - if(!IsRootContainer(uri)) return StringList(); + if(!HasRootContainer(uri)) return StringList(); StringList list; int index; @@ -143,14 +118,14 @@ public: } virtual long GetContainerUpdateId(const string& uri){ - if(!IsRootContainer(uri)) return 0; + if(!HasRootContainer(uri)) return 0; // We now have containers. However, they do not support containerUpdateIDs separately. return (long)lastModified; } virtual bool GetMetadata(const string& uri, cMetadata& metadata){ - if(!IsRootContainer(uri)) return false; + if(!HasRootContainer(uri)) return false; if(!cUPnPResourceProvider::GetMetadata(uri, metadata)) return false; @@ -179,7 +154,7 @@ public: } virtual string GetHTTPUri(const string& uri, const string& currentIP, const string& pInfo){ - if(!IsRootContainer(uri)) return string(); + if(!HasRootContainer(uri)) return string(); int port = 3000; |