Skip to content

Commit 1c867d9

Browse files
authored
Merge pull request #40 from tg-bot-api/bugfix/39-fix-normalization
Bugfix/39 fix normalization
2 parents fdd4b3f + e3032cd commit 1c867d9

File tree

6 files changed

+82
-21
lines changed

6 files changed

+82
-21
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
2323
- Nothing
2424
--->
2525

26+
## 1.6.2 - 2020-07-13
27+
28+
### Fixed
29+
- fixed EditMessageMediaMethod normalization (#33).
30+
31+
2632
## 1.6.1 - 2020-07-03
2733

2834
### Fixed

src/BotApiNormalizer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
1414
use Symfony\Component\Serializer\Serializer;
1515
use TgBotApi\BotApiBase\Normalizer\AnswerInlineQueryNormalizer;
16+
use TgBotApi\BotApiBase\Normalizer\EditMessageMediaNormalizer;
1617
use TgBotApi\BotApiBase\Normalizer\EditMessageResponseNormalizer;
1718
use TgBotApi\BotApiBase\Normalizer\InputFileNormalizer;
1819
use TgBotApi\BotApiBase\Normalizer\InputMediaNormalizer;
@@ -81,6 +82,7 @@ public function normalize($method): BotApiRequestInterface
8182
new SetMyCommandsNormalizer($objectNormalizer),
8283
new InputFileNormalizer($files),
8384
new MediaGroupNormalizer(new InputMediaNormalizer($objectNormalizer, $files), $objectNormalizer),
85+
new EditMessageMediaNormalizer(new InputMediaNormalizer($objectNormalizer, $files), $objectNormalizer),
8486
new JsonSerializableNormalizer($objectNormalizer),
8587
new AnswerInlineQueryNormalizer($objectNormalizer),
8688
new DateTimeNormalizer(),
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TgBotApi\BotApiBase\Normalizer;
6+
7+
use Symfony\Component\Serializer\Exception\ExceptionInterface;
8+
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
9+
use Symfony\Component\Serializer\Serializer;
10+
use TgBotApi\BotApiBase\Method\EditMessageMediaMethod;
11+
12+
/**
13+
* Class MediaGroupNormalizer.
14+
*/
15+
class EditMessageMediaNormalizer implements NormalizerInterface
16+
{
17+
/**
18+
* @var InputMediaNormalizer
19+
*/
20+
private $inputMediaNormalizer;
21+
/**
22+
* @var NormalizerInterface
23+
*/
24+
private $objectNormalizer;
25+
26+
/**
27+
* MediaGroupNormalizer constructor.
28+
*/
29+
public function __construct(
30+
InputMediaNormalizer $inputMediaNormalizer,
31+
NormalizerInterface $objectNormalizer
32+
) {
33+
$this->inputMediaNormalizer = $inputMediaNormalizer;
34+
$this->objectNormalizer = $objectNormalizer;
35+
}
36+
37+
/**
38+
* @param EditMessageMediaMethod $topic
39+
* @param null $format
40+
*
41+
* @throws ExceptionInterface
42+
*
43+
* @return array|bool|float|int|mixed|string
44+
*/
45+
public function normalize($topic, $format = null, array $context = [])
46+
{
47+
$serializer = new Serializer([
48+
$this->inputMediaNormalizer,
49+
new JsonSerializableNormalizer($this->objectNormalizer),
50+
$this->objectNormalizer,
51+
]);
52+
$topic->media = \json_encode($serializer->normalize($topic->media, null, ['skip_null_values' => true]));
53+
54+
$topic->replyMarkup = $serializer->normalize($topic->replyMarkup, null, ['skip_null_values' => true]);
55+
56+
return $serializer->normalize($topic, null, ['skip_null_values' => true]);
57+
}
58+
59+
/**
60+
* @param mixed $data
61+
* @param null $format
62+
*/
63+
public function supportsNormalization($data, $format = null): bool
64+
{
65+
return $data instanceof EditMessageMediaMethod;
66+
}
67+
}

src/Normalizer/InputMediaNormalizer.php

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
99
use Symfony\Component\Serializer\Serializer;
1010
use TgBotApi\BotApiBase\Type\InputFileType;
11-
use TgBotApi\BotApiBase\Type\InputMedia\InputMediaPhotoType;
12-
use TgBotApi\BotApiBase\Type\InputMedia\InputMediaVideoType;
11+
use TgBotApi\BotApiBase\Type\InputMedia\InputMediaType;
1312

1413
/**
1514
* Class InputMediaNormalizer.
@@ -28,7 +27,6 @@ class InputMediaNormalizer implements NormalizerInterface
2827
/**
2928
* InputMediaNormalizer constructor.
3029
*
31-
* @param NormalizerInterface $objectNormalizer
3230
* @param $files
3331
*/
3432
public function __construct(NormalizerInterface $objectNormalizer, &$files)
@@ -38,9 +36,8 @@ public function __construct(NormalizerInterface $objectNormalizer, &$files)
3836
}
3937

4038
/**
41-
* @param mixed $topic
42-
* @param null $format
43-
* @param array $context
39+
* @param InputMediaType $topic
40+
* @param null $format
4441
*
4542
* @throws ExceptionInterface
4643
*
@@ -68,12 +65,9 @@ public function normalize($topic, $format = null, array $context = [])
6865
/**
6966
* @param mixed $data
7067
* @param null $format
71-
*
72-
* @return bool
7368
*/
7469
public function supportsNormalization($data, $format = null): bool
7570
{
76-
return $data instanceof InputMediaPhotoType ||
77-
$data instanceof InputMediaVideoType;
71+
return $data instanceof InputMediaType;
7872
}
7973
}

src/Normalizer/JsonSerializableNormalizer.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ class JsonSerializableNormalizer implements NormalizerInterface
2525

2626
/**
2727
* JsonSerializableNormalizer constructor.
28-
*
29-
* @param NormalizerInterface $objectNormalizer
3028
*/
3129
public function __construct(NormalizerInterface $objectNormalizer)
3230
{
@@ -36,11 +34,10 @@ public function __construct(NormalizerInterface $objectNormalizer)
3634
/**
3735
* @param mixed $topic
3836
* @param null $format
39-
* @param array $context
4037
*
4138
* @throws ExceptionInterface
4239
*
43-
* @return array|bool|false|float|int|string
40+
* @return string
4441
*/
4542
public function normalize($topic, $format = null, array $context = [])
4643
{
@@ -52,8 +49,6 @@ public function normalize($topic, $format = null, array $context = [])
5249
/**
5350
* @param mixed $data
5451
* @param null $format
55-
*
56-
* @return bool
5752
*/
5853
public function supportsNormalization($data, $format = null): bool
5954
{

tests/Method/EditMessageMediaMethodTest.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,18 +159,15 @@ public function testEncodeMediaAnimation()
159159
}
160160

161161
/**
162-
* @param array $excepted
163-
* @param EditMessageMediaMethod $actual
164-
*
165162
* @throws \TgBotApi\BotApiBase\Exception\ResponseException
166163
*/
167164
private function queryApi(array $excepted, EditMessageMediaMethod $actual)
168165
{
169166
$this->getBotWithFiles(
170167
'editMessageMedia',
171168
$excepted,
172-
['media' => ['thumb' => true, 'media' => true]],
173-
['reply_markup'],
169+
['media' => ['media' => true, 'thumb' => true]],
170+
['media', 'reply_markup'],
174171
true
175172
)->editMessageMedia($actual);
176173
}

0 commit comments

Comments
 (0)