Exemple #1
0
bool FileExporterXSLT::save(QIODevice *iodevice, const QSharedPointer<const Element> element, const File *bibtexfile, QStringList *errorLog)
{
    if (!iodevice->isWritable() && !iodevice->open(QIODevice::WriteOnly)) {
        qCWarning(LOG_KBIBTEX_IO) << "Output device not writable";
        return false;
    }

    m_cancelFlag = false;
    XSLTransform xsltransformer(m_xsltFilename);
    FileExporterXML xmlExporter;

    QBuffer buffer;
    buffer.open(QIODevice::WriteOnly);
    if (xmlExporter.save(&buffer, element, bibtexfile, errorLog)) {
        buffer.close();
        buffer.open(QIODevice::ReadOnly);
        const QString xml = QString::fromUtf8(buffer.readAll().constData());
        buffer.close();

        const QString html = xsltransformer.transform(xml);
        if (!html.isEmpty()) {
            iodevice->write(html.toUtf8());
            iodevice->close();
            return !m_cancelFlag;
        }
    }

    iodevice->close();
    return false;
}
/*!
    Registers the SDP service record \a record for this Bluetooth service
    and returns the service record handle of the newly registered service.
    Returns zero if the registration failed.

    \sa unregisterRecord()
 */
quint32 QBluetoothAbstractService::registerRecord(const QBluetoothSdpRecord &record)
{
    QBuffer buffer;
    buffer.open(QIODevice::ReadWrite);
    QSdpXmlGenerator::generate(record, &buffer);

    buffer.seek(0);
    return m_data->registerRecord(QString::fromUtf8(buffer.readAll()));
}
    qint64 Request::writeData(const char* data, qint64 maxSize)
    {
        if(m_responseState == WaitingForResponseHeaders)
        {
            m_headerBuffer.append(data, maxSize);
            // We need to buffer the headers, so we can use the STATUS header appropriately
            QBuffer buffer;
            buffer.setData(m_headerBuffer);
            buffer.open(QIODevice::ReadOnly);
            buffer.seek(m_headerBufferPosition);
            while(buffer.canReadLine())
            {
                const QByteArray line = buffer.readLine().trimmed();
                if(line.isEmpty())
                {
                    Q_ASSERT(m_responseHeaders.contains("STATUS"));
                    Q_ASSERT(m_requestHeaders.contains("SERVER_PROTOCOL"));
                    m_responseState = WaitingForResponseBody;
                    const QByteArray status = m_responseHeaders.take("STATUS");
                    m_socket->write(m_requestHeaders.value("SERVER_PROTOCOL"));
                    m_socket->write(" ", 1);
                    m_socket->write(status);
                    m_socket->write("\r\n", 2);

                    //qDebug() << Q_FUNC_INFO << m_requestHeaders << m_responseHeaders;

                    for(
                        HeaderMap::ConstIterator it = m_responseHeaders.constBegin();
                        it != m_responseHeaders.constEnd();
                        ++it
                    )
                    {
                        m_socket->write(it.key());
                        m_socket->write(": ");
                        m_socket->write(it.value());
                        m_socket->write("\r\n");
                    }
                    m_socket->write("\r\n");
                    m_socket->write(buffer.readAll());
                    buffer.close();
                    m_headerBuffer.clear();
                    return maxSize;
                }
                const int lengthOfName = line.indexOf(':');
                const QByteArray name = line.left(lengthOfName);
                const QByteArray value = line.mid(lengthOfName + 2); // ": " after the name == 2 chars
                m_responseHeaders.insertMulti(name, value);
            }
            m_headerBufferPosition = buffer.pos();
            buffer.close();
            return maxSize;
        }
        Q_ASSERT(m_responseState == WaitingForResponseBody);
        return m_socket->write(data, maxSize);
    }
Exemple #4
0
bool CodeEditor::loadFromString(const QByteArray &source, bool meetLineNumbers)
{
	QBuffer buf;
	buf.setData(source);
	buf.open( QIODevice::ReadOnly );
	if( DisAss::isLuaBinary( &buf ) )
	{
		// Binres Lua-File
		DisAss d;
		if( !d.disassemble( &buf ) )
		{
			clear();
			appendPlainText( tr("-- Binary Lua file with error:") );
			appendPlainText( tr("-- '%1'").arg( d.getError().data() ) );
		}else
			setText( d.toString(meetLineNumbers,!meetLineNumbers,!meetLineNumbers) );
	}else
		setText( QString::fromLatin1( buf.readAll() ) );
	document()->setModified( false );
	return true;
}
void KdbxXmlWriter::writeBinaries()
{
    m_xml.writeStartElement("Binaries");

    QHash<QByteArray, int>::const_iterator i;
    for (i = m_idMap.constBegin(); i != m_idMap.constEnd(); ++i) {
        m_xml.writeStartElement("Binary");

        m_xml.writeAttribute("ID", QString::number(i.value()));

        QByteArray data;
        if (m_db->compressionAlgorithm() == Database::CompressionGZip) {
            m_xml.writeAttribute("Compressed", "True");

            QBuffer buffer;
            buffer.open(QIODevice::ReadWrite);

            QtIOCompressor compressor(&buffer);
            compressor.setStreamFormat(QtIOCompressor::GzipFormat);
            compressor.open(QIODevice::WriteOnly);

            qint64 bytesWritten = compressor.write(i.key());
            Q_ASSERT(bytesWritten == i.key().size());
            Q_UNUSED(bytesWritten);
            compressor.close();

            buffer.seek(0);
            data = buffer.readAll();
        } else {
            data = i.key();
        }

        if (!data.isEmpty()) {
            m_xml.writeCharacters(QString::fromLatin1(data.toBase64()));
        }
        m_xml.writeEndElement();
    }

    m_xml.writeEndElement();
}
size_t callback_read_file(void *ptr, size_t size, size_t nmemb, void *userp)
{
    // qDebug()<<__FILE__<<__LINE__<<__FUNCTION__<<size<<nmemb<<userp;

    size_t tlen = size * nmemb, rlen = 0;
    QBuffer strbuf;
    QByteArray line;
    int n = 0, wlen = 0;

    CurlFtp *ftp = static_cast<CurlFtp*>(userp);
    QLocalSocket *router = ftp->getDataSock2();

    strbuf.setData((const char*)ptr, tlen);
    strbuf.open(QBuffer::ReadOnly);
    // Q_ASSERT(strbuf.canReadLine()); //  ???
    rlen = 0;
    while (!strbuf.atEnd()) {
        if (strbuf.canReadLine()) {
            line = strbuf.readLine();
        } else {
            line = strbuf.readAll();
        }
        rlen += line.length();
        wlen = router->write(line);
        // qDebug()<<"Line: "<<n++<<line.length()<<wlen;
        // fprintf(stdout, "%s", ".");
        // fflush(stdout);
        Q_ASSERT(line.length() == wlen);
        // break;
    }
    strbuf.close();
    router->flush();

    // qDebug()<<"can rw:"<<router->isReadable()<<router->isWritable()<<router->isOpen();
    // fprintf(stdout, "route read file:. %p %d %s", router, router->bytesAvailable(), "\n");
    fflush(stdout);

    return rlen;
    return 0;
}
void SchedulerServiceThread::executeKernelRequest(KernelRequest *req){
    QString event = QString();
    if(req->type() == KernelRequest::ServerShutdown)
        event = "shutdown";
    if(req->type() == KernelRequest::ServerRestart)
        event = "restart";
    if(req->type() == KernelRequest::ProcessStart)
        event = "processtart:"+req->propertyValue(KernelRequest::ProcessToStart).toString();
    if(req->type() == KernelRequest::ProcessStopByName)
        event = "processstop:"+req->propertyValue(KernelRequest::ProcessToStop).toString();
    if(req->type() == KernelRequest::ProcessStopByPID)
        event = "processstop";
    if(req->type() == KernelRequest::IndexerFinished)
        event = "indexerfinished:"+req->propertyValue(KernelRequest::AffectedDatabase).toString();

    if(event.isEmpty())
        return;

    QStringList keys = this->_instructions->keys();
    for(int i = 0; i < keys.length();++i){

        SchedulerServiceThread::Task *t = this->_instructions->value(keys.at(i));
        if(t->event == event){

            Parser::QMathParser *parser = new Parser::QMathParser(this);
            Parser::QBoolParser::removeInstance();
            QBuffer *buffer = new QBuffer();
            parser->setVariable("SystemDefaultConsole",reinterpret_cast<qlonglong>(buffer));
            parser->setVariable("console","SystemDefaultConsole");
            Parser::QScriptBlock block(parser);
            block.exec(QString::fromUtf8(QByteArray::fromHex(t->scriptCode.toUtf8())));

            Log::add(QString::fromUtf8(buffer->readAll()),Log::Debug);
            delete buffer;

        }
    }
}
bool XSLTProcessor::transformToString(Node* sourceNode, String&, String& resultString, String&)
{
    bool success = false;

    RefPtr<XSLStyleSheet> stylesheet = m_stylesheet;
    if (!stylesheet && m_stylesheetRootNode) {
        Node* node = m_stylesheetRootNode.get();
        stylesheet = XSLStyleSheet::createForXSLTProcessor(node->parent() ? node->parent() : node,
            node->document()->url().string(),
            node->document()->url()); // FIXME: Should we use baseURL here?

        // According to Mozilla documentation, the node must be a Document node, an xsl:stylesheet or xsl:transform element.
        // But we just use text content regardless of node type.
        stylesheet->parseString(createMarkup(node));
    }

    if (!stylesheet || stylesheet->sheetString().isEmpty())
        return success;

    RefPtr<Document> ownerDocument = sourceNode->document();
    bool sourceIsDocument = (sourceNode == ownerDocument.get());

    QXmlQuery query(QXmlQuery::XSLT20);

    XSLTMessageHandler messageHandler(ownerDocument.get());
    XSLTUriResolver uriResolver(ownerDocument.get());
    query.setMessageHandler(&messageHandler);

    XSLTProcessor::ParameterMap::iterator end = m_parameters.end();
    for (XSLTProcessor::ParameterMap::iterator it = m_parameters.begin(); it != end; ++it)
        query.bindVariable(QString(it->first), QXmlItem(QVariant(it->second)));

    QString source;
    if (sourceIsDocument && ownerDocument->transformSource())
        source = ownerDocument->transformSource()->platformSource();
    if (!sourceIsDocument || source.isEmpty())
        source = createMarkup(sourceNode);

    QBuffer inputBuffer;
    QBuffer styleSheetBuffer;
    QBuffer outputBuffer;

    inputBuffer.setData(source.toUtf8());
    styleSheetBuffer.setData(QString(stylesheet->sheetString()).toUtf8());

    inputBuffer.open(QIODevice::ReadOnly);
    styleSheetBuffer.open(QIODevice::ReadOnly);
    outputBuffer.open(QIODevice::ReadWrite);

    query.setFocus(&inputBuffer);
    query.setQuery(&styleSheetBuffer, QUrl(stylesheet->href()));

    query.setUriResolver(&uriResolver);

    success = query.evaluateTo(&outputBuffer);
    outputBuffer.reset();
    resultString = QString::fromUtf8(outputBuffer.readAll()).trimmed();

    if (m_stylesheet) {
        m_stylesheet->clearDocuments();
        m_stylesheet = 0;
    }

    return success;
}
Exemple #9
0
	void HttpTaskRunnable::callCalback()
	{
		Server::CallBackType& callback = m_errorCallback ;

		if (m_isSuccessful &&
				!m_calbacks[m_request->method()].isEmpty())
		{
			QString path = m_request->url().path();
			for (auto iter = m_calbacks[m_request->method()].begin();
					iter != m_calbacks[m_request->method()].end();
					++iter)
			{
				if (path == iter.key())
				{
					callback = iter.value();
					break;
				}
			}
		}

		QBuffer outBuff;
		outBuff.open(QIODevice::ReadWrite);
		QTextStream outStream(&outBuff);
		Response response(outStream);
		bool isExcept = false;
		try
		{
			callback(*m_request.get(), response);
		} catch (const std::exception& exc)
		{
			qDebug() << "Caught std::exception:" << exc.what();
			outBuff.reset();

			outStream.seek(0);
			isExcept = true;
			printStdException(*m_request.get(), response, exc);
		} catch (...)
		{
			isExcept = true;
			printUnknownException(*m_request.get(), response);
			qDebug() << "Caught unknown exception";
		}

		outStream.flush();
		outBuff.seek(0);
		QByteArray outData;
		if (response.type() == Response::Text)
		{
			outData = outBuff.readAll();
		}
		else
		{
			outData = isExcept ? QByteArray() : response.outBinaryDat();
		}
		{
			QTextStream stream(m_tcpSocket.get());
			stream << "HTTP/1.1 " << response.status() << " OK" << "\r\n";
			stream<<response.header();

			if (outData.size())
			{
				stream << "Content-Length: " << outData.size() << "\r\n";
			}
			stream << "\r\n";
		}

		if (outData.size())
		{
			m_tcpSocket->write(outData);
		}
		m_tcpSocket->waitForBytesWritten();
	}