00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #include "mythxmlclient.h"
00012
00014
00016
00017 MythXMLClient::MythXMLClient( const QUrl &url, bool bInQtThread )
00018 : SOAPClient( url,
00019 "urn:schemas-mythtv-org:service:MythTv:1",
00020 "/Myth")
00021 {
00022 m_bInQtThread = bInQtThread;
00023 }
00024
00026
00028
00029 MythXMLClient::~MythXMLClient()
00030 {
00031 }
00032
00034
00036
00037 UPnPResultCode MythXMLClient::GetConnectionInfo( const QString &sPin, DatabaseParams *pParams, QString &sMsg )
00038 {
00039 if (pParams == NULL)
00040 return UPnPResult_InvalidArgs;
00041
00042 int nErrCode = 0;
00043 QString sErrDesc;
00044 QStringMap list;
00045
00046 sMsg = "";
00047
00048 list.insert( "Pin", sPin );
00049
00050 if (SendSOAPRequest( "GetConnectionInfo", list, nErrCode, sErrDesc, m_bInQtThread ))
00051 {
00052 QString sXml = "<Info>" + list[ "Info" ] + "</Info>";
00053
00054 sMsg = sErrDesc;
00055
00056 QDomDocument doc;
00057
00058 if ( !doc.setContent( sXml, false, &sErrDesc, &nErrCode ))
00059 {
00060 sMsg = QString( "Error Requesting Connection Info : (%1) - %2" )
00061 .arg( nErrCode )
00062 .arg( sErrDesc );
00063
00064 VERBOSE( VB_UPNP, sMsg );
00065
00066 return UPnPResult_ActionFailed;
00067 }
00068
00069
00070
00071
00072
00073 QDomNode infoNode = doc.namedItem( "Info" );
00074
00075 if (!infoNode.isNull())
00076 {
00077 QDomNode dbNode = infoNode.namedItem( "Database" );
00078
00079 pParams->dbHostName = GetNodeValue( dbNode, "Host" , QString( "" ));
00080 pParams->dbPort = GetNodeValue( dbNode, "Port" , 0 );
00081 pParams->dbUserName = GetNodeValue( dbNode, "UserName" , QString( "" ));
00082 pParams->dbPassword = GetNodeValue( dbNode, "Password" , QString( "" ));
00083 pParams->dbName = GetNodeValue( dbNode, "Name" , QString( "" ));
00084 pParams->dbType = GetNodeValue( dbNode, "Type" , QString( "" ));
00085
00086 QDomNode wolNode = infoNode.namedItem( "WOL" );
00087
00088 pParams->wolEnabled = GetNodeValue( wolNode, "Enabled" , false );
00089 pParams->wolReconnect = GetNodeValue( wolNode, "Reconnect", 0 );
00090 pParams->wolRetry = GetNodeValue( wolNode, "Retry" , 0 );
00091 pParams->wolCommand = GetNodeValue( wolNode, "Command" , QString( "" ));
00092
00093 return UPnPResult_Success;
00094 }
00095 else
00096 {
00097 if (sMsg.isEmpty())
00098 sMsg = "Unexpected Response";
00099
00100 VERBOSE( VB_IMPORTANT, QString( "MythXMLClient::GetConnectionInfo Failed : Unexpected Response - %1" )
00101 .arg( sXml ));
00102 }
00103 }
00104 else
00105 {
00106 sMsg = sErrDesc;
00107
00108 if (sMsg.isEmpty())
00109 sMsg = "Access Denied";
00110
00111 VERBOSE( VB_IMPORTANT, QString( "MythXMLClient::GetConnectionInfo Failed - (%1) %2" )
00112 .arg( nErrCode )
00113 .arg( sErrDesc ));
00114 }
00115
00116 if (UPnPResult_HumanInterventionRequired == nErrCode
00117 || UPnPResult_ActionNotAuthorized == nErrCode)
00118 return (UPnPResultCode)nErrCode;
00119
00120 return UPnPResult_ActionFailed;
00121 }