00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #include "mythversion.h"
00014 #include "mythxmlclient.h"
00015 #include "mythlogging.h"
00016
00017 #include <QObject>
00018
00020
00022
00023 MythXMLClient::MythXMLClient( const QUrl &url, bool bInQtThread )
00024 : SOAPClient( url,
00025 "urn:schemas-mythtv-org:service:MythTV:1",
00026 "/Myth")
00027 {
00028 m_bInQtThread = bInQtThread;
00029 }
00030
00032
00034
00035 MythXMLClient::~MythXMLClient()
00036 {
00037 }
00038
00040
00042
00043 UPnPResultCode MythXMLClient::GetConnectionInfo( const QString &sPin, DatabaseParams *pParams, QString &sMsg )
00044 {
00045 if (pParams == NULL)
00046 return UPnPResult_InvalidArgs;
00047
00048 int nErrCode = 0;
00049 QString sErrDesc;
00050 QStringMap list;
00051
00052 sMsg.clear();
00053
00054 list.insert( "Pin", sPin );
00055
00056 QDomDocument xmlResults = SendSOAPRequest(
00057 "GetConnectionInfo", list, nErrCode, sErrDesc, m_bInQtThread);
00058
00059
00060
00061
00062
00063 QDomNode oNode = xmlResults.namedItem( "GetConnectionInfoResult" );
00064
00065 if (UPnPResult_Success == nErrCode && !oNode.isNull())
00066 {
00067 QDomNode dbNode = oNode.namedItem( "Database" );
00068
00069 pParams->dbHostName = GetNodeValue( dbNode, "Host" , QString());
00070 pParams->dbPort = GetNodeValue( dbNode, "Port" , 0 );
00071 pParams->dbUserName = GetNodeValue( dbNode, "UserName" , QString());
00072 pParams->dbPassword = GetNodeValue( dbNode, "Password" , QString());
00073 pParams->dbName = GetNodeValue( dbNode, "Name" , QString());
00074 pParams->dbType = GetNodeValue( dbNode, "Type" , QString());
00075
00076 QDomNode wolNode = oNode.namedItem( "WOL" );
00077
00078 pParams->wolEnabled = GetNodeValue( wolNode, "Enabled" , false );
00079 pParams->wolReconnect = GetNodeValue( wolNode, "Reconnect", 0 );
00080 pParams->wolRetry = GetNodeValue( wolNode, "Retry" , 0 );
00081 pParams->wolCommand = GetNodeValue( wolNode, "Command" , QString());
00082
00083 QDomNode verNode = oNode.namedItem( "Version" );
00084
00085 pParams->verVersion = GetNodeValue( verNode, "Version" , "" );
00086 pParams->verBranch = GetNodeValue( verNode, "Branch" , "" );
00087 pParams->verProtocol = GetNodeValue( verNode, "Protocol" , "" );
00088 pParams->verBinary = GetNodeValue( verNode, "Binary" , "" );
00089 pParams->verSchema = GetNodeValue( verNode, "Schema" , "" );
00090
00091 if ((pParams->verProtocol != MYTH_PROTO_VERSION) ||
00092 (pParams->verSchema != MYTH_DATABASE_VERSION))
00093
00094 {
00095 LOG(VB_GENERAL, LOG_ERR,
00096 QString("MythXMLClient::GetConnectionInfo Failed - "
00097 "Version Mismatch (%1,%2) != (%3,%4)")
00098 .arg(pParams->verProtocol)
00099 .arg(pParams->verSchema)
00100 .arg(MYTH_PROTO_VERSION)
00101 .arg(MYTH_DATABASE_VERSION));
00102 sMsg = QObject::tr("Version Mismatch", "UPNP Errors");
00103 return UPnPResult_ActionFailed;
00104 }
00105
00106 return UPnPResult_Success;
00107 }
00108 else
00109 {
00110 sMsg = sErrDesc;
00111
00112 LOG(VB_GENERAL, LOG_ERR,
00113 QString("MythXMLClient::GetConnectionInfo Failed - (%1) %2")
00114 .arg(nErrCode) .arg(sErrDesc));
00115 }
00116
00117 if (( nErrCode == UPnPResult_HumanInterventionRequired ) ||
00118 ( nErrCode == UPnPResult_ActionNotAuthorized ) ||
00119 ( nErrCode == 501 ))
00120 {
00121
00122
00123 sMsg = QObject::tr("Not Authorized", "UPNP Errors");
00124 return UPnPResult_ActionNotAuthorized;
00125 }
00126
00127 sMsg = QObject::tr("Unknown Error", "UPNP Errors");
00128 return UPnPResult_ActionFailed;
00129 }