Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 42 additions & 9 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ name: Unit Tests
on: [ push, pull_request_target ]

jobs:
# This job will run tests for PHP 8.1
php8-1:
name: Unit Tests php8.1 (php ${{ matrix.php-version }})
runs-on: ubuntu-latest
# always run on push events
# only run on pull_request_target event when pull request pulls from fork repository
if: >
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
strategy:
fail-fast: false
matrix:
Expand All @@ -31,13 +32,44 @@ jobs:

- run: composer test

# Add a new job for PHP 8.4
php8-4:
name: Unit Tests php8.4 (php ${{ matrix.php-version }})
runs-on: ubuntu-latest
# The 'if' condition should be the same as your other PHP version jobs
if: >
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
strategy:
fail-fast: false
matrix:
php-version: [ 8.4 ] # Specify PHP 8.4 here

steps:
- uses: actions/checkout@v2

# Use shivammathur/setup-php to install PHP 8.4
- uses: shivammathur/[email protected] # Ensure you are using a version of setup-php that supports 8.4
with:
php-version: ${{ matrix.php-version }}

# You might or might not need the php-cs-fixer removal depending on its 8.4 compatibility
# - run: composer remove --dev --no-update --no-interaction friendsofphp/php-cs-fixer

- run: composer self-update

- run: composer install --no-interaction --prefer-source --dev

- run: composer test

# This job will run tests for PHP 7.4
php7-4:
name: Unit Tests php7.4 (php ${{ matrix.php-version }})
runs-on: ubuntu-latest
# always run on push events
# only run on pull_request_target event when pull request pulls from fork repository
if: >
github.event_name == 'push' ||
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
strategy:
fail-fast: false
Expand All @@ -57,13 +89,14 @@ jobs:

- run: composer test

# This job will run tests for PHP 8.0
php8-0:
name: Unit Tests php8.0 (php ${{ matrix.php-version }})
runs-on: ubuntu-latest
# always run on push events
# only run on pull_request_target event when pull request pulls from fork repository
if: >
github.event_name == 'push' ||
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
strategy:
fail-fast: false
Expand All @@ -83,18 +116,19 @@ jobs:

- run: composer test

# This job runs tests with the Protobuf C Extension
protobuf:
name: Unit Tests With Protobuf C Extension 3.13 (php ${{ matrix.php-version }})
runs-on: ubuntu-latest
# always run on push events
# only run on pull_request_target event when pull request pulls from fork repository
if: >
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
github.event_name == 'push' ||
github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != github.repository
strategy:
fail-fast: false
matrix:
php-version: [ 8.1 ]
php-version: [ 8.1 ] # You might want to add 8.4 here as well if Protobuf supports it

steps:
- uses: actions/checkout@v2
Expand All @@ -108,5 +142,4 @@ jobs:

- run: composer install --no-interaction --prefer-source --dev

- run: composer test

- run: composer test
2 changes: 1 addition & 1 deletion .php-cs-fixer.cache
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"php":"8.1.27","version":"3.22.0:v3.22.0#92b019f6c8d79aa26349d0db7671d37440dc0ff3","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"no_unused_imports":true,"ordered_imports":{"imports_order":["const","class","function"]},"php_unit_fqcn_annotation":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true},"hashes":{"\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder2419\/examples\/digitalidentity\/app\/Http\/Controllers\/IdentityController.php":"369515522c3efd6cd55a8363d4e97c05","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4308\/src\/Identity\/Policy\/Policy.php":"e1bca74eaafe5271dd1a38769fe1c3b2","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder3692\/src\/Identity\/Policy\/PolicyBuilder.php":"88302b88aba33563661d4b989b5dc429","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder2054\/tests\/Identity\/Policy\/PolicyBuilderTest.php":"a262a261102744a1acf6d5d0b421dc44","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder5221\/src\/Identity\/ReceiptBuilder.php":"2e6ef33d3401f7cbd36145ad66b3b2ef","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder289\/examples\/digitalidentity\/app\/Http\/Controllers\/ReceiptController.php":"e79ec7e1511895c954f77c713d435ad2","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder2348\/tests\/Identity\/ReceiptTest.php":"b602e6828020fef411df597e17fa7c88","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4139\/examples\/digitalidentity\/routes\/web.php":"dcdc77843f3e59dd61467a324edf0c77","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder5396\/src\/Identity\/Receipt.php":"4744c8887009fd9ffbf084f99021eb1c","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder5193\/src\/Identity\/WrappedReceipt.php":"3a77a22be093a1da75438ea2bb9fcb20","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4416\/examples\/digitalidentity\/app\/Http\/Controllers\/AdvancedIdentityController.php":"6b5c23f2ce8da246bc41d136d87ecdb6","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder5544\/examples\/digitalidentity\/app\/Http\/Controllers\/AdvancedIdentityController.php":"6b5c23f2ce8da246bc41d136d87ecdb6","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4533\/src\/Identity\/Policy\/Policy.php":"bea4b7ebb268fca1ad719f933ec82cbd","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder3559\/tests\/Identity\/Policy\/PolicyBuilderTest.php":"f6d7380ae2db4eca426bb39ccfb3a900","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder2922\/examples\/digitalidentity\/routes\/web.php":"fdf260e4dfd18c8ba12078943564875a","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder3947\/src\/Constants.php":"4bb1127c9665c5d0496b90ea3211951d","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4440\/src\/Constants.php":"99a3224f6e3fcae067362798bbab64f0","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4745\/src\/Constants.php":"afc40e02bdc3a87ff7a874826447c604","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1311\/src\/Constants.php":"77a8a39eac3e973495b7719ebd41509e","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1635\/examples\/digitalidentity\/app\/Http\/Controllers\/ReceiptController.php":"10f70ffe111a0030b29762494cc5de7d"}}
{"php":"8.1.32","version":"3.22.0:v3.22.0#92b019f6c8d79aa26349d0db7671d37440dc0ff3","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"no_unused_imports":true,"ordered_imports":{"imports_order":["const","class","function"]},"php_unit_fqcn_annotation":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true},"hashes":{"\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder2\/src\/DocScan\/Session\/Create\/SdkConfig.php":"3c5367db6d959a971a644458addf55c0","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder9\/src\/DocScan\/Session\/Create\/SdkConfig.php":"43f43af48ec97cdcdb18fc7e3214b1fe","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder6\/src\/DocScan\/Session\/Create\/SdkConfig.php":"cf9d9a38e680441b2c6f7a0ff8223f49","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder7\/src\/DocScan\/Session\/Create\/SdkConfig.php":"a8a73f190d6df54dad7b85538a5ba8c1","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder5\/src\/DocScan\/Session\/Create\/SdkConfig.php":"a8a73f190d6df54dad7b85538a5ba8c1","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder8\/src\/DocScan\/Session\/Create\/SdkConfig.php":"41598f811241011bfc9bec9efedfe2d1","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1173\/src\/DocScan\/Session\/Create\/SdkConfigBuilder.php":"bd08dbe98c30b8237c8b3dbe3fa54717","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder4\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"b6683f36fa99d0f40ca000b514484c83","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder556\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"84129c3ad0dc6ded2a483720271ca7f8","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder153\/src\/DocScan\/Session\/Create\/SdkConfigBuilder.php":"958070e7bb4bbab87eeffa375fe0c687","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder950\/tests\/DocScan\/Session\/Create\/SessionSpecificationBuilderTest.php":"96533aa316f6c2ae30d8df7286447315","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1641\/tests\/DocScan\/Session\/Create\/SessionSpecificationBuilderTest.php":"96533aa316f6c2ae30d8df7286447315","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder11\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"b6683f36fa99d0f40ca000b514484c83","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder10\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"644877fd6b116cdf2757395d7bb51614","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder3\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"b6683f36fa99d0f40ca000b514484c83","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder703\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"35aba377de39fa9938987da2791fabc7","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1422\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"b6683f36fa99d0f40ca000b514484c83","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder569\/src\/ShareUrl\/Policy\/DynamicPolicyBuilder.php":"e1b7507387c46ee254b092a3ce7bd00d","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder935\/tests\/DocScan\/Session\/Create\/SdkConfigBuilderTest.php":"ac6f9716136a4e85f1d7912120a8c34f","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1816\/tests\/DocScan\/Session\/Create\/SdkConfigBuilderTest.php":"d71391e04c522f5feecd88bbadc9e665","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1005\/tests\/DocScan\/Session\/Create\/SdkConfigBuilderTest.php":"33b4f768590c90d3d986deec7975d932","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1304\/tests\/DocScan\/Session\/Create\/SdkConfigBuilderTest.php":"a800549752475494d93c0b9e0759eed8","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder973\/examples\/digitalidentity\/vendor\/egulias\/email-validator\/src\/EmailLexer.php":"52f79f636074d41712f39ca68ca1b2e9","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder909\/examples\/digitalidentity\/sdk\/src\/Util\/Json.php":"0a82acbcdf378adf0211899e0770843d","\/private\/var\/folders\/b6\/tqq9d7y54ll62fjfysz50ry80000gn\/T\/PHP CS Fixertemp_folder1392\/examples\/profile\/sdk\/src\/Profile\/Util\/Attribute\/AnchorConverter.php":"f89140d17b89f938a289082a1b37f60f"}}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Please feel free to reach out

## Requirements

* PHP ^7.4 || ^8.0 || ^8.1
* PHP ^7.4 || ^8.0 || ^8.1 || ^8.4
* CURL PHP extension (must support TLSv1.2)

### Recommended (optional)
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"homepage": "https://yoti.com",
"license": "MIT",
"require": {
"php": "^7.4 || ^8.0 || ^8.1",
"php": "^7.4 || ^8.0 || ^8.1 || ^8.4",
"ext-json": "*",
"google/protobuf": "^3.10",
"phpseclib/phpseclib": "^3.0",
Expand Down
2 changes: 1 addition & 1 deletion src/Aml/Profile.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class Profile implements \JsonSerializable
* @param \Yoti\Aml\Address $amlAddress
* @param null|string $ssn
*/
public function __construct($givenNames, $familyName, Address $amlAddress, string $ssn = null)
public function __construct($givenNames, $familyName, Address $amlAddress, ?string $ssn = null)
{
$this->givenNames = $givenNames;
$this->familyName = $familyName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class RequestedLivenessConfig implements RequestedCheckConfigInterface
*/
private $manualCheck;

public function __construct(string $livenessType, int $maxRetries, string $manualCheck = null)
public function __construct(string $livenessType, int $maxRetries, ?string $manualCheck = null)
{
$this->livenessType = $livenessType;
$this->maxRetries = $maxRetries;
Expand Down
2 changes: 1 addition & 1 deletion src/DocScan/Session/Create/ImportTokenBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ImportTokenBuilder

private int $ttl;

public function withTtl(int $ttl = null): ImportTokenBuilder
public function withTtl(?int $ttl = null): ImportTokenBuilder
{
$this->ttl = $ttl ?? self::DEFAULT_TTL;

Expand Down
6 changes: 3 additions & 3 deletions src/DocScan/Session/Create/SdkConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ class SdkConfig implements \JsonSerializable
* @var string|null
*/
private $darkMode;

/**
* @var string|null
*/
private $primaryColourDarkMode;

/**
* @var string|null
*/
Expand Down Expand Up @@ -263,7 +263,7 @@ public function getDarkMode(): ?string
{
return $this->darkMode;
}

/**
* @return string|null
*/
Expand Down
4 changes: 2 additions & 2 deletions src/DocScan/Session/Create/SdkConfigBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class SdkConfigBuilder
* @var string|null
*/
private $darkMode;

/**
* @var string|null
*/
Expand Down Expand Up @@ -161,7 +161,7 @@ public function withBiometricConsentFlow(string $biometricConsentFlow): self
$this->biometricConsentFlow = $biometricConsentFlow;
return $this;
}

/**
* Allows configuring the number of attempts permitted for text extraction on an ID document
*
Expand Down
2 changes: 1 addition & 1 deletion src/Exception/ActivityDetailsException.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function __construct(
$message = "",
?ResponseInterface $response = null,
?array $responseBody = null,
\Throwable $previous = null
?\Throwable $previous = null
) {
parent::__construct($message, $response, $previous);

Expand Down
2 changes: 1 addition & 1 deletion src/Exception/base/YotiException.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class YotiException extends \Exception
* @param ResponseInterface|null $response
* @param \Throwable|null $previous
*/
public function __construct($message = "", ?ResponseInterface $response = null, \Throwable $previous = null)
public function __construct($message = "", ?ResponseInterface $response = null, ?\Throwable $previous = null)
{
parent::__construct($this->formatMessage($message, $response), 0, $previous);

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Exception/NetworkException.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class NetworkException extends ClientException implements NetworkExceptionInterf
public function __construct(
string $message,
RequestInterface $request,
\Throwable $previous = null
?\Throwable $previous = null
) {
$this->setRequest($request);
parent::__construct($message, 0, $previous);
Expand Down
2 changes: 1 addition & 1 deletion src/Http/Exception/RequestException.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class RequestException extends ClientException implements RequestExceptionInterf
public function __construct(
string $message,
RequestInterface $request,
\Throwable $previous = null
?\Throwable $previous = null
) {
$this->setRequest($request);
parent::__construct($message, 0, $previous);
Expand Down
2 changes: 1 addition & 1 deletion src/Http/RequestBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class RequestBuilder
/**
* @param \Yoti\Util\Config $config
*/
public function __construct(Config $config = null)
public function __construct(?Config $config = null)
{
$this->config = $config ?? new Config();
}
Expand Down
4 changes: 2 additions & 2 deletions src/Http/RequestSigner.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class RequestSigner
* @param \Yoti\Util\PemFile $pemFile
* @param string $endpoint
* @param string $httpMethod
* @param \Yoti\Http\Payload|NULL $payload
* @param \Yoti\Http\Payload|null $payload
*
* @return string
* The base64 encoded signed message
Expand All @@ -26,7 +26,7 @@ public static function sign(
PemFile $pemFile,
string $endpoint,
string $httpMethod,
Payload $payload = null
?Payload $payload = null
): string {
$messageToSign = "{$httpMethod}&$endpoint";
if ($payload instanceof Payload) {
Expand Down
2 changes: 1 addition & 1 deletion src/Identity/Content/ApplicationContent.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ApplicationContent
private ?ApplicationProfile $profile;
private ?ExtraData $extraData;

public function __construct(ApplicationProfile $profile = null, ExtraData $extraData = null)
public function __construct(?ApplicationProfile $profile = null, ?ExtraData $extraData = null)
{
$this->profile = $profile;
$this->extraData = $extraData;
Expand Down
2 changes: 1 addition & 1 deletion src/Identity/Content/Content.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class Content
private ?string $profile;
private ?string $extraData;

public function __construct(string $profile = null, string $extraData = null)
public function __construct(?string $profile = null, ?string $extraData = null)
{
$this->profile = $profile;
$this->extraData = $extraData;
Expand Down
2 changes: 1 addition & 1 deletion src/Identity/Content/UserContent.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class UserContent
private ?UserProfile $profile;
private ?ExtraData $extraData;

public function __construct(UserProfile $profile = null, ExtraData $extraData = null)
public function __construct(?UserProfile $profile = null, ?ExtraData $extraData = null)
{
$this->profile = $profile;
$this->extraData = $extraData;
Expand Down
Loading
Loading