diff --git a/picard/webservice.py b/picard/webservice.py
index ab5e54c39..73e915019 100644
--- a/picard/webservice.py
+++ b/picard/webservice.py
@@ -115,6 +115,12 @@ class XmlWebService(QtCore.QObject):
self._timer = QtCore.QTimer(self)
self._timer.setSingleShot(True)
self._timer.timeout.connect(self._run_next_task)
+ self._request_methods = {
+ "GET": self.manager.get,
+ "POST": self.manager.post,
+ "PUT": self.manager.put,
+ "DELETE": self.manager.deleteResource
+ }
def setup_proxy(self):
self.proxy = QtNetwork.QNetworkProxy()
@@ -126,7 +132,7 @@ class XmlWebService(QtCore.QObject):
self.proxy.setPassword(self.config.setting["proxy_password"])
self.manager.setProxy(self.proxy)
- def _start_request(self, method, send, host, port, path, data, handler, xml, mblogin=False):
+ def _start_request(self, method, host, port, path, data, handler, xml, mblogin=False):
self.log.debug("%s http://%s:%d%s", method, host, port, path)
url = QtCore.QUrl.fromEncoded("http://%s:%d%s" % (host, port, path))
if mblogin:
@@ -136,6 +142,7 @@ class XmlWebService(QtCore.QObject):
request.setRawHeader("User-Agent", "MusicBrainz-Picard/%s" % version_string)
if method == "POST" and host == self.config.setting["server_host"]:
request.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader, "application/xml; charset=utf-8")
+ send = self._request_methods[method]
reply = send(request, data) if data is not None else send(request)
key = (host, port)
self._last_request_times[key] = QtCore.QTime.currentTime()
@@ -168,20 +175,20 @@ class XmlWebService(QtCore.QObject):
reply.close()
def get(self, host, port, path, handler, xml=True, priority=False, important=False, mblogin=False):
- func = partial(self._start_request, "GET", self.manager.get, host, port, path, None, handler, xml, mblogin)
+ func = partial(self._start_request, "GET", host, port, path, None, handler, xml, mblogin)
return self.add_task(func, host, port, priority, important=important)
- def post(self, host, port, path, data, handler, xml=True, priority=False, important=False, mblogin=True):
+ def post(self, host, port, path, data, handler, xml=True, priority=True, important=True, mblogin=True):
self.log.debug("POST-DATA %r", data)
- func = partial(self._start_request, "POST", self.manager.post, host, port, path, data, handler, xml, mblogin)
+ func = partial(self._start_request, "POST", host, port, path, data, handler, xml, mblogin)
return self.add_task(func, host, port, priority, important=important)
- def put(self, host, port, path, data, handler, priority=False, important=False, mblogin=True):
- func = partial(self._start_request, "PUT", self.manager.put, host, port, path, data, handler, False, mblogin)
+ def put(self, host, port, path, data, handler, priority=True, important=True, mblogin=True):
+ func = partial(self._start_request, "PUT", host, port, path, data, handler, False, mblogin)
return self.add_task(func, host, port, priority, important=important)
- def delete(self, host, port, path, handler, priority=False, important=False, mblogin=True):
- func = partial(self._start_request, "DELETE", self.manager.deleteResource, host, port, path, None, handler, False, mblogin)
+ def delete(self, host, port, path, handler, priority=True, important=True, mblogin=True):
+ func = partial(self._start_request, "DELETE", host, port, path, None, handler, False, mblogin)
return self.add_task(func, host, port, priority, important=important)
def _site_authenticate(self, reply, authenticator):
@@ -300,7 +307,7 @@ class XmlWebService(QtCore.QObject):
path = '/ws/2/recording/?client=' + USER_AGENT_STRING
recordings = ''.join(['' % i for i in puids.items()])
data = _wrap_xml_metadata('%s' % recordings)
- return self.post(PUID_SUBMIT_HOST, PUID_SUBMIT_PORT, path, data, handler, priority=True, important=True)
+ return self.post(PUID_SUBMIT_HOST, PUID_SUBMIT_PORT, path, data, handler)
def submit_ratings(self, ratings, handler):
host = self.config.setting['server_host']
@@ -309,7 +316,7 @@ class XmlWebService(QtCore.QObject):
recordings = (''.join(['%s' %
(i[1], j*20) for i, j in ratings.items() if i[0] == 'recording']))
data = _wrap_xml_metadata('%s' % recordings)
- return self.post(host, port, path, data, handler, priority=True, important=True)
+ return self.post(host, port, path, data, handler)
def query_musicdns(self, handler, **kwargs):
host, port = 'ofa.musicdns.org', 80