Пример #1
0
Asset::~Asset() 
{ 
  if (getLoaded())
  {
    unload();
  }
}
Пример #2
0
void ZimServer::requestHandler(QHttpRequest *req, QHttpResponse *resp)
{
    //qDebug() << "requestHandler, URL:" << req->url().toString();

    if (!getLoaded()) {
        qWarning() << "ZIM file not loaded!";
        resp->setHeader("Content-Length", "0");
        resp->setHeader("Connection", "close");
        resp->writeHead(500);
        resp->end("");
        return;
    }

    QStringList pathlist = req->url().path().split("/");
    if (pathlist.size() < 3) {
        qWarning() << "Invalid Url!";
        resp->setHeader("Content-Length", "0");
        resp->setHeader("Connection", "close");
        resp->writeHead(404);
        resp->end("");
        return;
    }

    QString zimUrl = QStringList(pathlist.mid(1,pathlist.size()-1)).join("/");

    zim::File::const_iterator it = zimfile->find(zimUrl.toStdString());

    if (it == zimfile->end()) {
        qWarning() << "Article not found!";
        resp->setHeader("Content-Length", "0");
        resp->setHeader("Connection", "close");
        resp->writeHead(404);
        resp->end("");
        return;
    }

    if (it->isRedirect()) {
        resp->setHeader("Content-Length", "0");
        resp->setHeader("Location", QString::fromStdString(it->getRedirectArticle().getUrl()).toLatin1());
        resp->setHeader("Connection", "close");
        resp->writeHead(302);
        resp->end("");
        return;
    }

    zim::Blob zimblob = it->getData();
    QByteArray data(zimblob.data(), zimblob.size());

    resp->setHeader("Content-Length", QString::number(data.size()));
    resp->setHeader("Content-Type", QString::fromStdString(it->getMimeType()).toLatin1());
    resp->setHeader("Connection", "close");
    resp->writeHead(200);
    resp->end(data);
}
Пример #3
0
bool ObjectBuilderAsset::load()
{
  ASSERT(getLoaded() == false, "Attempt to load already loaded asset!");
  ASSERT(getPath() != NULL, "Attempt to load an asset with no path!");
   
  if (!getLoaded() && getPath())
  {
    LoaderSystem* loaderSystem = getSystem<LoaderSystem>();
    if (loaderSystem)
    {
      ObjectHandle<ObjectBuilder> builder = loaderSystem->load(getPath());
      if (builder)
      {
        setBuilder(builder);
        setLoaded(true);
      }
    }
  
  }
  
  return getLoaded();
}
Пример #4
0
void ZimServer::findTitle(const QString &title)
{
    if (!getLoaded()) {
        qWarning() << "ZIM file not loaded!";
        return;
    }

    Settings* s = Settings::instance();

    s->articleModel->clear();

    if (title.trimmed().isEmpty())
        return;

    zim::File::const_iterator it = zimfile->findByTitle('A', title.toStdString());

    for (int i = 0; it != zimfile->end() && i < 10; ++it, ++i) {
        s->articleModel->appendRow(new ArticleItem(QString::number(i), QString::fromStdString(it->getTitle()), getLocalUrl(QString::fromStdString(it->getLongUrl()))));
        ++i;
    }

}