コード例 #1
0
    def reload(self, document, force_codec=False):
        url = document.url
        link = Link(url, action='get')

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, self.decoders, force_codec=force_codec)
コード例 #2
0
    def action(self,
               document,
               keys,
               params=None,
               action=None,
               encoding=None,
               transform=None):
        if isinstance(keys, string_types):
            keys = [keys]

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)

        if (action is not None) or (encoding is not None) or (transform
                                                              is not None):
            # Handle any explicit overrides.
            action = link.action if (action is None) else action
            encoding = link.encoding if (encoding is None) else encoding
            transform = link.transform if (transform is None) else transform
            link = Link(link.url,
                        action=action,
                        encoding=encoding,
                        transform=transform,
                        fields=link.fields)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link,
                                    self.decoders,
                                    params=params,
                                    link_ancestors=link_ancestors)
コード例 #3
0
ファイル: client.py プロジェクト: Benardakaka/Reddit-Clone
    def reload(self, document):
        url = _make_absolute(document.url)
        link = Link(url, action='get')

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, decoders=self.decoders)
コード例 #4
0
    def get(self, url, force_codec=False):
        link = Link(url, action='get')

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link,
                                    self.decoders,
                                    force_codec=force_codec)
コード例 #5
0
ファイル: client.py プロジェクト: reidefe/foxy
    def action(
        self,
        document,
        keys,
        params=None,
        validate=True,
        overrides=None,
        action=None,
        encoding=None,
        transform=None,
    ):
        if (action is not None) or (encoding is not None) or (transform
                                                              is not None):
            # Fallback for v1.x overrides.
            # Will be removed at some point, most likely in a 2.1 release.
            if overrides is None:
                overrides = {}
            if action is not None:
                overrides["action"] = action
            if encoding is not None:
                overrides["encoding"] = encoding
            if transform is not None:
                overrides["transform"] = transform

        if isinstance(keys, string_types):
            keys = [keys]

        if params is None:
            params = {}

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)
        if validate:
            _validate_parameters(link, params)

        if overrides:
            # Handle any explicit overrides.
            url = overrides.get("url", link.url)
            action = overrides.get("action", link.action)
            encoding = overrides.get("encoding", link.encoding)
            transform = overrides.get("transform", link.transform)
            fields = overrides.get("fields", link.fields)
            link = Link(
                url,
                action=action,
                encoding=encoding,
                transform=transform,
                fields=fields,
            )

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link,
                                    self.decoders,
                                    params=params,
                                    link_ancestors=link_ancestors)
コード例 #6
0
    def get(self, url, format=None, force_codec=False):
        link = Link(url, action='get')

        decoders = self.decoders
        if format:
            decoders = [decoder for decoder in self.decoders if decoder.format == format]
            if not decoders:
                raise ValueError("No decoder available with format='%s'" % format)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, decoders, force_codec=force_codec)
コード例 #7
0
    def action(self, document, keys, params=None, action=None, encoding=None, transform=None):
        if isinstance(keys, string_types):
            keys = [keys]

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)

        if (action is not None) or (encoding is not None) or (transform is not None):
            # Handle any explicit overrides.
            action = link.action if (action is None) else action
            encoding = link.encoding if (encoding is None) else encoding
            transform = link.transform if (transform is None) else transform
            link = Link(link.url, action=action, encoding=encoding, transform=transform, fields=link.fields)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, self.decoders, params=params, link_ancestors=link_ancestors)
コード例 #8
0
    def get(self, url, format=None, force_codec=False):
        link = Link(url, action='get')

        decoders = self.decoders
        if format:
            force_codec = True
            decoders = [decoder for decoder in self.decoders if decoder.format == format]
            if not decoders:
                installed_codecs = get_installed_codecs()
                if format in installed_codecs:
                    decoders = [installed_codecs[format]]
                else:
                    raise ValueError("No decoder available with format='%s'" % format)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, decoders, force_codec=force_codec)
コード例 #9
0
ファイル: client.py プロジェクト: reidefe/foxy
    def get(self, url, format=None, force_codec=False):
        link = Link(url, action="get")

        decoders = self.decoders
        if format:
            force_codec = True
            decoders = [
                decoder for decoder in self.decoders
                if decoder.format == format
            ]
            if not decoders:
                installed_codecs = get_installed_codecs()
                if format in installed_codecs:
                    decoders = [installed_codecs[format]]
                else:
                    raise ValueError("No decoder available with format='%s'" %
                                     format)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, decoders, force_codec=force_codec)
コード例 #10
0
    def action(self, document, keys, params=None, validate=True, overrides=None,
               action=None, encoding=None, transform=None):
        if (action is not None) or (encoding is not None) or (transform is not None):
            # Fallback for v1.x overrides.
            # Will be removed at some point, most likely in a 2.1 release.
            if overrides is None:
                overrides = {}
            if action is not None:
                overrides['action'] = action
            if encoding is not None:
                overrides['encoding'] = encoding
            if transform is not None:
                overrides['transform'] = transform

        if isinstance(keys, string_types):
            keys = [keys]

        if params is None:
            params = {}

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)
        if validate:
            _validate_parameters(link, params)

        if overrides:
            # Handle any explicit overrides.
            url = overrides.get('url', link.url)
            action = overrides.get('action', link.action)
            encoding = overrides.get('encoding', link.encoding)
            transform = overrides.get('transform', link.transform)
            fields = overrides.get('fields', link.fields)
            link = Link(url, action=action, encoding=encoding, transform=transform, fields=fields)

        # Perform the action, and return a new document.
        transport = determine_transport(self.transports, link.url)
        return transport.transition(link, self.decoders, params=params, link_ancestors=link_ancestors)
コード例 #11
0
def test_missing_hostname():
    with pytest.raises(NetworkError):
        determine_transport(transports, 'http://')
コード例 #12
0
def test_missing_scheme():
    with pytest.raises(NetworkError):
        determine_transport(transports, 'example.org')
コード例 #13
0
def test_unknown_scheme():
    with pytest.raises(NetworkError):
        determine_transport(transports, 'ftp://example.org')