@@ -47,19 +47,18 @@ private function convertAvro(array $avscArray): array
47
47
/** @var string|mixed[] $items */
48
48
$ items = $ avscArray ['items ' ];
49
49
50
- if (
51
- true === $ this ->isBasicType ($ items )
52
- || (true === is_array ($ items ) && true === $ this ->isBasicTypeArray ($ items ))
53
- ) {
54
- $ jsonArray ['items ' ] = $ items ;
50
+ if (true === $ this ->isBasicType ($ items )) {
51
+ $ jsonArray ['items ' ] = ['type ' => $ items ];
52
+ } elseif (true === is_array ($ items ) && true === $ this ->isBasicTypeArray ($ items )) {
53
+ $ jsonArray ['items ' ] = $ this ->getXOf ($ items , 'oneOf ' );
55
54
} elseif (
56
55
true === is_array ($ items )
57
56
&& true === isset ($ items ['type ' ])
58
57
&& 'record ' === $ items ['type ' ]
59
58
) {
60
59
$ jsonArray ['items ' ] = $ this ->convertAvro ($ items );
61
60
} elseif (true === is_array ($ items )) {
62
- $ jsonArray ['items ' ] = $ this ->getAnyOf ($ items );
61
+ $ jsonArray ['items ' ] = $ this ->getXOf ($ items );
63
62
}
64
63
}
65
64
if ('name ' === $ key && true === is_string ($ value )) {
@@ -99,7 +98,7 @@ private function convertAvroFieldsToJsonFields(array $avroFields): array
99
98
'description ' => $ field ['doc ' ]
100
99
];
101
100
} elseif (true === is_array ($ fieldType )) {
102
- $ fields [$ field ['name ' ]] = $ this ->getAnyOf ($ fieldType );
101
+ $ fields [$ field ['name ' ]] = $ this ->getXOf ($ fieldType );
103
102
}
104
103
}
105
104
@@ -133,18 +132,18 @@ private function getRequiredFields(array $avroFields): array
133
132
* @param mixed[] $types
134
133
* @return mixed[]
135
134
*/
136
- private function getAnyOf (array $ types )
135
+ private function getXOf (array $ types, string $ ofType = ' anyOf ' )
137
136
{
138
- $ anyOf = [];
137
+ $ xOf = [];
139
138
140
139
foreach ($ types as $ type ) {
141
140
if (false === is_string ($ type ) && false === is_array ($ type )) {
142
141
continue ;
143
142
}
144
- $ anyOf [ ' anyOf ' ][] = $ this ->getAnyOfType ($ type );
143
+ $ xOf [ $ ofType ][] = $ this ->getAnyOfType ($ type );
145
144
}
146
145
147
- return $ anyOf ;
146
+ return $ xOf ;
148
147
}
149
148
150
149
/**
0 commit comments