fix(php): Fix date formatting in ObjectSerializer #372
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem :
Function
getVideosPlays()
from Analytics PHP Api throw 400 error :ApiVideo\Client\Exception\HttpException: HTTP 400 returned. {"type":"https:\/\/docs.api.video\/reference\/request-invalid-query-parameter","title":"A query parameter is invalid.","status":400,"detail":"This value is not a valid date.","name":"from"}
Code :
$dateFrom = (new DateTime())->sub(new DateInterval('P1D')); $apiVideoSessions = $this->client->analytics()->getVideosPlays($dateFrom, 'videoId');
Because :
In src/Api/AnalyticsApi.php :
$queryParams['from'] = ObjectSerializer::sanitizeForSerialization($from, 'date');
$queryParams['to'] = ObjectSerializer::sanitizeForSerialization($to, 'date');
$queryParams['from'] = ObjectSerializer::sanitizeForSerialization($from, 'date');
$queryParams['to'] = ObjectSerializer::sanitizeForSerialization($to, 'date');
Second parameter of ObjectSerializer::sanitizeForSerialization must be $type and not $format.
In
ObjectSerializer::sanitizeForSerialization($data, $type = null, $format = null)
:if ($data instanceof \DateTime) { return ($format === 'date') ? $data->format('Y-m-d') : $data->format(self::$dateTimeFormat); }
Fix :
if ($data instanceof \DateTime) { return ($type === 'date' || $format === 'date') ? $data->format('Y-m-d') : $data->format(self::$dateTimeFormat); }