|
1
|
|
|
<?php namespace CMPayments\SchemaValidator\Exceptions; |
|
2
|
|
|
|
|
3
|
|
|
use CMPayments\Exception\BaseException; |
|
4
|
|
|
|
|
5
|
|
|
/** |
|
6
|
|
|
* Class ValidateSchemaException |
|
7
|
|
|
* |
|
8
|
|
|
* @package CMPayments\SchemaValidator\Exceptions |
|
9
|
|
|
* @Author Boy Wijnmaalen <[email protected]> |
|
10
|
|
|
*/ |
|
11
|
|
|
class ValidateSchemaException extends BaseException |
|
12
|
|
|
{ |
|
13
|
|
|
const ERROR_SCHEMA_IS_NOT_VALID_JSON = 1; |
|
14
|
|
|
const ERROR_INPUT_IS_NOT_A_OBJECT = 2; |
|
15
|
|
|
const ERROR_SCHEMA_CANNOT_BE_EMPTY_IN_PATH = 3; |
|
16
|
|
|
const ERROR_EMPTY_KEY_NOT_ALLOWED_IN_OBJECT = 4; |
|
17
|
|
|
const ERROR_SCHEMA_PROPERTY_NOT_DEFINED = 5; |
|
18
|
|
|
const ERROR_SCHEMA_PROPERTY_VALUE_IS_NOT_VALID = 6; |
|
19
|
|
|
const ERROR_SCHEMA_PROPERTY_TYPE_NOT_VALID = 7; |
|
20
|
|
|
const ERROR_SCHEMA_MAX_PROPERTY_CANNOT_NOT_BE_ZERO = 8; |
|
21
|
|
|
const ERROR_SCHEMA_PROPERTY_MIN_NOT_BIGGER_THAN_MAX = 9; |
|
22
|
|
|
const ERROR_SCHEMA_PROPERTY_REQUIRED_MUST_BE_AN_ARRAY = 10; |
|
23
|
|
|
const ERROR_SCHEMA_REQUIRED_AND_PROPERTIES_MUST_MATCH = 11; |
|
24
|
|
|
const ERROR_INVALID_REFERENCE = 12; |
|
25
|
|
|
const ERROR_NO_LOCAL_DEFINITIONS_HAVE_BEEN_DEFINED = 13; |
|
26
|
|
|
const ERROR_CHECK_IF_LOCAL_DEFINITIONS_EXISTS = 14; |
|
27
|
|
|
const ERROR_CURL_NOT_INSTALLED = 15; |
|
28
|
|
|
const ERROR_REMOTE_REFERENCE_DOES_NOT_EXIST = 16; |
|
29
|
|
|
const ERROR_NO_DATA_WAS_FOUND_IN_REMOTE_SCHEMA = 17; |
|
30
|
|
|
const ERROR_NO_VALID_JSON_WAS_FOUND_IN_REMOTE_SCHEMA = 18; |
|
31
|
|
|
const ERROR_INPUT_IS_NOT_A_VALID_PREPOSITION = 19; |
|
32
|
|
|
const ERROR_SCHEMA_PROPERTY_TYPE_IS_ARRAY_BUT_VALUES_ARE_NOT_UNIQUE = 20; |
|
33
|
|
|
const ERROR_SCHEMA_PROPERTY_TYPE_IS_ARRAY_BUT_VALUES_AR_NOT_ALL_STRINGS = 21; |
|
34
|
|
|
|
|
35
|
|
|
protected $messages = [ |
|
36
|
|
|
self::ERROR_SCHEMA_IS_NOT_VALID_JSON => 'Schema is not valid JSON', |
|
37
|
|
|
self::ERROR_INPUT_IS_NOT_A_OBJECT => '\'%s\' is not an object but %s \'%s\'%s', |
|
38
|
|
|
self::ERROR_SCHEMA_CANNOT_BE_EMPTY_IN_PATH => 'The Schema input cannot be empty in %s', |
|
39
|
|
|
self::ERROR_EMPTY_KEY_NOT_ALLOWED_IN_OBJECT => 'It\'s not allowed for object \'%s\' to have an empty key', |
|
40
|
|
|
self::ERROR_SCHEMA_PROPERTY_NOT_DEFINED => 'The mandatory Schema Property \'%s\' is not defined for \'%s\'', |
|
41
|
|
|
self::ERROR_SCHEMA_PROPERTY_VALUE_IS_NOT_VALID => 'The given value \'%s\' for property \'%s.%s\' is not valid. Please use %sthe following %s: \'%s\'', |
|
42
|
|
|
self::ERROR_SCHEMA_PROPERTY_TYPE_NOT_VALID => 'The Schema Property \'%s.%s\' is not %s %s but %s %s', |
|
43
|
|
|
self::ERROR_SCHEMA_MAX_PROPERTY_CANNOT_NOT_BE_ZERO => 'The Schema Property \'%s.%s\' cannot be zero', |
|
44
|
|
|
self::ERROR_SCHEMA_PROPERTY_MIN_NOT_BIGGER_THAN_MAX => 'The Schema Property \'%s.%s\' with value \'%d\' cannot be greater than Schema Property \'%s.%s\' with value \'%d\'', |
|
45
|
|
|
self::ERROR_SCHEMA_PROPERTY_REQUIRED_MUST_BE_AN_ARRAY => 'The Schema Property \'%s\' is not an array but %s \'%s\'', |
|
46
|
|
|
self::ERROR_SCHEMA_REQUIRED_AND_PROPERTIES_MUST_MATCH => 'The %s: \'%s\' %s defined in \'%s\' but %s not defined in \'%s.properties\'', |
|
47
|
|
|
self::ERROR_INVALID_REFERENCE => 'Invalid reference; %s', |
|
48
|
|
|
self::ERROR_NO_LOCAL_DEFINITIONS_HAVE_BEEN_DEFINED => 'No local definitions have been defined yet', |
|
49
|
|
|
self::ERROR_CHECK_IF_LOCAL_DEFINITIONS_EXISTS => 'The reference \'%s\' could not be matched to; \'%s\'', |
|
50
|
|
|
self::ERROR_CURL_NOT_INSTALLED => 'cURL not installed', |
|
51
|
|
|
self::ERROR_REMOTE_REFERENCE_DOES_NOT_EXIST => 'The remote reference \'%s\' does not exist', |
|
52
|
|
|
self::ERROR_NO_DATA_WAS_FOUND_IN_REMOTE_SCHEMA => 'No data found at \'%s\'', |
|
53
|
|
|
self::ERROR_NO_VALID_JSON_WAS_FOUND_IN_REMOTE_SCHEMA => 'No valid JSON Schema found at \'%s\'', |
|
54
|
|
|
self::ERROR_INPUT_IS_NOT_A_VALID_PREPOSITION => '\'%s\' is not a valid preposition', |
|
55
|
|
|
self::ERROR_SCHEMA_PROPERTY_TYPE_IS_ARRAY_BUT_VALUES_ARE_NOT_UNIQUE => 'The Schema Property \'%s.%s\' does not contain unique values', |
|
56
|
|
|
self::ERROR_SCHEMA_PROPERTY_TYPE_IS_ARRAY_BUT_VALUES_AR_NOT_ALL_STRINGS => 'The values of Schema Property \'%s.%s\' are not all of type \'%s\'' |
|
57
|
|
|
]; |
|
58
|
|
|
|
|
59
|
|
|
/** |
|
60
|
|
|
* prepend classname to clarify error origin |
|
61
|
|
|
* |
|
62
|
|
|
* @param int $code |
|
63
|
|
|
* @param null $default |
|
64
|
|
|
* @param string $msgArray |
|
65
|
|
|
* |
|
66
|
|
|
* @return string |
|
67
|
|
|
*/ |
|
68
|
|
|
public function getItemFromVariableArray($code, $default = null, $msgArray = 'messages') |
|
69
|
|
|
{ |
|
70
|
|
|
return (new \ReflectionClass($this))->getShortName() . ': ' . parent::getItemFromVariableArray($code, $default, $msgArray); |
|
71
|
|
|
} |
|
72
|
|
|
} |
|
73
|
|
|
|