Skip to content

Commit

Permalink
Returned null if value contains & (#73)
Browse files Browse the repository at this point in the history
  • Loading branch information
CrazyTapok-bit committed Apr 17, 2024
1 parent a0df092 commit 24bf24d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 12 deletions.
14 changes: 4 additions & 10 deletions src/Validator/InitDataValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,9 @@ public function validate(string $data): InitData|false
*/
public function parse(string $data): array
{
$rawData = explode('&', rawurldecode($data));

return array_merge(...array_map(
function($item) {
if(strpos($item, '=') === false) return [];
[$prop, $value] = explode('=', $item);
return [$prop => $value];
},
$rawData
));
parse_str($data, $result);

/** @var array<string, int|string|bool> $result */
return $result = array_filter($result , 'is_string', ARRAY_FILTER_USE_KEY);
}
}
5 changes: 3 additions & 2 deletions tests/Validator/InitDataValidatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class InitDataValidatorTest extends TestCase
protected InitDataValidator $validator;

protected string $initData = 'query_id=AAE5gYJAAAAAADmBgkD7IagW&user=%7B%22id%22%3A1082294585%2C%22first_name%22%3A%22%D0%A1%D0%B5%D1%80%D0%B3%D1%96%D0%B9%22%2C%22last_name%22%3A%22%D0%97%D0%B0%D1%81%D0%B0%D0%B4%D0%B8%D0%BD%D1%81%D1%8C%D0%BA%D0%B8%D0%B9%22%2C%22username%22%3A%22CrazyTapokUA%22%2C%22language_code%22%3A%22uk%22%7D&auth_date=1684086610&hash=f0f336451c74fc794e2b0b9fcaf3e27e16ca74afbfd0958a8d21efd9e8e2b53c';
protected string $initDataAmpersand = 'query_id=AAE5gYJAAAAAADmBgkD7IagW&user=%7B%22id%22%3A1082294585%2C%22first_name%22%3A%22%D0%A1%D0%B5%D1%80%D0%B3%D1%96%D0%B9%20%26%20%D0%A1%D0%B5%D1%80%D0%B3%D1%96%D0%B9%22%2C%22last_name%22%3A%22%D0%97%D0%B0%D1%81%D0%B0%D0%B4%26%D0%B8%D0%BD%D1%81%D1%8C%D0%BA%D0%B8%D0%B9%22%2C%22username%22%3A%22CrazyTapok%26UA%22%2C%22language_code%22%3A%22uk%22%7D&auth_date=1684086610&hash=f0f336451c74fc794e2b0b9fcaf3e27e16ca74afbfd0958a8d21efd9e8e2b53c';

protected function setUp(): void
{
Expand All @@ -20,11 +21,11 @@ protected function setUp(): void

public function testParse(): void
{
$parsed = $this->validator->parse($this->initData);
$parsed = $this->validator->parse($this->initDataAmpersand);

$this->assertEquals([
'query_id' => 'AAE5gYJAAAAAADmBgkD7IagW',
'user' => '{"id":1082294585,"first_name":"Сергій","last_name":"Засадинський","username":"CrazyTapokUA","language_code":"uk"}',
'user' => '{"id":1082294585,"first_name":"Сергій & Сергій","last_name":"Засад&инський","username":"CrazyTapok&UA","language_code":"uk"}',
'auth_date' => 1684086610,
'hash' => 'f0f336451c74fc794e2b0b9fcaf3e27e16ca74afbfd0958a8d21efd9e8e2b53c'
], $parsed);
Expand Down

0 comments on commit 24bf24d

Please sign in to comment.