yoti-8.x-2.5/sdk/Yoti/Util/ExtraData/ThirdPartyAttributeConverter.php

sdk/Yoti/Util/ExtraData/ThirdPartyAttributeConverter.php
<?php

namespace Yoti\Util\ExtraData;

use Yoti\Entity\AttributeDefinition;
use Yoti\Entity\AttributeIssuanceDetails;
use Yoti\Exception\ExtraDataException;
use Sharepubapi\IssuingAttributes;
use Sharepubapi\ThirdPartyAttribute as ThirdPartyAttributeProto;
use Yoti\Util\DateTime;

class ThirdPartyAttributeConverter
{
    /**
     * @param string $value
     *
     * @return \Yoti\Entity\AttributeIssuanceDetails
     */
    public static function convertValue($value)
    {
        $thirdPartyAttributeProto = new ThirdPartyAttributeProto();
        $thirdPartyAttributeProto->mergeFromString($value);

        $token = self::parseToken($thirdPartyAttributeProto->getIssuanceToken());
        $expiryDate = null;
        $issuingAttributes = [];

        $issuingAttributesProto = $thirdPartyAttributeProto->getIssuingAttributes();

        if ($issuingAttributesProto instanceof IssuingAttributes) {
            try {
                $expiryDate = DateTime::stringToDateTime($issuingAttributesProto->getExpiryDate());
            } catch (\Exception $e) {
                error_log("Failed to parse expiry date from ThirdPartyAttribute", 0);
            }

            $issuingAttributes = array_map(
                function ($definition) {
                    return new AttributeDefinition($definition->getName());
                },
                iterator_to_array($issuingAttributesProto->getDefinitions())
            );
        }

        return new AttributeIssuanceDetails(
            $token,
            $expiryDate,
            $issuingAttributes
        );
    }

    /**
     * @param string $token
     *   Tokens bytes.
     *
     * @return string
     *   Base64 encoded token.
     *
     * @throws \Yoti\Exception\ExtraDataException
     */
    private static function parseToken($token)
    {
        if (empty($token)) {
            throw new ExtraDataException('Failed to retrieve token from ThirdPartyAttribute');
        }
        return base64_encode($token);
    }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc