Esempio n. 1
0
def get_default_transports():
    return [transports.HTTPTransport()]
Esempio n. 2
0
def get_default_transports(auth=None, session=None):
    return [transports.HTTPTransport(auth=auth, session=session)]
Esempio n. 3
0
class Client(itypes.Object):
    DEFAULT_TRANSPORTS = [transports.HTTPTransport()]
    DEFAULT_DECODERS = [
        codecs.CoreJSONCodec(),
        codecs.JSONCodec(),
        codecs.TextCodec()
    ]

    def __init__(self, decoders=None, transports=None):
        if decoders is None:
            decoders = self.DEFAULT_DECODERS
        if transports is None:
            transports = self.DEFAULT_TRANSPORTS
        self._decoders = itypes.List(decoders)
        self._transports = itypes.List(transports)

    @property
    def decoders(self):
        return self._decoders

    @property
    def transports(self):
        return self._transports

    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)

    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)

    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)