def get_tags(album, metadata, queryargs, min_usage, ignore, next_, current): """Get tags from an URL.""" url = build_qurl(LASTFM_HOST, LASTFM_PORT, LASTFM_PATH, queryargs).toString() if url in _cache: _tags_finalize(album, metadata, current + _cache[url], next_) else: # If we have already sent a request for this URL, delay this call if url in _pending_requests: _pending_requests[url].append( partial(get_tags, album, metadata, queryargs, min_usage, ignore, next_, current)) else: _pending_requests[url] = [] album._requests += 1 album.tagger.webservice.get(LASTFM_HOST, LASTFM_PORT, LASTFM_PATH, partial(_tags_downloaded, album, metadata, min_usage, ignore, next_, current), queryargs=queryargs, parse_response_type='xml', priority=True, important=True)
def _start_request_continue(self, method, host, port, path, data, handler, xml, mblogin=False, cacheloadcontrol=None, refresh=None, access_token=None, queryargs=None): url = build_qurl(host, port, path=path, mblogin=mblogin, queryargs=queryargs) request = QtNetwork.QNetworkRequest(url) if mblogin and access_token: request.setRawHeader("Authorization", "Bearer %s" % access_token) if mblogin or (method == "GET" and refresh): request.setPriority(QtNetwork.QNetworkRequest.HighPriority) request.setAttribute(QtNetwork.QNetworkRequest.CacheLoadControlAttribute, QtNetwork.QNetworkRequest.AlwaysNetwork) elif method == "PUT" or method == "DELETE": request.setPriority(QtNetwork.QNetworkRequest.HighPriority) elif cacheloadcontrol is not None: request.setAttribute(QtNetwork.QNetworkRequest.CacheLoadControlAttribute, cacheloadcontrol) request.setRawHeader("User-Agent", USER_AGENT_STRING) if xml: request.setRawHeader("Accept", "application/xml") if data is not None: if method == "POST" and host == config.setting["server_host"] and xml: request.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader, "application/xml; charset=utf-8") else: request.setHeader(QtNetwork.QNetworkRequest.ContentTypeHeader, "application/x-www-form-urlencoded") send = self._request_methods[method] reply = send(request, data) if data is not None else send(request) self._remember_request_time((host, port)) self._active_requests[reply] = (request, handler, xml, refresh)
def _url(self, path, params=None): if params is None: params = {} if self.local_port: params['tport'] = self.local_port url = build_qurl(self.server, self.port, path=path, queryargs=params) return url.toEncoded()
def get_authorization_url(self, scopes): host, port = config.setting['server_host'], config.setting['server_port'] params = {"response_type": "code", "client_id": MUSICBRAINZ_OAUTH_CLIENT_ID, "redirect_uri": "urn:ietf:wg:oauth:2.0:oob", "scope": scopes} url = build_qurl(host, port, path="/oauth2/authorize", queryargs=params) return string_(url.toEncoded())
def get_authorization_url(self, scopes): host, port = config.setting['server_host'], config.setting['server_port'] params = {"response_type": "code", "client_id": MUSICBRAINZ_OAUTH_CLIENT_ID, "redirect_uri": "urn:ietf:wg:oauth:2.0:oob", "scope": scopes} url = build_qurl(host, port, path="/oauth2/authorize", queryargs=params) return str(url.toEncoded())
def __init__(self, method, host, port, path, handler, parse_response_type=None, data=None, mblogin=False, cacheloadcontrol=None, refresh=False, queryargs=None, priority=False, important=False, request_mimetype=None): """ Args: method: HTTP method. One of ``GET``, ``POST``, ``PUT``, or ``DELETE``. host: Hostname. port: TCP port number (80 or 443). path: Path component. handler: Callback which takes a 3-tuple of `(str:document, QNetworkReply:reply, QNetworkReply.Error:error)`. parse_response_type: Specifies that request either sends or accepts data as ``application/{{response_mimetype}}``. data: Data to include with ``PUT`` or ``POST`` requests. mblogin: Hints that this request should be tied to a MusicBrainz account, requiring that we obtain an OAuth token first. cacheloadcontrol: See `QNetworkRequest.CacheLoadControlAttribute`. refresh: Indicates a user-specified resource refresh, such as when the user wishes to reload a release. Marks the request as high priority and disables caching. queryargs: `dict` of query arguments. retries: Current retry attempt number. priority: Indicates that this is a high priority request. important: Indicates that this is an important request. request_mimetype: Set the Content-Type header. """ url = build_qurl(host, port, path=path, queryargs=queryargs) super().__init__(url) # These two are codependent (see _update_authorization_header) and must # be initialized explicitly. self._access_token = None self._mblogin = None self._retries = 0 self.method = method self.host = host self.port = port self.path = path self.handler = handler self.parse_response_type = parse_response_type self.response_parser = None self.response_mimetype = None self.request_mimetype = request_mimetype self.data = data self.mblogin = mblogin self.cacheloadcontrol = cacheloadcontrol self.refresh = refresh self.queryargs = queryargs self.priority = priority self.important = important self._high_prio_no_cache = False self.access_token = None self._init_headers()
def get_authorization_url(self, scopes): params = { "response_type": "code", "client_id": MUSICBRAINZ_OAUTH_CLIENT_ID, "redirect_uri": "urn:ietf:wg:oauth:2.0:oob", "scope": scopes } url = build_qurl(self.host, self.port, path="/oauth2/authorize", queryargs=params) return bytes(url.toEncoded()).decode()
def build_submission_url(path=None, query_args=None): """Builds a submission URL with path and query parameters. Args: path: The path for the URL query_args: A dict of query parameters Returns: The submission URL as a string """ server = get_submission_server() url = build_qurl(server.host, server.port, path, query_args) return url.toString()
def __init__(self, method, host, port, path, handler, parse_response_type=None, data=None, mblogin=False, cacheloadcontrol=None, refresh=None, queryargs=None, priority=False, important=False): url = build_qurl(host, port, path=path, queryargs=queryargs) super().__init__(url) # These two are codependent (see _update_authorization_header) and must # be initialized explicitly. self._access_token = None self._mblogin = None self._retries = 0 self.method = method self.host = host self.port = port self.path = path self.handler = handler self.parse_response_type = parse_response_type self.response_parser = None self.response_mimetype = None self.data = data self.mblogin = mblogin self.cacheloadcontrol = cacheloadcontrol self.refresh = refresh self.queryargs = queryargs self.priority = priority self.important = important self.access_token = None self._init_headers()
def _url(self, path, params={}): if self.localPort: params["tport"] = self.localPort url = build_qurl(self.server, self.port, path=path, queryargs=params) return url.toEncoded()