Changed search to retry automatically couple of times before failing.
[jenirok] / src / common / mobil1881.cpp
index 1bd0c3a..a51d293 100644 (file)
@@ -95,7 +95,6 @@ void Mobil1881::handleHttpError(int id)
         if(pendingSearches_.at(i) && pendingSearches_.at(i)->searchIds.find(id) !=
             pendingSearches_.at(i)->searchIds.end())
         {
-
             setError(Source::CONNECTION_FAILURE, http_.errorString());
             emitRequestFinished(pendingSearches_.at(i), true, i);
             break;
@@ -107,6 +106,14 @@ void Mobil1881::addNumbers(SearchData* searchData,
                            QString const& data,
                            int index)
 {
+    if(data.isEmpty())
+    {
+        qDebug() << "Server returned no data";
+        setError(CONNECTION_FAILURE, "Server returned no data");
+        emitRequestFinished(searchData, true, index);
+        return;
+    }
+
     if(data.indexOf("<b>Last ned vCard</b>") > 0)
     {
         addOnlyNumber(searchData, data, index);
@@ -114,10 +121,10 @@ void Mobil1881::addNumbers(SearchData* searchData,
     }
 
     int pos = 0;
-    QRegExp rx("<td valign=\"top\" width=\"99%\">(.*)</td>");
-    QRegExp name("<div class=\"srln\">(.*)</div>");
-    QRegExp address("<div class=\"srla\">(.*),<br/>(.*)</div>");
-    QRegExp number("<div class=\"srlp\">(.*)</div>");
+    static QRegExp rx("<td valign=\"top\" width=\"99%\">(.*)</td>");
+    static QRegExp name("<div class=\"srln\">(.*)</div>");
+    static QRegExp address("<div class=\"srla\">(.*),<br/>(.*)</div>");
+    static QRegExp number("<div class=\"srlp\">(.*)</div>");
     rx.setMinimal(true);
     name.setMinimal(true);
     address.setMinimal(true);
@@ -171,6 +178,11 @@ void Mobil1881::addNumbers(SearchData* searchData,
     if(searchData->results.size() >= maxResults)
     {
         emitRequestFinished(searchData, false, index);
+
+        if(searchData->totalSearches > 1)
+        {
+            abort();
+        }
     }
     else
     {
@@ -192,9 +204,9 @@ void Mobil1881::addOnlyNumber(SearchData* searchData,
                               QString const& data,
                               int index)
 {
-    QRegExp name("<div class=\"srsln\">(.*)</div>");
-    QRegExp number("class=\"srlttxt\"><b>(.*)</b>");
-    QRegExp address("class=\"srlttxt\"><span>(.*),<br/>(.*)</span>");
+    static QRegExp name("<div class=\"srsln\">(.*)</div>");
+    static QRegExp number("class=\"srlttxt\"><b>(.*)</b>");
+    static QRegExp address("class=\"srlttxt\"><span>(.*),<br/>(.*)</span>");
     name.setMinimal(true);
     number.setMinimal(true);
     address.setMinimal(true);
@@ -248,6 +260,7 @@ bool Mobil1881::formatResult(QString& name, QString& number,
     city = htmlEntityDecode(city);
     result.street = street.trimmed();
     result.city = city.trimmed();
+    result.country = "Norway";
 
     if(!result.name.isEmpty() && (!getFindNumber() || !result.number.isEmpty()))
     {