/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright 2014 Noblis * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include #include #include #include #include #include #include #include static void help() { printf("br-serve [command]\n" "==================\n" "\n" "_br-serve_ converts the command's stdin/stdout into a web service.\n" "\n" "Optional Arguments\n" "------------------\n" "* -help - Print usage information.\n" "* -port - The port to communicate on (80 otherwise)."); } static int port = 80; static QProcess process; class Handler : public QObject { Q_OBJECT public slots: void handle(QHttpRequest *request, QHttpResponse *response) { QByteArray message; const QUrlQuery urlQuery(request->url()); if (urlQuery.hasQueryItem("url")) { process.write(qPrintable(QString(urlQuery.queryItemValue("url") + "\n"))); process.waitForReadyRead(); message = process.readAll(); } else { QString path = request->path(); if (path == "/") path = "localhost"; message = QString("\n" "\n" "\n" " Web Services API\n" "\n" "\n" "\n" "

Query String Parameters

" "
    \n" "
  • url - Query URL for processing.
  • \n" "
\n" "

Examples

\n" "
    \n" "
  • http://%1%2/?url=data.liblikely.org/misc/lenna.tiff
  • \n" "
\n" "\n" "").arg(path, port == 80 ? QString() : (QString(":") + QString::number(port))).toLatin1(); } response->setHeader("Content-Length", QString::number(message.size())); response->writeHead(200); // everything is OK response->write(message); response->end(); } }; int main(int argc, char *argv[]) { QCoreApplication application(argc, argv); for (int i=1; i