eric6/E5Network/E5XmlRpcClient.py

changeset 7771
787a6b3f8c9f
parent 7628
f904d0eef264
child 7780
41420f82c0ac
equal deleted inserted replaced
7770:49f3377aebf1 7771:787a6b3f8c9f
8 """ 8 """
9 9
10 10
11 import xmlrpc.client as xmlrpc 11 import xmlrpc.client as xmlrpc
12 12
13 from PyQt5.QtCore import QObject, QUrl, QByteArray 13 from PyQt5.QtCore import Qt, QObject, QUrl, QByteArray, QEventLoop
14 from PyQt5.QtGui import QGuiApplication, QCursor
14 from PyQt5.QtNetwork import ( 15 from PyQt5.QtNetwork import (
15 QNetworkAccessManager, QNetworkRequest, QNetworkReply 16 QNetworkAccessManager, QNetworkRequest, QNetworkReply
16 ) 17 )
17 18
18 from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired 19 from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
75 type 76 type
76 """ 77 """
77 if not isinstance(args, tuple): 78 if not isinstance(args, tuple):
78 raise TypeError("argument 'args' must be tuple") 79 raise TypeError("argument 'args' must be tuple")
79 80
81 QGuiApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
82 QGuiApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
83
80 data = xmlrpc.dumps(args, method).encode("utf-8") 84 data = xmlrpc.dumps(args, method).encode("utf-8")
81 reply = self.__networkManager.post( 85 reply = self.__networkManager.post(
82 self.__request, QByteArray(data)) 86 self.__request, QByteArray(data))
83 self.__callmap[reply] = (responseCallback, errorCallback) 87 self.__callmap[reply] = (responseCallback, errorCallback)
84 88
95 Private slot to handle SSL errors. 99 Private slot to handle SSL errors.
96 100
97 @param reply reference to the reply object (QNetworkReply) 101 @param reply reference to the reply object (QNetworkReply)
98 @param errors list of SSL errors (list of QSslError) 102 @param errors list of SSL errors (list of QSslError)
99 """ 103 """
104 QGuiApplication.restoreOverrideCursor()
105 QGuiApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
106
100 ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0] 107 ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
101 if ignored == E5SslErrorHandler.NotIgnored and reply in self.__callmap: 108 if ignored == E5SslErrorHandler.NotIgnored and reply in self.__callmap:
102 self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR, self.tr( 109 self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR, self.tr(
103 "SSL Error")) 110 "SSL Error"))
104 111
109 @param reply reference to the finished reply (QNetworkReply) 116 @param reply reference to the finished reply (QNetworkReply)
110 """ 117 """
111 if reply not in self.__callmap: 118 if reply not in self.__callmap:
112 return 119 return
113 120
121 QGuiApplication.restoreOverrideCursor()
122 QGuiApplication.processEvents(QEventLoop.ExcludeUserInputEvents)
123
114 if reply.error() != QNetworkReply.NoError: 124 if reply.error() != QNetworkReply.NoError:
115 self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR, 125 self.__callmap[reply][1](xmlrpc.TRANSPORT_ERROR,
116 reply.errorString()) 126 reply.errorString())
117 else: 127 else:
118 data = bytes(reply.readAll()).decode("utf-8") 128 data = bytes(reply.readAll()).decode("utf-8")

eric ide

mercurial