implemented username/password access to xbmc.
authorIonutz Borcoman <iborco@gmail.com>
Sat, 19 Mar 2011 12:01:21 +0000 (14:01 +0200)
committerIonutz Borcoman <iborco@gmail.com>
Sat, 19 Mar 2011 12:01:21 +0000 (14:01 +0200)
src/xbmc.cpp

index d547022..26d1225 100644 (file)
@@ -160,12 +160,29 @@ void Xbmc::do_command_action(int action)
 void Xbmc::do_command1(const QString &command, int id)
 {
     QSettings settings;
-    QString server = settings.value(SETUP_XBMC_SERVER, SETUP_XBMC_SERVER_DEFAULT).toString();
-    QString port = settings.value(SETUP_XBMC_PORT, SETUP_XBMC_PORT_DEFAULT).toString();
+    QString host = settings.value(SETUP_XBMC_SERVER, SETUP_XBMC_SERVER_DEFAULT).toString();
+    int port = settings.value(SETUP_XBMC_PORT, SETUP_XBMC_PORT_DEFAULT).toInt();
+    bool requires_authentication = settings.value(SETUP_XBMC_REQUIRES_AUTHENTICATION, SETUP_XBMC_REQUIRES_AUTHENTICATION_DEFAULT).toBool();
+
+    QUrl url;
+    url.setScheme("http");
+    url.setHost(host);
+    url.setPort(port);
+    url.setPath("/xbmcCmds/xbmcHttp");
+
+    if (requires_authentication) {
+        QString username = settings.value(SETUP_XBMC_USERNAME, SETUP_XBMC_USERNAME_DEFAULT).toString();
+        QString password = settings.value(SETUP_XBMC_PASSWORD, SETUP_XBMC_PASSWORD_DEFAULT).toString();
+        qDebug("authentication required: %s : %s", qPrintable(username), qPrintable(password));
+        url.setUserName(username);
+        url.setPassword(password);
+    }
 
-    QUrl url = QUrl(QString("http://%1:%2/xbmcCmds/xbmcHttp?command=%3(%4)").arg(server).arg(port).arg(command).arg(id));
+    QList<QPair<QString, QString> > querry;
+    querry.append(QPair<QString, QString>(QString("command"), QString("%1(%2)").arg(command).arg(id)));
+    url.setQueryItems(querry);
 
-    qDebug("executing command: %s", qPrintable(url.toString()));
+//    qDebug("executing command: %s", qPrintable(url.toString()));
 
     QNetworkRequest request;
     request.setUrl(url);