コード例 #1
0
ファイル: __init__.py プロジェクト: uladz/picard-plugins
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)
コード例 #2
0
ファイル: webservice.py プロジェクト: Zialus/picard
 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)
コード例 #3
0
ファイル: filelookup.py プロジェクト: zer03nvy/picard
 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()
コード例 #4
0
 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()
コード例 #5
0
ファイル: webservice.py プロジェクト: sequethin/picard
 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)
コード例 #6
0
 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())
コード例 #7
0
ファイル: oauth.py プロジェクト: Freso/picard
 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())
コード例 #8
0
    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()
コード例 #9
0
ファイル: __init__.py プロジェクト: Jormangeud/picard
    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()
コード例 #10
0
ファイル: oauth.py プロジェクト: verma16Ayush/picard
 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()
コード例 #11
0
ファイル: mbserver.py プロジェクト: ruipin/picard
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()
コード例 #12
0
ファイル: __init__.py プロジェクト: altendky/picard
    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()
コード例 #13
0
ファイル: filelookup.py プロジェクト: Versatilus/picard
 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()