forked from Thijzer/csv-validation-header.wip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAkeneoErrorFactory.php
49 lines (43 loc) · 1.67 KB
/
AkeneoErrorFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
namespace Misery\Component\Akeneo\Client\Errors;
class AkeneoErrorFactory
{
public static function createErrors($payload): AkeneoErrors
{
$errors = [];
// convert to multi-payload
if (!isset($payload[0]) && isset($payload['code'])) {
$singlePayLoad = $payload;
unset($payload);
$payload[0] = $singlePayLoad;
}
// Handle multi-payload response
if (is_array($payload) && isset($payload[0])) {
foreach (array_filter($payload) as $msg) {
$statusCode = $msg['status_code'] ?? $msg['code'] ?? null;
$id = $msg['identifier'] ?? $msg['code'] ?? 'unknown_id';
if (isset($msg['message'])) {
$errors[] = new AkeneoError(
$id,
implode(': ', array_filter([$statusCode, $msg['message']]))
);
}
// Handle Errors
if (isset($msg['errors']) && is_array($msg['errors'])) {
foreach ($msg['errors'] as $error) {
if (isset($error['message'])) {
$errors[] = new AkeneoError(
$error['property'] ?? 'unknown',
$error['message'],
$error['attribute'] ?? null,
$error['locale'] ?? null,
$error['scope'] ?? null,
);
}
}
}
}
}
return new AkeneoErrors('Validation failed', $errors);
}
}