diff options
author | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2007-04-26 18:35:20 +0000 |
---|---|---|
committer | Christian Wieninger <cwieninger (at) gmx (dot) de> | 2007-04-26 18:35:20 +0000 |
commit | ac0c09dbc8775e0090d2d98a99b67b5c9b703d4f (patch) | |
tree | 835d765dfa82c6fab794317df516e29900434768 /epgsearch.cpp | |
parent | cfb6515c7fd201d9c239cfb03152be8fdcf7d084 (diff) | |
download | vdr-plugin-live-ac0c09dbc8775e0090d2d98a99b67b5c9b703d4f.tar.gz vdr-plugin-live-ac0c09dbc8775e0090d2d98a99b67b5c9b703d4f.tar.bz2 |
- extended searchresults with md5 methods
Diffstat (limited to 'epgsearch.cpp')
-rw-r--r-- | epgsearch.cpp | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/epgsearch.cpp b/epgsearch.cpp index 9ff5760..4d7d3fe 100644 --- a/epgsearch.cpp +++ b/epgsearch.cpp @@ -3,6 +3,7 @@ #include <vdr/channels.h> #include <vdr/plugin.h> #include <iomanip> +#include <openssl/md5.h> #include "epgsearch/services.h" #include "epgsearch.h" #include "exception.h" @@ -485,7 +486,9 @@ SearchResult::SearchResult( string const& data ) } } -SearchResults::SearchResults(int id) +std::set<std::string> SearchResults::querySet; + +void SearchResults::GetByID(int id) { Epgsearch_services_v1_0 service; if ( cPluginManager::CallFirstService("Epgsearch-services-v1.0", &service) == 0 ) @@ -496,4 +499,53 @@ SearchResults::SearchResults(int id) m_list.sort(); } +void SearchResults::GetByQuery(std::string const& query) +{ + Epgsearch_services_v1_0 service; + if ( cPluginManager::CallFirstService("Epgsearch-services-v1.0", &service) == 0 ) + throw HtmlError( tr("No searchtimers available") ); + + list< string > list = service.handler->QuerySearch(query); + m_list.assign( list.begin(), list.end() ); + m_list.sort(); +} + +std::string SearchResults::MD5Hash(std::string const& query) +{ + unsigned char md5[MD5_DIGEST_LENGTH]; + MD5(reinterpret_cast<const unsigned char*>(query.c_str()), query.size(), md5); + + ostringstream hashStr; + hashStr << hex; + for (size_t i = 0; i < MD5_DIGEST_LENGTH; i++) + hashStr << (0 + md5[i]); + + return hashStr.str(); +} + +std::string SearchResults::AddQuery(std::string const& query) +{ + querySet.insert(query); + return MD5Hash(query); +} + +std::string SearchResults::PopQuery(std::string const& md5) +{ + std::string query; + if (!md5.empty()) + { + std::set<std::string>::iterator it; + for (it = querySet.begin(); it != querySet.end(); it++) + { + if (md5 == MD5Hash(*it)) + { + query = *it; + querySet.erase(it); + break; + } + } + } + return query; +} + } // namespace vdrlive |