From f8b8e411078e23d55b54f94a0dc43e4b035b512f Mon Sep 17 00:00:00 2001 From: Asmir Mustafic Date: Thu, 10 Sep 2020 10:02:24 +0200 Subject: [PATCH] add support for Base64Encoded XSD type --- src/Jms/Handler/BaseTypesHandler.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/Jms/Handler/BaseTypesHandler.php b/src/Jms/Handler/BaseTypesHandler.php index b1c24d4..9a2f526 100644 --- a/src/Jms/Handler/BaseTypesHandler.php +++ b/src/Jms/Handler/BaseTypesHandler.php @@ -24,9 +24,35 @@ public static function getSubscribingMethods() 'format' => 'xml', 'type' => 'GoetasWebservices\Xsd\XsdToPhp\Jms\SimpleListOf', 'method' => 'simpleListOfFromXML' + ), + array( + 'direction' => GraphNavigator::DIRECTION_SERIALIZATION, + 'format' => 'xml', + 'type' => 'GoetasWebservices\Xsd\XsdToPhp\Jms\Base64Encoded', + 'method' => 'base64EncodedToXml' + ), + array( + 'direction' => GraphNavigator::DIRECTION_DESERIALIZATION, + 'format' => 'xml', + 'type' => 'GoetasWebservices\Xsd\XsdToPhp\Jms\Base64Encoded', + 'method' => 'base64EncodedFromXml' ) ); } + public function base64EncodedToXml(XmlSerializationVisitor $visitor, $data, array $type, Context $context) + { + return $visitor->visitSimpleString(base64_encode($data), $type, $context); + } + + public function base64EncodedFromXml(XmlDeserializationVisitor $visitor, $data, array $type) + { + $attributes = $data->attributes('xsi', true); + if (isset($attributes['nil'][0]) && (string)$attributes['nil'][0] === 'true') { + return null; + } + + return base64_decode((string)$data); + } public function simpleListOfToXml(XmlSerializationVisitor $visitor, $object, array $type, Context $context) {