예제 #1
0
    def unserialize(self, data):
        def get_fileurl(data):
            if data.get("pump_io", {}).get("proxyURL"):
                return data["pump_io"]["proxyURL"]
            else:
                return data["url"]

        if "fullImage" in data:
            full_image = data["fullImage"]
            self.original = ImageContainer(url=get_fileurl(full_image),
                                           height=full_image.get("height"),
                                           width=full_image.get("width"))

        if "image" in data:
            save_point = "original" if not hasattr(self,
                                                   "original") else "thumbnail"
            thumbnail = data["image"]

            setattr(
                self, save_point,
                ImageContainer(url=get_fileurl(thumbnail),
                               height=thumbnail.get("height"),
                               width=thumbnail.get("width")))
        Mapper(pypump=self._pump).parse_map(self, data=data)
        self._add_links(data)

        return self
예제 #2
0
파일: feed.py 프로젝트: kylewm/PyPump
    def _build_cache(self):
        """ Build a list of objects from feed's cached items or API page"""
        self.cache = []
        if self.done:
            return

        for i in (self.get_cached()
                  if self._cached else self.get_page(self.url)):
            if not self._cached:
                #some objects don't have objectType set (inbox activities)
                if not i.get("objectType"):
                    i["objectType"] = self.feed.object_types[0]
                obj = Mapper(pypump=self.feed._pump).get_object(i)

            else:
                obj = i
            self.cache.append(obj)

        #ran out of items
        if len(self.cache) <= 0:
            self._done = True

        # check what to do next time
        if self._since is not None:
            if self.feed.links.get('prev'):
                self.url = self.feed.links['prev']
                del self.feed.links['prev']  #avoid using it again
        else:
            if self.feed.links.get('next'):
                self.url = self.feed.links['next']
                del self.feed.links['next']  #avoid using it again
            else:
                self.url = None
예제 #3
0
파일: media.py 프로젝트: dper/PyPump
 def unserialize(self, data):
     if "stream" in data:
         stream = data["stream"]
         self.stream = StreamContainer(url=self._get_fileurl(stream))
     Mapper(pypump=self._pump).parse_map(self, data=data)
     self._add_links(data)
     return self
예제 #4
0
파일: person.py 프로젝트: kylewm/PyPump
    def unserialize(self, data):
        """ Goes from JSON -> Person object """

        Mapper(pypump=self._pump).parse_map(self, data=data)
        self.add_links(data)

        return self
예제 #5
0
파일: mapper_test.py 프로젝트: dper/PyPump
    def test_get_object_unknown(self):
        """ Test creation of unknown activity model """
        test_data = {
            "objectType": "food",  # pypump.models.PumpObject
            "id": "https://example.com/api/food/pancake-v0.1a",
            "url": "https://example.com/food/pancake-v0.1a",
            "content": "flour, sugar, eggs, milk, beans",
            "displayName": "Pancakes (test version)",
            "author": {
                "objectType": "person",
                "id": "acct:[email protected]"
            }
        }
        test_obj = Mapper(pypump=self.pump).get_object(test_data)

        # Test unserialization is correct
        self.assertEqual(test_obj.object_type, test_data["objectType"])
        self.assertEqual(test_obj.id, test_data["id"])
        self.assertEqual(test_obj.url, test_data["url"])
        self.assertEqual(test_obj.content, test_data["content"])
        self.assertEqual(test_obj.display_name, test_data["displayName"])

        # test_obj should be PumpObject
        self.assertTrue(isinstance(test_obj, PumpObject))

        # test_obj.author should be PyPump.Person
        self.assertTrue(isinstance(test_obj.author, type(self.pump.Person())))
예제 #6
0
    def unserialize(self, data):
        if ("lon" in data and "lat" in data):
            self.longitude = float(data["lon"])
            self.latitude = float(data["lat"])

        elif "position" in data:
            position = data["position"][:-1]
            if position[1:].find("+") != -1:
                latitude = position.lstrip("+").split("+", 1)[0]
                self.latitude = float(latitude)

                self.longitude = float(position[1:].split("+", 1)[1])
            else:
                latitude = position.lstrip("+").split("-", 1)[0]
                self.latitude = float(latitude)

                self.longitude = float(position[1:].split("-", 1)[1])

        else:
            self.longitude = None
            self.latitude = None

        Mapper(pypump=self._pump).parse_map(self, data=data)

        return self
예제 #7
0
파일: mapper_test.py 프로젝트: dper/PyPump
    def test_get_activity_model(self):
        """ Test creation of known activity model """
        test_data = {
            "objectType": "application",  # pypump.models.activity.Application
            "id": "coolapp1.2",
            "displayName": "Cool app"
        }
        test_obj = Mapper(pypump=self.pump).get_object(test_data)

        self.assertTrue(isinstance(test_obj, Application))
예제 #8
0
파일: mapper_test.py 프로젝트: dper/PyPump
    def test_get_pump_model(self):
        """ Test creation of PyPump model """
        test_data = {
            "objectType": "person",  # pypump.models.person.Person
            "id": "acct:[email protected]"
        }
        test_obj = Mapper(pypump=self.pump).get_object(test_data)

        # Test person model was made
        self.assertTrue(isinstance(test_obj, type(self.pump.Person())))
예제 #9
0
파일: activity.py 프로젝트: kylewm/PyPump
    def unserialize(self, data):
        """ From JSON -> Activity object """

        # copy activity attributes into object
        if "author" not in data["object"]:
            data["object"]["author"] = data["actor"]
        for key in ["to", "cc", "bto", "bcc"]:
            if key not in data["object"] and key in data:
                data["object"][key] = data[key]

        Mapper(pypump=self._pump).parse_map(self, data=data)
        self.add_links(data)

        return self
예제 #10
0
파일: media.py 프로젝트: PlumpMath/PyPump
    def unserialize(self, data):
        if "image" in data:
            thumbnail = data["image"]
            self.thumbnail = ImageContainer(url=self._get_fileurl(thumbnail),
                                            height=thumbnail.get("height"),
                                            width=thumbnail.get("width"))

        if "fullImage" in data:
            full_image = data["fullImage"]
            self.original = ImageContainer(url=self._get_fileurl(full_image),
                                           height=full_image.get("height"),
                                           width=full_image.get("width"))
        else:
            self.original = self.thumbnail

        Mapper(pypump=self._pump).parse_map(self, data=data)
        self._add_links(data)

        return self
예제 #11
0
    def unserialize(self, data):

        if "fullImage" in data:
            full_image = data["fullImage"]
            self.original = ImageContainer(url=full_image["url"],
                                           height=full_image.get("height"),
                                           width=full_image.get("width"))

        if "image" in data:
            save_point = "original" if not hasattr(self,
                                                   "original") else "thumbnail"
            thumbnail = data["image"]
            setattr(
                self, save_point,
                ImageContainer(url=thumbnail["url"],
                               height=thumbnail.get("height"),
                               width=thumbnail.get("width")))
        Mapper(pypump=self._pump).parse_map(self, data=data)
        self.add_links(data)

        return self
예제 #12
0
    def _build_cache(self):
        """ Build a list of objects from feed's cached items or API page"""
        self.cache = []
        if self.done:
            return

        for i in (self.get_cached()
                  if self._cached else self.get_page(self.url)):
            if not self._cached:
                # some objects don't have objectType set (inbox activities)
                if not i.get("objectType"):
                    i["objectType"] = self.feed.object_types[0]
                obj = Mapper(pypump=self.feed._pump).get_object(i)

            else:
                obj = i
            self.cache.append(obj)

        # ran out of items
        if len(self.cache) <= 0:
            self._done = True

        # check what to do next time
        if getattr(self.feed, 'issue65', False):
            # work around API bug for favorites feed, see https://github.com/xray7224/PyPump/issues/65
            if self._offset is None:
                self._offset = 0
            self._offset += 20
        elif self._since is not None:
            if self.feed.links.get('prev'):
                self.url = self.feed.links['prev']
                del self.feed.links['prev']  # avoid using it again
        else:
            if self.feed.links.get('next'):
                self.url = self.feed.links['next']
                del self.feed.links['next']  # avoid using it again
            else:
                self.url = None
예제 #13
0
 def unserialize(self, data):
     Mapper(pypump=self._pump).parse_map(self, data=data)
     self._add_links(data)
     self.url = data.get('pump_io', {}).get('proxyURL') or self.url
     return self
예제 #14
0
 def unserialize(self, data):
     Mapper(pypump=self._pump).parse_map(self, data=data)
     self.add_links(data)
     return self
예제 #15
0
파일: activity.py 프로젝트: kylewm/PyPump
 def __init__(self, *args, **kwargs):
     super(Application, self).__init__(*args, **kwargs)
     Mapper(*args, **kwargs).parse_map(self, *args, **kwargs)
예제 #16
0
 def unserialize(self, data):
     """ from JSON -> Comment """
     Mapper(pypump=self._pump).parse_map(self, data=data)
     self.add_links(data)
     return self