Esempio n. 1
0
    def __getitem__(self, index):
        if self._collection is None:
            self._collection = self._resolve()

        if index > self._total:
            per_page = self._kwargs['per_page']
            page = index/per_page
            kwargs = self._kwargs
            kwargs['page'] = page
            link = CollectionLinkProxy(link=self._link, binding=self._binding, **kwargs)
            return link[index-page*per_page]
        try:
            item = self._collection[index]
            if isinstance(item, dict):
                if URI in item:
                    return utils.evaluate_ref(self._collection[index][URI],
                                              self._binding.client,
                                              self._collection[index])
                elif REF in item:
                    return utils.evaluate_ref(self._collection[index][REF],
                                              self._binding.client)

            return item

        except IndexError:
            raise IndexError(index)
Esempio n. 2
0
 def resolve(cls, obj, client):
     return utils.evaluate_ref(obj["$ref"], client)