/** * @param TwitterSerializable $object * @return \stdClass */ public function serialize(TwitterSerializable $object) { /* @var Tweet $object */ Assertion::true($this->canSerialize($object), 'object must be an instance of Tweet'); Assertion::eq(new \DateTimeZone('UTC'), $object->getDate()->getTimezone()); $tweet = new \stdClass(); $tweet->id = (string) $object->getId(); $tweet->user = $this->userSerializer->serialize($object->getSender()); $tweet->text = $object->getText(); $tweet->lang = $object->getLang(); $tweet->created_at = $object->getDate()->format(TwitterDate::FORMAT); $tweet->entities = $this->twitterEntitiesSerializer->serialize($object->getEntities()); $tweet->coordinates = $object->getCoordinates() ? $this->coordinatesSerializer->serialize($object->getCoordinates()) : null; $tweet->place = $object->getPlace() ? $this->placeSerializer->serialize($object->getPlace()) : null; $tweet->in_reply_to_status_id = $object->getInReplyToStatusId(); $tweet->in_reply_to_user_id = $object->getInReplyToUserId(); $tweet->in_reply_to_screen_name = $object->getInReplyToScreenName(); $tweet->retweeted = $object->isRetweeted(); $tweet->retweet_count = $object->getRetweetCount(); $tweet->favorited = $object->isFavorited(); $tweet->favorite_count = $object->getFavoriteCount(); $tweet->truncated = $object->isTruncated(); $tweet->source = $object->getSource(); if ($object->getRetweetedStatus()) { $tweet->retweeted_status = $this->serialize($object->getRetweetedStatus()); } return $tweet; }
/** * @param TwitterSerializable $object * @return \stdClass */ public function serialize(TwitterSerializable $object) { /* @var TwitterDirectMessage $object */ Assertion::true($this->canSerialize($object), 'object must be an instance of TwitterDirectMessage'); Assertion::eq(new \DateTimeZone('UTC'), $object->getDate()->getTimezone()); $dm = new \stdClass(); $dm->id = (string) $object->getId(); $dm->sender = $this->userSerializer->serialize($object->getSender()); $dm->recipient = $this->userSerializer->serialize($object->getRecipient()); $dm->text = $object->getText(); $dm->created_at = $object->getDate()->format(TwitterDate::FORMAT); $dm->entities = $object->getEntities() ? $this->twitterEntitiesSerializer->serialize($object->getEntities()) : null; $dmObject = new \stdClass(); $dmObject->direct_message = $dm; return $dmObject; }
/** * @test */ public function itShouldSerializeWithLegalObject() { $this->itWillSerializeHashtag(); $this->itWillSerializeSymbol(); $this->itWillSerializeUrl(); $this->itWillSerializeUserMention(); $this->itWillSerializeMedia(); $this->itWillSerializeExtendedEntity(); $serialized = $this->serviceUnderTest->serialize($this->twitterEntities); $this->assertEquals([$this->serializedHashtag], $serialized->hashtags); $this->assertEquals([$this->serializedSymbol], $serialized->symbols); $this->assertEquals([$this->serializedUrl], $serialized->urls); $this->assertEquals([$this->serializedUserMention], $serialized->user_mentions); $this->assertEquals([$this->serializedMedium], $serialized->media); $this->assertEquals([$this->serializedExtendedEntity], $serialized->extended_entities); }