summaryrefslogtreecommitdiff
path: root/epgsearch.cpp
diff options
context:
space:
mode:
authorChristian Wieninger <cwieninger (at) gmx (dot) de>2007-04-26 18:35:20 +0000
committerChristian Wieninger <cwieninger (at) gmx (dot) de>2007-04-26 18:35:20 +0000
commitac0c09dbc8775e0090d2d98a99b67b5c9b703d4f (patch)
tree835d765dfa82c6fab794317df516e29900434768 /epgsearch.cpp
parentcfb6515c7fd201d9c239cfb03152be8fdcf7d084 (diff)
downloadvdr-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.cpp54
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