Skip to content

Commit

Permalink
[fix #44] Add support for last_ad_referral in UserResponse
Browse files Browse the repository at this point in the history
  • Loading branch information
Romain Monteil committed Apr 23, 2017
1 parent 4e5fa53 commit d9b0035
Show file tree
Hide file tree
Showing 19 changed files with 164 additions and 27 deletions.
4 changes: 2 additions & 2 deletions src/Model/Callback/AccountLinking.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ public function getAuthorizationCode()

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\AccountLinking
*/
public static function create(array $payload)
public static function create(array $payload): AccountLinking
{
$authorizationCode = $payload['authorization_code'] ?? null;

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/CheckoutUpdate.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ public function getShippingAddress(): Address

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\CheckoutUpdate
*/
public static function create(array $payload)
public static function create(array $payload): CheckoutUpdate
{
$shippingAddress = Address::create($payload['shipping_address']);

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Delivery.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ public function getMessageIds(): array

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Delivery
*/
public static function create(array $payload)
public static function create(array $payload): Delivery
{
$messageIds = $payload['mids'] ?? [];

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Entry.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ public function getEvents(): array

/**
* @param array $entry
* @return static
* @return \Kerox\Messenger\Model\Callback\Entry
*/
public static function create(array $entry)
public static function create(array $entry): Entry
{
$events = [];
foreach ($entry['messaging'] as $event) {
Expand Down
2 changes: 1 addition & 1 deletion src/Model/Callback/Message.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public function hasAttachments(): bool

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Message
*/
public static function create(array $payload)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Model/Callback/MessageEcho.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public function getMetadata()

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\MessageEcho
*/
public static function create(array $payload)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Optin.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ public function getRef(): string

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Optin
*/
public static function create(array $payload)
public static function create(array $payload): Optin
{
return new static($payload['ref']);
}
Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,9 @@ public function getShippingOptionId(): string

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Payment
*/
public static function create(array $payload)
public static function create(array $payload): Payment
{
$requestedUserInfo = RequestedUserInfo::create($payload['requested_user_info']);
$paymentCredential = PaymentCredential::create($payload['payment_credential']);
Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Payment/PaymentCredential.php
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,9 @@ public function getFbPaymentId(): string

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Payment\PaymentCredential
*/
public static function create(array $payload)
public static function create(array $payload): PaymentCredential
{
$tokenizedCard = $payload['tokenized_card'] ?? null;
$tokenizedCvv = $payload['tokenized_cvv'] ?? null;
Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Payment/RequestedUserInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ public function getContactPhone(): string

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Payment\RequestedUserInfo
*/
public static function create(array $payload)
public static function create(array $payload): RequestedUserInfo
{
$shippingAddress = Address::create($payload['shipping_address']);

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Postback.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ public function getReferral()

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Postback
*/
public static function create(array $payload)
public static function create(array $payload): Postback
{
$referral = isset($payload['referral']) ? Referral::create($payload['referral']) : null;

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/PreCheckout.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ public function getAmount()

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\PreCheckout
*/
public static function create(array $payload)
public static function create(array $payload): PreCheckout
{
$requestedUserInfo = RequestedUserInfo::create($payload['requested_user_info']);

Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Read.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ public function getSequence(): int

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Read
*/
public static function create(array $payload)
public static function create(array $payload): Read
{
return new static($payload['watermark'], $payload['seq']);
}
Expand Down
4 changes: 2 additions & 2 deletions src/Model/Callback/Referral.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ public function getType(): string

/**
* @param array $payload
* @return static
* @return \Kerox\Messenger\Model\Callback\Referral
*/
public static function create(array $payload)
public static function create(array $payload): Referral
{
return new static($payload['ref'], $payload['source'], $payload['type']);
}
Expand Down
98 changes: 98 additions & 0 deletions src/Model/Referral.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?php

namespace Kerox\Messenger\Model;

class Referral
{

/**
* @var string
*/
protected $source;

/**
* @var string
*/
protected $type;

/**
* @var string
*/
protected $adId;

/**
* @var null|string
*/
protected $ref;

/**
* Referral constructor.
*
* @param string $source
* @param string $type
* @param string $adId
*/
public function __construct(string $source, string $type, string $adId)
{
$this->source = $source;
$this->type = $type;
$this->adId = $adId;
}

/**
* @return string
*/
public function getSource(): string
{
return $this->source;
}

/**
* @return string
*/
public function getType(): string
{
return $this->type;
}

/**
* @return string
*/
public function getAdId(): string
{
return $this->adId;
}

/**
* @return null|string
*/
public function getRef()
{
return $this->ref;
}

/**
* @param string $ref
* @return \Kerox\Messenger\Model\Referral
*/
public function setRef(string $ref): Referral
{
$this->ref = $ref;

return $this;
}

/**
* @param array $referral
* @return \Kerox\Messenger\Model\Referral
*/
public static function create(array $referral): Referral
{
$self = new static($referral['source'], $referral['type'], $referral['ad_id']);
if (isset($referral['ref'])) {
$self->setRef($referral['ref']);
}

return $self;
}
}
26 changes: 26 additions & 0 deletions src/Response/UserResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Kerox\Messenger\Response;

use Kerox\Messenger\Model\Referral;
use Kerox\Messenger\UserInterface;
use Psr\Http\Message\ResponseInterface;

Expand Down Expand Up @@ -43,6 +44,11 @@ class UserResponse extends AbstractResponse implements UserInterface
*/
protected $isPaymentEnabled;

/**
* @var null|\Kerox\Messenger\Model\Referral
*/
protected $lastAdReferral;

/**
* UserProfileResponse constructor.
*
Expand All @@ -66,6 +72,7 @@ protected function parseResponse(array $response)
$this->setTimezone($response);
$this->setGender($response);
$this->setIsPaymentEnabled($response);
$this->setLastAdReferral($response);
}

/**
Expand Down Expand Up @@ -200,4 +207,23 @@ private function setIsPaymentEnabled(array $response)
$this->isPaymentEnabled = $response[self::IS_PAYMENT_ENABLED];
}
}

/**
* @return null|\Kerox\Messenger\Model\Referral
*/
public function getLastAdReferral()
{
return $this->lastAdReferral;
}

/**
* @param array $response
* @return void
*/
private function setLastAdReferral(array $response)
{
if (isset($response[self::LAST_AD_REFERRAL])) {
$this->lastAdReferral = Referral::create($response[self::LAST_AD_REFERRAL]);
}
}
}
1 change: 1 addition & 0 deletions src/UserInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ interface UserInterface
const TIMEZONE = 'timezone';
const GENDER = 'gender';
const IS_PAYMENT_ENABLED = 'is_payment_enabled';
const LAST_AD_REFERRAL = 'last_ad_referral';
}
8 changes: 7 additions & 1 deletion tests/Mocks/Response/User/user.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,11 @@
"locale": "en_US",
"timezone": -7,
"gender": "male",
"is_payment_enabled": true
"is_payment_enabled": true,
"last_ad_referral": {
"source": "ADS",
"type": "OPEN_THREAD",
"ad_id": "6045246247433",
"ref": "myparam"
}
}
6 changes: 6 additions & 0 deletions tests/TestCase/Response/UserResponseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
namespace Kerox\Messenger\Test\TestCase\Response;

use GuzzleHttp\Psr7\Response;
use Kerox\Messenger\Model\Referral;
use Kerox\Messenger\Response\UserResponse;
use Kerox\Messenger\Test\TestCase\AbstractTestCase;

Expand All @@ -22,5 +23,10 @@ public function testUserResponse()
$this->assertEquals(-7, $userResponse->getTimezone());
$this->assertEquals('male', $userResponse->getGender());
$this->assertTrue($userResponse->getIsPaymentEnabled());
$this->assertInstanceOf(Referral::class, $userResponse->getLastAdReferral());
$this->assertEquals('ADS', $userResponse->getLastAdReferral()->getSource());
$this->assertEquals('OPEN_THREAD', $userResponse->getLastAdReferral()->getType());
$this->assertEquals('6045246247433', $userResponse->getLastAdReferral()->getAdId());
$this->assertEquals('myparam', $userResponse->getLastAdReferral()->getRef());
}
}

0 comments on commit d9b0035

Please sign in to comment.