Skip to content

Commit

Permalink
Cast data to object in normalizers (#50)
Browse files Browse the repository at this point in the history
* Fix RawEncoder decode() return type

* Fix AbstractResource's as()

* Add RawEncoder to Client's serializer

* Cast data to object in Normalizers

* Pass response's contents to serializer's deserialize() in AbstractResource

* Fix nested relations deserialization in Normalizers
  • Loading branch information
Andriichello authored Mar 27, 2023
1 parent 175a9f2 commit 06b5b4e
Show file tree
Hide file tree
Showing 35 changed files with 78 additions and 9 deletions.
1 change: 1 addition & 0 deletions php/src/Snagshout/Promote/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ protected function buildResource(string $resourceClass): AbstractResource
new Serializer(
NormalizerFactory::create(),
[
new RawEncoder(),
new JsonEncoder(new JsonEncode(), new JsonDecode()),
]
)
Expand Down
6 changes: 3 additions & 3 deletions php/src/Snagshout/Promote/Encoder/RawEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,23 +37,23 @@ public function decode($data, $format, array $context = array())
/**
* {@inheritdoc}
*/
public function supportsDecoding($format)
public function supportsDecoding($format): bool
{
return self::FORMAT === $format;
}

/**
* {@inheritdoc}
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format, array $context = array()): string
{
return $data;
}

/**
* {@inheritdoc}
*/
public function supportsEncoding($format)
public function supportsEncoding($format): bool
{
return self::FORMAT === $format;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CancelRebateRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new CancelRebateRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/CategoryNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CategoryNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Category();
if (property_exists($data, 'id')) {
$object->setId($data->{'id'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CheckEmailRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new CheckEmailRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

namespace Snagshout\Promote\Normalizer;

use Snagshout\Promote\Model\CompleteFacebookOrderRequestBody;

class CompleteFacebookOrderRequestBodyNormalizer extends AbstractNormalizer
{
public function supportsDenormalization($data, $type, $format = null)
Expand All @@ -24,7 +26,7 @@ public function supportsDenormalization($data, $type, $format = null)

public function supportsNormalization($data, $format = null)
{
if ($data instanceof \Snagshout\Promote\Model\CompleteFacebookOrderRequestBody) {
if ($data instanceof CompleteFacebookOrderRequestBody) {
return true;
}

Expand All @@ -33,7 +35,9 @@ public function supportsNormalization($data, $format = null)

public function denormalize($data, $class, $format = null, array $context = [])
{
$object = new \Snagshout\Promote\Model\CompleteFacebookOrderRequestBody();
$data = (object) $data;

$object = new CompleteFacebookOrderRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class ConfirmRebateRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new ConfirmRebateRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CreateFacebookOrderRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new CreateFacebookOrderRequestBody();
if (property_exists($data, 'adId')) {
$object->setAdId($data->{'adId'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CreateOrderRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new CreateOrderRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class CreateSurveyReviewRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new CreateSurveyReviewRequestBody();
if (property_exists($data, 'reviewClaimedLeft')) {
$object->setReviewClaimedLeft($data->{'reviewClaimedLeft'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ class DealImpressionsRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new DealImpressionsRequestBody();
if (property_exists($data, 'impressions')) {
$values = [];
foreach ($data->{'impressions'} as $value) {
$values[] = $this->serializer->deserialize(json_encode($value), Impression::class, 'raw', $context);
$values[] = $this->serializer->deserialize(json_encode($value), Impression::class, 'json', $context);
}
$object->setImpressions($values);
}
Expand Down
6 changes: 4 additions & 2 deletions php/src/Snagshout/Promote/Normalizer/DealNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class DealNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Deal();
if (property_exists($data, 'campaignId')) {
$object->setCampaignId($data->{'campaignId'});
Expand All @@ -40,14 +42,14 @@ public function denormalize($data, $class, $format = null, array $context = [])
if (property_exists($data, 'categories')) {
$values = [];
foreach ($data->{'categories'} as $value) {
$values[] = $this->serializer->deserialize(json_encode($value), Category::class, 'raw', $context);
$values[] = $this->serializer->deserialize(json_encode($value), Category::class, 'json', $context);
}
$object->setCategories($values);
}
if (property_exists($data, 'media')) {
$values_1 = [];
foreach ($data->{'media'} as $value_1) {
$values_1[] = $this->serializer->deserialize(json_encode($value_1), Medium::class, 'raw', $context);
$values_1[] = $this->serializer->deserialize(json_encode($value_1), Medium::class, 'json', $context);
}
$object->setMedia($values_1);
}
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/ErrorNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class ErrorNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Error();
if (property_exists($data, 'message')) {
$object->setMessage($data->{'message'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class FlagDealRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new FlagDealRequestBody();
if (property_exists($data, 'type')) {
$object->setType($data->{'type'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/FollowupNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class FollowupNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Followup();
if (property_exists($data, 'days')) {
$object->setDays($data->{'days'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class GetRebateEmailNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new GetRebateEmail();
if (property_exists($data, 'fbUserId')) {
$object->setFbUserId($data->{'fbUserId'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class GetRebateOrPromoNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new GetRebateOrPromo();
if (property_exists($data, 'fbUserId')) {
$object->setFbUserId($data->{'fbUserId'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/ImpressionNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class ImpressionNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Impression();
if (property_exists($data, 'views')) {
$object->setViews($data->{'views'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class InitializeMigrationBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new InitializeMigrationBody();
if (property_exists($data, 'userId')) {
$object->setUserId($data->{'userId'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/MediumNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class MediumNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Medium();
if (property_exists($data, 'id')) {
$object->setId($data->{'id'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class NotifyDealRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new NotifyDealRequestBody();
if (property_exists($data, 'type')) {
$object->setType($data->{'type'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/PayloadNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class PayloadNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Payload();
if (property_exists($data, 'id')) {
$object->setId($data->{'id'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class PayoutRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new RequestPayout();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class RestoreRebateRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new RestoreRebateRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class ReviewFoundRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new ReviewFoundRequestBody();
if (property_exists($data, 'createdAt')) {
$object->setCreatedAt($data->{'createdAt'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class StoreConversionIdRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new StoreConversionIdRequestBody();
if (property_exists($data, 'conversionId')) {
$object->setConversionId($data->{'conversionId'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class StoreFBImpressionRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new StoreFBImpressionRequestBody();
if (property_exists($data, 'fbAdId')) {
$object->setFbAdId($data->{'fbAdId'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class SyncDealRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new SyncDealRequestBody();
if (property_exists($data, 'url')) {
$object->setUrl($data->{'url'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class SyncEmailForOrdersRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new SyncEmailForOrders();
if (property_exists($data, 'newEmail')) {
$object->setNewEmail($data->{'newEmail'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class UnsyncDealRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new UnsyncDealRequestBody();
if (property_exists($data, 'note')) {
$object->setNote($data->{'note'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class UpdateDeliverableRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new UpdateDeliverableRequestBody();
if (property_exists($data, 'email')) {
$object->setEmail($data->{'email'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class UpdateOrderRequestBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new UpdateOrderRequestBody();
if (property_exists($data, 'status')) {
$object->setStatus($data->{'status'});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class UpdateReviewNameBodyNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new UpdateReviewNameRequestBody();
if (property_exists($data, 'userEmail')) {
$object->setUserEmail($data->{'userEmail'});
Expand Down
2 changes: 2 additions & 0 deletions php/src/Snagshout/Promote/Normalizer/VersionNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class VersionNormalizer extends AbstractNormalizer

public function denormalize($data, $class, $format = null, array $context = [])
{
$data = (object) $data;

$object = new Version();
if (property_exists($data, 'api')) {
$object->setApi($data->{'api'});
Expand Down
4 changes: 3 additions & 1 deletion php/src/Snagshout/Promote/Resource/AbstractResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ public function __construct(HttpClient $client, SerializerInterface $serializer)
*/
public function as(ResponseInterface $response, string $class)
{
$data = $response->getBody()->getContents();

return $this->serializer
->deserialize((string)$response->getBody(), $class, 'json');
->deserialize($data, $class, 'json');
}
}

0 comments on commit 06b5b4e

Please sign in to comment.