Exemplo n.º 1
1
void SM_QDropbox::requestDelta(QString cursor, QString path_prefix, bool blocking)
{
    clearError();

    timestamp = QDateTime::currentMSecsSinceEpoch()/1000;

    QUrl url;
    url.setUrl(apiurl.toString());

    QUrlQuery urlQuery;
    urlQuery.addQueryItem("oauth_consumer_key",_appKey);
    urlQuery.addQueryItem("oauth_nonce", nonce);
    urlQuery.addQueryItem("oauth_signature_method", signatureMethodString());
    urlQuery.addQueryItem("oauth_timestamp", QString::number(timestamp));
    urlQuery.addQueryItem("oauth_token", oauthToken);
    urlQuery.addQueryItem("oauth_version", _version);
    if(cursor.length() > 0)
    {
        urlQuery.addQueryItem("cursor", cursor);
    }
    if(path_prefix.length() > 0)
    {
        urlQuery.addQueryItem("path_prefix", path_prefix);
    }

    QString signature = oAuthSign(url);
    urlQuery.addQueryItem("oauth_signature", QUrl::toPercentEncoding(signature));

    url.setQuery(urlQuery);
    url.setPath(QString("/%1/delta").arg(_version.left(1)));

    QString dataString = url.toString(QUrl::RemoveScheme|QUrl::RemoveAuthority|
                                      QUrl::RemovePath).mid(1);
#ifdef SM_QTDROPBOX_DEBUG
    qDebug() << "dataString = " << dataString << endl;
#endif

    QByteArray postData;
    postData.append(dataString.toUtf8());

    QUrl xQuery(url.toString(QUrl::RemoveQuery));
    int reqnr = sendRequest(xQuery, "POST", postData);

    if(blocking)
    {
        requestMap[reqnr].type = SM_DROPBOX_REQ_BDELTA;
        startEventLoop();
    }
    else
        requestMap[reqnr].type = SM_DROPBOX_REQ_DELTA;
    return;
}
Exemplo n.º 2
0
int SM_QDropbox::requestAccessToken(bool blocking)
{
    clearError();

    QUrl url;
    url.setUrl(apiurl.toString());

    QUrlQuery query;
    query.addQueryItem("oauth_consumer_key",_appKey);
    query.addQueryItem("oauth_nonce", nonce);
    query.addQueryItem("oauth_signature_method", signatureMethodString());
    query.addQueryItem("oauth_timestamp", QString::number(timestamp));
    query.addQueryItem("oauth_token", oauthToken);
    query.addQueryItem("oauth_version", _version);

    url.setPath(QString("/%1/oauth/access_token").
                arg(_version.left(1)));

#ifdef SM_QTDROPBOX_DEBUG
    qDebug() << "requestToken = " << query.queryItemValue("oauth_token");
#endif

    QString signature = oAuthSign(url);
    query.addQueryItem("oauth_signature", QUrl::toPercentEncoding(signature));

    url.setQuery(query);

    QString dataString = url.toString(QUrl::RemoveScheme|QUrl::RemoveAuthority|
                                      QUrl::RemovePath).mid(1);
#ifdef SM_QTDROPBOX_DEBUG
    qDebug() << "dataString = " << dataString << endl;
#endif

    QByteArray postData;
    postData.append(dataString.toUtf8());

    QUrl xQuery(url.toString(QUrl::RemoveQuery));
    int reqnr = sendRequest(xQuery, "POST", postData);

    if(blocking)
    {
        requestMap[reqnr].type = SM_DROPBOX_REQ_BACCTOK;
        startEventLoop();
    }
    else
        requestMap[reqnr].type = SM_DROPBOX_REQ_ACCTOKN;

    return reqnr;
}
Exemplo n.º 3
0
QStringList ExternalPlaylist::executeXmlQuery(const QString& filePath, const QString& xPath, const QStringList& parameters){

  QStringList results;

  // initialise Xerces-C and XQilla using XQillaPlatformUtils
  try{
    XQillaPlatformUtils::initialize();
  }catch (const xercesc_3_1::XMLException& eXerces){
    qDebug("Xerces exception message: %s", UTF8(eXerces.getMessage()));
    return results;
  }
  // get the XQilla DOMImplementation object
  xercesc_3_1::DOMImplementation *xqillaImplementation = xercesc_3_1::DOMImplementationRegistry::getDOMImplementation(X("XPath2 3.0"));
  try{
    // create a DOMLSParser object
    AutoDelete<xercesc_3_1::DOMLSParser> parser(xqillaImplementation->createLSParser(xercesc_3_1::DOMImplementationLS::MODE_SYNCHRONOUS, 0));
    // disable remote DTD resolution
    parser->getDomConfig()->setParameter(xercesc_3_1::XMLUni::fgXercesLoadExternalDTD, false);
    // parse the XML document
    xercesc_3_1::DOMDocument *document = parser->parseURI(X(filePath.toLocal8Bit().constData()));
    if(document == 0)
      throw XQillaException(99,X("No XML document found"));
    // determine whether to use lightweight query model
    if(parameters.isEmpty()){
      // parse XPath
      AutoRelease<xercesc_3_1::DOMXPathExpression> expression(document->createExpression(X(xPath.toLocal8Bit().constData()), 0));
      // execute query
      AutoRelease<xercesc_3_1::DOMXPathResult> result(expression->evaluate(document, xercesc_3_1::DOMXPathResult::ITERATOR_RESULT_TYPE, 0));
      // iterate over results
      while(result->iterateNext())
        results.push_back(QString::fromUtf8(UTF8(result->getNodeValue()->getTextContent())));
    }else{
      // set up a simple API query and context to evaluate the parsed document
      XQilla xqilla;
      AutoDelete<XQQuery> xQuery(xqilla.parse(X(xPath.toLocal8Bit().constData())));
      AutoDelete<DynamicContext> xQueryContext(xQuery->createDynamicContext());
      // grab document from xerces API
      XercesConfiguration xc;
      Node::Ptr node = xc.createNode(document, xQueryContext.get());
      // prepare context
      if(node && node->isNode()){
        xQueryContext->setContextItem(node);
        xQueryContext->setContextPosition(1);
        xQueryContext->setContextSize(1);
        // bind variables
        for(int i=0; i<(signed)parameters.size(); i += 2){
          if(i + 1 >= (signed)parameters.size())
            break;
          Item::Ptr value = xQueryContext->getItemFactory()->createString(X(parameters[i+1].toLocal8Bit().constData()), xQueryContext.get());
          xQueryContext->setExternalVariable(X(parameters[i].toLocal8Bit().constData()), value);
        }
      }
      // execute query
      Result xQueryResults = xQuery->execute(xQueryContext);
      // iterate over results
      Item::Ptr item;
      while(item = xQueryResults->next(xQueryContext)) {
        results.push_back(QString::fromUtf8(UTF8(item->asString(xQueryContext))));
      }
    }
  }catch(XQillaException &e){
    // DOM3 (xerces) API
    qDebug("XQillaException: %s", UTF8(e.getString()));
  }catch(XQException &e){
    // Simple API
    qDebug("XQillaException: %s", UTF8(e.getError()));
  }catch(...){
    qDebug("Unspecified exception with XQilla");
  }

  // Terminate Xerces-C and XQilla using XQillaPlatformUtils
  XQillaPlatformUtils::terminate();
  return results;
}