Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/extmag/shiplab/Helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/extmag/shiplab/Helper/Connector.php
<?php
/**
 * Copyright © Extmag. All rights reserved.
 */

namespace Extmag\Shiplab\Helper;

use DOMDocument;
use Exception;
use Extmag\Shiplab\Model\Source\CarrierCodes;
use Extmag\Shiplab\Webservice\Logger;
use Magento\Framework\Module\Dir\Reader;

class Connector
{
    public $manager;
    public ResponseFactory $responseFactory;
    public Reader $configReader;
    public CarrierCodes $carrierCodes;

    /**
     * @param Manager $manager
     * @param ResponseFactory $responseFactory
     * @param Reader $configReader
     * @param CarrierCodes $carrierCodes
     */
    public function __construct(
        Manager         $manager,
        ResponseFactory $responseFactory,
        Reader          $configReader,
        CarrierCodes    $carrierCodes
    ) {
        $this->manager = $manager;
        $this->responseFactory = $responseFactory;
        $this->configReader = $configReader;
        $this->carrierCodes = $carrierCodes;
    }

    /**
     * Get API URL
     *
     * @param $isTest
     * @param $carrierCode
     * @param $requestType
     * @param array $request
     * @return mixed
     * @throws Exception
     */
    public function getAPIUrl($isTest, $carrierCode, $requestType, $request = [])
    {
        if (!empty($isTest)) {
            $isTest = (int)$isTest;
        } else {
            $isTest = 0;
        }

        $carrierData = $this->carrierCodes->getCarriers($carrierCode);
        if (!empty($carrierData['api_urls'])) {
            $carriersAndTypes = $carrierData['api_urls'];
        }

        if (isset($carriersAndTypes[$isTest][strtolower($requestType)])) {
            return $carriersAndTypes[$isTest][strtolower($requestType)];
        } else {
            throw new Exception(__('Carrier code "%1" or Request type "%2" is not found', $carrierCode, $requestType));
        }
    }

    /**
     * @param array $arrayRequest
     *
     * @return mixed
     */
    public function send(array $arrayRequest)
    {
        $debugData['request'] = json_encode($arrayRequest, JSON_UNESCAPED_SLASHES);
        try {
            $data = [];
            foreach ($arrayRequest['Request'] as $key => $item) {
                $data[$key] = [
                    'carrier' => $item['Carrier'],
                    'context' => $item['Context'],
                    'type' => $item['Type'],
                    'mode' => $item['LiveMode'],
                    'url' => $this->getAPIUrl($item['LiveMode'], $item['Carrier'], $item['Type'], $item),
                    'data' => $this->formatNativeData($item['NativeScheme'], $item['Carrier'], $item['Type']),
                    'additionalData' => $item['AdditionalData'] ?? [],
                ];

                $data = $this->extraRequestDataByCarrier($data, $key, $item);

                if (!empty($item['ShipmentIdentification'])) {
                    $data[$key]['ShipmentIdentification'] = $item['ShipmentIdentification'];
                }
            }

            $response = $this->makeMultiRequest(
                $data,
                [
                    CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
                    CURLOPT_TIMEOUT => 50,
                ],
            );
            $debugData['result'] = $response;
        } catch (Exception $e) {
            $debugData['result'] = [
                'error' => $e->getMessage(),
                'code' => $e->getCode(),
                'trace' => $e->getTraceAsString(),
            ];
        }

        $this->manager->debug($debugData);

        return $debugData;
    }

    /**
     * @param       $data
     * @param array $options
     * @return array
     * @throws Exception
     */
    protected function makeMultiRequest($data, $options = [])
    {
        $result = [];
        $multihandle = curl_multi_init();
        $handles = $this->setHandles($multihandle, $data, $options);

        $process = null;
        $status = CURLM_OK;
        for (; ;) {
            $status = curl_multi_exec($multihandle, $process);
            if ($process < 1) {
                break;
            } else {
                curl_multi_select($multihandle, 0.1);
            }
        }

        if ($status != CURLM_OK) {
            $this->manager->warning(curl_multi_strerror($status));
        }

        if (!empty($handles)) {
            foreach ($handles as $key => $handle) {
                $result[$key] =
                    $this->parseResponseData(
                        curl_multi_getcontent($handle),
                        $data[$key]
                    );
                curl_multi_remove_handle($multihandle, $handle);
                $this->multiRequestByCarrier($data, $key, $result);
                curl_multi_remove_handle($multihandle, $handle);
            }
        }

        curl_multi_close($multihandle);

        return $result;
    }

    /**
     * @param $multihandle
     * @param $data
     * @param $options
     * @return array
     */
    public function setHandles(&$multihandle, $data, $options)
    {
        $handles = [];
        foreach ($data as $key => $item) {
            $handles[$key] = curl_init();
            curl_setopt($handles[$key], CURLOPT_URL, $item['url']);
            curl_setopt($handles[$key], CURLOPT_RETURNTRANSFER, 1);
            if (!empty($item['additionalData']['HTTP_REQUEST_TYPE'])) {
                if ($item['additionalData']['HTTP_REQUEST_TYPE'] === "DELETE") {
                    curl_setopt($handles[$key], CURLOPT_CUSTOMREQUEST, "DELETE");
                    curl_setopt($handles[$key], CURLOPT_POST, 0);
                } else {
                    if ($item['additionalData']['HTTP_REQUEST_TYPE'] === "GET") {
                        curl_setopt($handles[$key], CURLOPT_CUSTOMREQUEST, "GET");
                        curl_setopt($handles[$key], CURLOPT_POST, 0);
                    }
                }
            } else {
                curl_setopt($handles[$key], CURLOPT_POST, 1);
                curl_setopt($handles[$key], CURLOPT_POSTFIELDS, $item['data']);
            }

            if (!empty($options)) {
                curl_setopt_array($handles[$key], $options);
            }

            if (!empty($item['additionalData']['HTTP_HEADERS'])) {
                curl_setopt($handles[$key], CURLOPT_HTTPHEADER, $item['additionalData']['HTTP_HEADERS']);
            }

            curl_multi_add_handle($multihandle, $handles[$key]);
        }

        return $handles;
    }

    /**
     * @param        $data
     * @param        $carrier
     * @param null $requestType
     * @param string $formattedData
     *
     * @return string
     */
    public function formatNativeData($data, $carrier, $requestType = null, $formattedData = '')
    {
        $this->manager->debug($formattedData);

        return $formattedData;
    }

    /**
     * @param $responseData
     * @param $data
     *
     * @return array|mixed
     * @throws Exception
     */
    protected function parseResponseData($responseData, $data)
    {
        $carrier = $data['carrier'];
        $type = $data['type'];
        $context = $data['context'];
        $shipmentIdentification = $data['ShipmentIdentification'] ?? null;
        $this->manager->debug($responseData);
        $factory = $this->responseFactory->create($carrier, $type);
        $responseData = $factory->parse($responseData, $context);
        if (strtolower($type) == 'track' && !empty($responseData['ShipmentIdentification'])) {
            $responseData['ShipmentIdentification'] = $shipmentIdentification;
        }

        return $responseData;
    }

    /**
     * @param DOMDocument $doc
     * @param $name
     * @param $data
     * @return mixed
     */
    public static function serializeXML(DOMDocument $doc, $name, $data)
    {
        return self::processXML($doc, $name, $data);
    }

    /**
     * @param DOMDocument $doc
     * @param $name
     * @param $data
     * @return mixed
     */
    protected static function processXML(DOMDocument $doc, $name, $data)
    {
        $element = $doc->createElement($name);
        if (is_array($data)) {
            foreach ($data as $key => $value) {
                if ($key === '@attributes') {
                    foreach ($value as $attrKey => $attrVal) {
                        $element->setAttribute($attrKey, $attrVal);
                    }
                    continue;
                }
                if (!is_numeric($key)) {
                    if (is_array($value) && is_numeric(key($value))) {
                        // Multiple elements with the same tag
                        foreach ($value as $index => $val) {
                            if ($val != "" && $val != null) {
                                $element->appendChild(self::processXML($doc, $key, $val));
                            }
                        }
                    } elseif ($value != "" && $value != null) {
                        $element->appendChild(self::processXML($doc, $key, $value));
                    }
                } else {
                    if (!is_array($value)) {
                        $element->appendChild(
                            $doc->createTextNode(
                                mb_convert_encoding(self::latinize((string)$value), 'ISO-8859-1', "UTF-8")
                            )
                        );

                        return $element;
                    }

                    return self::processXML($doc, $name, $value);
                }
            }
        } elseif ($data != null) {
            $element->appendChild(
                $doc->createTextNode(
                    mb_convert_encoding(self::latinize((string)$data), 'ISO-8859-1', "UTF-8")
                )
            );
        }

        return $element;
    }

    /**
     * @param $str
     * @return array|mixed|string|string[]|null
     */
    protected static function latinize($str)
    {
        if (is_string($str)) {
            $str = preg_replace_callback(
                '/[^-+:A-Z0-9]/iu',
                function ($matches) {
                    $chars = [
                        'Á' => 'A',
                        'Ă' => 'A',
                        'Ắ' => 'A',
                        'Ặ' => 'A',
                        'Ằ' => 'A',
                        'Ẳ' => 'A',
                        'Ẵ' => 'A',
                        'Ǎ' => 'A',
                        'Â' => 'A',
                        'Ấ' => 'A',
                        'Ậ' => 'A',
                        'Ầ' => 'A',
                        'Ẩ' => 'A',
                        'Ẫ' => 'A',
                        'Ä' => 'A',
                        'Ǟ' => 'A',
                        'Ȧ' => 'A',
                        'Ǡ' => 'A',
                        'Ạ' => 'A',
                        'Ȁ' => 'A',
                        'À' => 'A',
                        'Ả' => 'A',
                        'Ȃ' => 'A',
                        'Ā' => 'A',
                        'Ą' => 'A',
                        'Å' => 'A',
                        'Ǻ' => 'A',
                        'Ḁ' => 'A',
                        'Ⱥ' => 'A',
                        'Ã' => 'A',
                        'Ꜳ' => 'AA',
                        'Æ' => 'AE',
                        'Ǽ' => 'AE',
                        'Ǣ' => 'AE',
                        'Ꜵ' => 'AO',
                        'Ꜷ' => 'AU',
                        'Ꜹ' => 'AV',
                        'Ꜻ' => 'AV',
                        'Ꜽ' => 'AY',
                        'Ḃ' => 'B',
                        'Ḅ' => 'B',
                        'Ɓ' => 'B',
                        'Ḇ' => 'B',
                        'Ƀ' => 'B',
                        'Ƃ' => 'B',
                        'Ć' => 'C',
                        'Č' => 'C',
                        'Ç' => 'C',
                        'Ḉ' => 'C',
                        'Ĉ' => 'C',
                        'Ċ' => 'C',
                        'Ƈ' => 'C',
                        'Ȼ' => 'C',
                        'Ď' => 'D',
                        'Ḑ' => 'D',
                        'Ḓ' => 'D',
                        'Ḋ' => 'D',
                        'Ḍ' => 'D',
                        'Ɗ' => 'D',
                        'Ḏ' => 'D',
                        'Dz' => 'D',
                        'Dž' => 'D',
                        'Đ' => 'D',
                        'Ð' => 'D',
                        'Ƌ' => 'D',
                        'DZ' => 'DZ',
                        'DŽ' => 'DZ',
                        'É' => 'E',
                        'Ĕ' => 'E',
                        'Ě' => 'E',
                        'Ȩ' => 'E',
                        'Ḝ' => 'E',
                        'Ê' => 'E',
                        'Ế' => 'E',
                        'Ệ' => 'E',
                        'Ề' => 'E',
                        'Ể' => 'E',
                        'Ễ' => 'E',
                        'Ḙ' => 'E',
                        'Ë' => 'E',
                        'Ė' => 'E',
                        'Ẹ' => 'E',
                        'Ȅ' => 'E',
                        'È' => 'E',
                        'Ẻ' => 'E',
                        'Ȇ' => 'E',
                        'Ē' => 'E',
                        'Ḗ' => 'E',
                        'Ḕ' => 'E',
                        'Ę' => 'E',
                        'Ɇ' => 'E',
                        'Ẽ' => 'E',
                        'Ḛ' => 'E',
                        'Ꝫ' => 'ET',
                        'Ḟ' => 'F',
                        'Ƒ' => 'F',
                        'Ǵ' => 'G',
                        'Ğ' => 'G',
                        'Ǧ' => 'G',
                        'Ģ' => 'G',
                        'Ĝ' => 'G',
                        'Ġ' => 'G',
                        'Ɠ' => 'G',
                        'Ḡ' => 'G',
                        'Ǥ' => 'G',
                        'Ḫ' => 'H',
                        'Ȟ' => 'H',
                        'Ḩ' => 'H',
                        'Ĥ' => 'H',
                        'Ⱨ' => 'H',
                        'Ḧ' => 'H',
                        'Ḣ' => 'H',
                        'Ḥ' => 'H',
                        'Ħ' => 'H',
                        'Í' => 'I',
                        'Ĭ' => 'I',
                        'Ǐ' => 'I',
                        'Î' => 'I',
                        'Ï' => 'I',
                        'Ḯ' => 'I',
                        'İ' => 'I',
                        'Ị' => 'I',
                        'Ȉ' => 'I',
                        'Ì' => 'I',
                        'Ỉ' => 'I',
                        'Ȋ' => 'I',
                        'Ī' => 'I',
                        'Į' => 'I',
                        'Ɨ' => 'I',
                        'Ĩ' => 'I',
                        'Ḭ' => 'I',
                        'І' => 'I',
                        'Ꝺ' => 'D',
                        'Ꝼ' => 'F',
                        'Ᵹ' => 'G',
                        'Ꞃ' => 'R',
                        'Ꞅ' => 'S',
                        'Ꞇ' => 'T',
                        'Ꝭ' => 'IS',
                        'Ĵ' => 'J',
                        'Ɉ' => 'J',
                        'Ḱ' => 'K',
                        'Ǩ' => 'K',
                        'Ķ' => 'K',
                        'Ⱪ' => 'K',
                        'Ꝃ' => 'K',
                        'Ḳ' => 'K',
                        'Ƙ' => 'K',
                        'Ḵ' => 'K',
                        'Ꝁ' => 'K',
                        'Ꝅ' => 'K',
                        'Ĺ' => 'L',
                        'Ƚ' => 'L',
                        'Ľ' => 'L',
                        'Ļ' => 'L',
                        'Ḽ' => 'L',
                        'Ḷ' => 'L',
                        'Ḹ' => 'L',
                        'Ⱡ' => 'L',
                        'Ꝉ' => 'L',
                        'Ḻ' => 'L',
                        'Ŀ' => 'L',
                        'Ɫ' => 'L',
                        'Lj' => 'L',
                        'Ł' => 'L',
                        'LJ' => 'LJ',
                        'Ḿ' => 'M',
                        'Ṁ' => 'M',
                        'Ṃ' => 'M',
                        'Ɱ' => 'M',
                        'Ń' => 'N',
                        'Ň' => 'N',
                        'Ņ' => 'N',
                        'Ṋ' => 'N',
                        'Ṅ' => 'N',
                        'Ṇ' => 'N',
                        'Ǹ' => 'N',
                        'Ɲ' => 'N',
                        'Ṉ' => 'N',
                        'Ƞ' => 'N',
                        'Nj' => 'N',
                        'Ñ' => 'N',
                        'NJ' => 'NJ',
                        'Ó' => 'O',
                        'Ŏ' => 'O',
                        'Ǒ' => 'O',
                        'Ô' => 'O',
                        'Ố' => 'O',
                        'Ộ' => 'O',
                        'Ồ' => 'O',
                        'Ổ' => 'O',
                        'Ỗ' => 'O',
                        'Ö' => 'O',
                        'Ȫ' => 'O',
                        'Ȯ' => 'O',
                        'Ȱ' => 'O',
                        'Ọ' => 'O',
                        'Ő' => 'O',
                        'Ȍ' => 'O',
                        'Ò' => 'O',
                        'Ỏ' => 'O',
                        'Ơ' => 'O',
                        'Ớ' => 'O',
                        'Ợ' => 'O',
                        'Ờ' => 'O',
                        'Ở' => 'O',
                        'Ỡ' => 'O',
                        'Ȏ' => 'O',
                        'Ꝋ' => 'O',
                        'Ꝍ' => 'O',
                        'Ō' => 'O',
                        'Ṓ' => 'O',
                        'Ṑ' => 'O',
                        'Ɵ' => 'O',
                        'Ǫ' => 'O',
                        'Ǭ' => 'O',
                        'Ø' => 'O',
                        'Ǿ' => 'O',
                        'Õ' => 'O',
                        'Ṍ' => 'O',
                        'Ṏ' => 'O',
                        'Ȭ' => 'O',
                        'Ƣ' => 'OI',
                        'Ꝏ' => 'OO',
                        'Ɛ' => 'E',
                        'Ɔ' => 'O',
                        'Ȣ' => 'OU',
                        'Ṕ' => 'P',
                        'Ṗ' => 'P',
                        'Ꝓ' => 'P',
                        'Ƥ' => 'P',
                        'Ꝕ' => 'P',
                        'Ᵽ' => 'P',
                        'Ꝑ' => 'P',
                        'Ꝙ' => 'Q',
                        'Ꝗ' => 'Q',
                        'Ŕ' => 'R',
                        'Ř' => 'R',
                        'Ŗ' => 'R',
                        'Ṙ' => 'R',
                        'Ṛ' => 'R',
                        'Ṝ' => 'R',
                        'Ȑ' => 'R',
                        'Ȓ' => 'R',
                        'Ṟ' => 'R',
                        'Ɍ' => 'R',
                        'Ɽ' => 'R',
                        'Ꜿ' => 'C',
                        'Ǝ' => 'E',
                        'Ś' => 'S',
                        'Ṥ' => 'S',
                        'Š' => 'S',
                        'Ṧ' => 'S',
                        'Ş' => 'S',
                        'Ŝ' => 'S',
                        'Ș' => 'S',
                        'Ṡ' => 'S',
                        'Ṣ' => 'S',
                        'Ṩ' => 'S',
                        'ß' => 'ss',
                        'Ť' => 'T',
                        'Ţ' => 'T',
                        'Ṱ' => 'T',
                        'Ț' => 'T',
                        'Ⱦ' => 'T',
                        'Ṫ' => 'T',
                        'Ṭ' => 'T',
                        'Ƭ' => 'T',
                        'Ṯ' => 'T',
                        'Ʈ' => 'T',
                        'Ŧ' => 'T',
                        'Ɐ' => 'A',
                        'Ꞁ' => 'L',
                        'Ɯ' => 'M',
                        'Ʌ' => 'V',
                        'Ꜩ' => 'TZ',
                        'Ú' => 'U',
                        'Ŭ' => 'U',
                        'Ǔ' => 'U',
                        'Û' => 'U',
                        'Ṷ' => 'U',
                        'Ü' => 'U',
                        'Ǘ' => 'U',
                        'Ǚ' => 'U',
                        'Ǜ' => 'U',
                        'Ǖ' => 'U',
                        'Ṳ' => 'U',
                        'Ụ' => 'U',
                        'Ű' => 'U',
                        'Ȕ' => 'U',
                        'Ù' => 'U',
                        'Ủ' => 'U',
                        'Ư' => 'U',
                        'Ứ' => 'U',
                        'Ự' => 'U',
                        'Ừ' => 'U',
                        'Ử' => 'U',
                        'Ữ' => 'U',
                        'Ȗ' => 'U',
                        'Ū' => 'U',
                        'Ṻ' => 'U',
                        'Ų' => 'U',
                        'Ů' => 'U',
                        'Ũ' => 'U',
                        'Ṹ' => 'U',
                        'Ṵ' => 'U',
                        'Ꝟ' => 'V',
                        'Ṿ' => 'V',
                        'Ʋ' => 'V',
                        'Ṽ' => 'V',
                        'Ꝡ' => 'VY',
                        'Ẃ' => 'W',
                        'Ŵ' => 'W',
                        'Ẅ' => 'W',
                        'Ẇ' => 'W',
                        'Ẉ' => 'W',
                        'Ẁ' => 'W',
                        'Ⱳ' => 'W',
                        'Ẍ' => 'X',
                        'Ẋ' => 'X',
                        'Ý' => 'Y',
                        'Ŷ' => 'Y',
                        'Ÿ' => 'Y',
                        'Ẏ' => 'Y',
                        'Ỵ' => 'Y',
                        'Ỳ' => 'Y',
                        'Ƴ' => 'Y',
                        'Ỷ' => 'Y',
                        'Ỿ' => 'Y',
                        'Ȳ' => 'Y',
                        'Ɏ' => 'Y',
                        'Ỹ' => 'Y',
                        'Ї' => 'YI',
                        'Ź' => 'Z',
                        'Ž' => 'Z',
                        'Ẑ' => 'Z',
                        'Ⱬ' => 'Z',
                        'Ż' => 'Z',
                        'Ẓ' => 'Z',
                        'Ȥ' => 'Z',
                        'Ẕ' => 'Z',
                        'Ƶ' => 'Z',
                        'Þ' => 'TH',
                        'IJ' => 'IJ',
                        'Œ' => 'OE',
                        'ᴀ' => 'A',
                        'ᴁ' => 'AE',
                        'ʙ' => 'B',
                        'ᴃ' => 'B',
                        'ᴄ' => 'C',
                        'ᴅ' => 'D',
                        'ᴇ' => 'E',
                        'ꜰ' => 'F',
                        'ɢ' => 'G',
                        'ʛ' => 'G',
                        'ʜ' => 'H',
                        'ɪ' => 'I',
                        'ʁ' => 'R',
                        'ᴊ' => 'J',
                        'ᴋ' => 'K',
                        'ʟ' => 'L',
                        'ᴌ' => 'L',
                        'ᴍ' => 'M',
                        'ɴ' => 'N',
                        'ᴏ' => 'O',
                        'ɶ' => 'OE',
                        'ᴐ' => 'O',
                        'ᴕ' => 'OU',
                        'ᴘ' => 'P',
                        'ʀ' => 'R',
                        'ᴎ' => 'N',
                        'ᴙ' => 'R',
                        'ꜱ' => 'S',
                        'ᴛ' => 'T',
                        'ⱻ' => 'E',
                        'ᴚ' => 'R',
                        'ᴜ' => 'U',
                        'ᴠ' => 'V',
                        'ᴡ' => 'W',
                        'ʏ' => 'Y',
                        'ᴢ' => 'Z',
                        'á' => 'a',
                        'ă' => 'a',
                        'ắ' => 'a',
                        'ặ' => 'a',
                        'ằ' => 'a',
                        'ẳ' => 'a',
                        'ẵ' => 'a',
                        'ǎ' => 'a',
                        'â' => 'a',
                        'ấ' => 'a',
                        'ậ' => 'a',
                        'ầ' => 'a',
                        'ẩ' => 'a',
                        'ẫ' => 'a',
                        'ä' => 'a',
                        'ǟ' => 'a',
                        'ȧ' => 'a',
                        'ǡ' => 'a',
                        'ạ' => 'a',
                        'ȁ' => 'a',
                        'à' => 'a',
                        'ả' => 'a',
                        'ȃ' => 'a',
                        'ā' => 'a',
                        'ą' => 'a',
                        'ᶏ' => 'a',
                        'ẚ' => 'a',
                        'å' => 'a',
                        'ǻ' => 'a',
                        'ḁ' => 'a',
                        'ⱥ' => 'a',
                        'ã' => 'a',
                        'ꜳ' => 'aa',
                        'æ' => 'ae',
                        'ǽ' => 'ae',
                        'ǣ' => 'ae',
                        'ꜵ' => 'ao',
                        'ꜷ' => 'au',
                        'ꜹ' => 'av',
                        'ꜻ' => 'av',
                        'ꜽ' => 'ay',
                        'ḃ' => 'b',
                        'ḅ' => 'b',
                        'ɓ' => 'b',
                        'ḇ' => 'b',
                        'ᵬ' => 'b',
                        'ᶀ' => 'b',
                        'ƀ' => 'b',
                        'ƃ' => 'b',
                        'ɵ' => 'o',
                        'ć' => 'c',
                        'č' => 'c',
                        'ç' => 'c',
                        'ḉ' => 'c',
                        'ĉ' => 'c',
                        'ɕ' => 'c',
                        'ċ' => 'c',
                        'ƈ' => 'c',
                        'ȼ' => 'c',
                        'ď' => 'd',
                        'ḑ' => 'd',
                        'ḓ' => 'd',
                        'ȡ' => 'd',
                        'ḋ' => 'd',
                        'ḍ' => 'd',
                        'ɗ' => 'd',
                        'ᶑ' => 'd',
                        'ḏ' => 'd',
                        'ᵭ' => 'd',
                        'ᶁ' => 'd',
                        'đ' => 'd',
                        'ɖ' => 'd',
                        'ƌ' => 'd',
                        'ð' => 'd',
                        'ı' => 'i',
                        'ȷ' => 'j',
                        'ɟ' => 'j',
                        'ʄ' => 'j',
                        'dz' => 'dz',
                        'dž' => 'dz',
                        'é' => 'e',
                        'ĕ' => 'e',
                        'ě' => 'e',
                        'ȩ' => 'e',
                        'ḝ' => 'e',
                        'ê' => 'e',
                        'ế' => 'e',
                        'ệ' => 'e',
                        'ề' => 'e',
                        'ể' => 'e',
                        'ễ' => 'e',
                        'ḙ' => 'e',
                        'ë' => 'e',
                        'ė' => 'e',
                        'ẹ' => 'e',
                        'ȅ' => 'e',
                        'è' => 'e',
                        'ẻ' => 'e',
                        'ȇ' => 'e',
                        'ē' => 'e',
                        'ḗ' => 'e',
                        'ḕ' => 'e',
                        'ⱸ' => 'e',
                        'ę' => 'e',
                        'ᶒ' => 'e',
                        'ɇ' => 'e',
                        'ẽ' => 'e',
                        'ḛ' => 'e',
                        'ꝫ' => 'et',
                        'ḟ' => 'f',
                        'ƒ' => 'f',
                        'ᵮ' => 'f',
                        'ᶂ' => 'f',
                        'ǵ' => 'g',
                        'ğ' => 'g',
                        'ǧ' => 'g',
                        'ģ' => 'g',
                        'ĝ' => 'g',
                        'ġ' => 'g',
                        'ɠ' => 'g',
                        'ḡ' => 'g',
                        'ᶃ' => 'g',
                        'ǥ' => 'g',
                        'ḫ' => 'h',
                        'ȟ' => 'h',
                        'ḩ' => 'h',
                        'ĥ' => 'h',
                        'ⱨ' => 'h',
                        'ḧ' => 'h',
                        'ḣ' => 'h',
                        'ḥ' => 'h',
                        'ɦ' => 'h',
                        'ẖ' => 'h',
                        'ħ' => 'h',
                        'ƕ' => 'hv',
                        'í' => 'i',
                        'ĭ' => 'i',
                        'ǐ' => 'i',
                        'î' => 'i',
                        'ï' => 'i',
                        'ḯ' => 'i',
                        'ị' => 'i',
                        'ȉ' => 'i',
                        'ì' => 'i',
                        'ỉ' => 'i',
                        'ȋ' => 'i',
                        'ī' => 'i',
                        'į' => 'i',
                        'ᶖ' => 'i',
                        'ɨ' => 'i',
                        'ĩ' => 'i',
                        'ḭ' => 'i',
                        'і' => 'i',
                        'ꝺ' => 'd',
                        'ꝼ' => 'f',
                        'ᵹ' => 'g',
                        'ꞃ' => 'r',
                        'ꞅ' => 's',
                        'ꞇ' => 't',
                        'ꝭ' => 'is',
                        'ǰ' => 'j',
                        'ĵ' => 'j',
                        'ʝ' => 'j',
                        'ɉ' => 'j',
                        'ḱ' => 'k',
                        'ǩ' => 'k',
                        'ķ' => 'k',
                        'ⱪ' => 'k',
                        'ꝃ' => 'k',
                        'ḳ' => 'k',
                        'ƙ' => 'k',
                        'ḵ' => 'k',
                        'ᶄ' => 'k',
                        'ꝁ' => 'k',
                        'ꝅ' => 'k',
                        'ĺ' => 'l',
                        'ƚ' => 'l',
                        'ɬ' => 'l',
                        'ľ' => 'l',
                        'ļ' => 'l',
                        'ḽ' => 'l',
                        'ȴ' => 'l',
                        'ḷ' => 'l',
                        'ḹ' => 'l',
                        'ⱡ' => 'l',
                        'ꝉ' => 'l',
                        'ḻ' => 'l',
                        'ŀ' => 'l',
                        'ɫ' => 'l',
                        'ᶅ' => 'l',
                        'ɭ' => 'l',
                        'ł' => 'l',
                        'lj' => 'lj',
                        'ſ' => 's',
                        'ẜ' => 's',
                        'ẛ' => 's',
                        'ẝ' => 's',
                        'ḿ' => 'm',
                        'ṁ' => 'm',
                        'ṃ' => 'm',
                        'ɱ' => 'm',
                        'ᵯ' => 'm',
                        'ᶆ' => 'm',
                        'ń' => 'n',
                        'ň' => 'n',
                        'ņ' => 'n',
                        'ṋ' => 'n',
                        'ȵ' => 'n',
                        'ṅ' => 'n',
                        'ṇ' => 'n',
                        'ǹ' => 'n',
                        'ɲ' => 'n',
                        'ṉ' => 'n',
                        'ƞ' => 'n',
                        'ᵰ' => 'n',
                        'ᶇ' => 'n',
                        'ɳ' => 'n',
                        'ñ' => 'n',
                        'nj' => 'nj',
                        'ó' => 'o',
                        'ŏ' => 'o',
                        'ǒ' => 'o',
                        'ô' => 'o',
                        'ố' => 'o',
                        'ộ' => 'o',
                        'ồ' => 'o',
                        'ổ' => 'o',
                        'ỗ' => 'o',
                        'ö' => 'o',
                        'ȫ' => 'o',
                        'ȯ' => 'o',
                        'ȱ' => 'o',
                        'ọ' => 'o',
                        'ő' => 'o',
                        'ȍ' => 'o',
                        'ò' => 'o',
                        'ỏ' => 'o',
                        'ơ' => 'o',
                        'ớ' => 'o',
                        'ợ' => 'o',
                        'ờ' => 'o',
                        'ở' => 'o',
                        'ỡ' => 'o',
                        'ȏ' => 'o',
                        'ꝋ' => 'o',
                        'ꝍ' => 'o',
                        'ⱺ' => 'o',
                        'ō' => 'o',
                        'ṓ' => 'o',
                        'ṑ' => 'o',
                        'ǫ' => 'o',
                        'ǭ' => 'o',
                        'ø' => 'o',
                        'ǿ' => 'o',
                        'õ' => 'o',
                        'ṍ' => 'o',
                        'ṏ' => 'o',
                        'ȭ' => 'o',
                        'ƣ' => 'oi',
                        'ꝏ' => 'oo',
                        'ɛ' => 'e',
                        'ᶓ' => 'e',
                        'ɔ' => 'o',
                        'ᶗ' => 'o',
                        'ȣ' => 'ou',
                        'ṕ' => 'p',
                        'ṗ' => 'p',
                        'ꝓ' => 'p',
                        'ƥ' => 'p',
                        'ᵱ' => 'p',
                        'ᶈ' => 'p',
                        'ꝕ' => 'p',
                        'ᵽ' => 'p',
                        'ꝑ' => 'p',
                        'ꝙ' => 'q',
                        'ʠ' => 'q',
                        'ɋ' => 'q',
                        'ꝗ' => 'q',
                        'ŕ' => 'r',
                        'ř' => 'r',
                        'ŗ' => 'r',
                        'ṙ' => 'r',
                        'ṛ' => 'r',
                        'ṝ' => 'r',
                        'ȑ' => 'r',
                        'ɾ' => 'r',
                        'ᵳ' => 'r',
                        'ȓ' => 'r',
                        'ṟ' => 'r',
                        'ɼ' => 'r',
                        'ᵲ' => 'r',
                        'ᶉ' => 'r',
                        'ɍ' => 'r',
                        'ɽ' => 'r',
                        'ↄ' => 'c',
                        'ꜿ' => 'c',
                        'ɘ' => 'e',
                        'ɿ' => 'r',
                        'ś' => 's',
                        'ṥ' => 's',
                        'š' => 's',
                        'ṧ' => 's',
                        'ş' => 's',
                        'ŝ' => 's',
                        'ș' => 's',
                        'ṡ' => 's',
                        'ṣ' => 's',
                        'ṩ' => 's',
                        'ʂ' => 's',
                        'ᵴ' => 's',
                        'ᶊ' => 's',
                        'ȿ' => 's',
                        'ɡ' => 'g',
                        'ᴑ' => 'o',
                        'ᴓ' => 'o',
                        'ᴝ' => 'u',
                        'ť' => 't',
                        'ţ' => 't',
                        'ṱ' => 't',
                        'ț' => 't',
                        'ȶ' => 't',
                        'ẗ' => 't',
                        'ⱦ' => 't',
                        'ṫ' => 't',
                        'ṭ' => 't',
                        'ƭ' => 't',
                        'ṯ' => 't',
                        'ᵵ' => 't',
                        'ƫ' => 't',
                        'ʈ' => 't',
                        'ŧ' => 't',
                        'ᵺ' => 'th',
                        'ɐ' => 'a',
                        'ᴂ' => 'ae',
                        'ǝ' => 'e',
                        'ᵷ' => 'g',
                        'ɥ' => 'h',
                        'ʮ' => 'h',
                        'ʯ' => 'h',
                        'ᴉ' => 'i',
                        'ʞ' => 'k',
                        'ꞁ' => 'l',
                        'ɯ' => 'm',
                        'ɰ' => 'm',
                        'ᴔ' => 'oe',
                        'ɹ' => 'r',
                        'ɻ' => 'r',
                        'ɺ' => 'r',
                        'ⱹ' => 'r',
                        'ʇ' => 't',
                        'ʌ' => 'v',
                        'ʍ' => 'w',
                        'ʎ' => 'y',
                        'ꜩ' => 'tz',
                        'ú' => 'u',
                        'ŭ' => 'u',
                        'ǔ' => 'u',
                        'û' => 'u',
                        'ṷ' => 'u',
                        'ü' => 'u',
                        'ǘ' => 'u',
                        'ǚ' => 'u',
                        'ǜ' => 'u',
                        'ǖ' => 'u',
                        'ṳ' => 'u',
                        'ụ' => 'u',
                        'ű' => 'u',
                        'ȕ' => 'u',
                        'ù' => 'u',
                        'ủ' => 'u',
                        'ư' => 'u',
                        'ứ' => 'u',
                        'ự' => 'u',
                        'ừ' => 'u',
                        'ử' => 'u',
                        'ữ' => 'u',
                        'ȗ' => 'u',
                        'ū' => 'u',
                        'ṻ' => 'u',
                        'ų' => 'u',
                        'ᶙ' => 'u',
                        'ů' => 'u',
                        'ũ' => 'u',
                        'ṹ' => 'u',
                        'ṵ' => 'u',
                        'ᵫ' => 'ue',
                        'ꝸ' => 'um',
                        'ⱴ' => 'v',
                        'ꝟ' => 'v',
                        'ṿ' => 'v',
                        'ʋ' => 'v',
                        'ᶌ' => 'v',
                        'ⱱ' => 'v',
                        'ṽ' => 'v',
                        'ꝡ' => 'vy',
                        'ẃ' => 'w',
                        'ŵ' => 'w',
                        'ẅ' => 'w',
                        'ẇ' => 'w',
                        'ẉ' => 'w',
                        'ẁ' => 'w',
                        'ⱳ' => 'w',
                        'ẘ' => 'w',
                        'ẍ' => 'x',
                        'ẋ' => 'x',
                        'ᶍ' => 'x',
                        'ý' => 'y',
                        'ŷ' => 'y',
                        'ÿ' => 'y',
                        'ẏ' => 'y',
                        'ỵ' => 'y',
                        'ỳ' => 'y',
                        'ƴ' => 'y',
                        'ỷ' => 'y',
                        'ỿ' => 'y',
                        'ȳ' => 'y',
                        'ẙ' => 'y',
                        'ɏ' => 'y',
                        'ỹ' => 'y',
                        'ї' => 'yi',
                        'ź' => 'z',
                        'ž' => 'z',
                        'ẑ' => 'z',
                        'ʑ' => 'z',
                        'ⱬ' => 'z',
                        'ż' => 'z',
                        'ẓ' => 'z',
                        'ȥ' => 'z',
                        'ẕ' => 'z',
                        'ᵶ' => 'z',
                        'ᶎ' => 'z',
                        'ʐ' => 'z',
                        'ƶ' => 'z',
                        'ɀ' => 'z',
                        'þ' => 'th',
                        'ff' => 'ff',
                        'ffi' => 'ffi',
                        'ffl' => 'ffl',
                        'fi' => 'fi',
                        'fl' => 'fl',
                        'ij' => 'ij',
                        'œ' => 'oe',
                        'st' => 'st',
                        'ₐ' => 'a',
                        'ₑ' => 'e',
                        'ᵢ' => 'i',
                        'ⱼ' => 'j',
                        'ₒ' => 'o',
                        'ᵣ' => 'r',
                        'ᵤ' => 'u',
                        'ᵥ' => 'v',
                        'ₓ' => 'x',
                        'Ё' => 'YO',
                        'Й' => 'I',
                        'Ц' => 'TS',
                        'У' => 'U',
                        'К' => 'K',
                        'Е' => 'E',
                        'Н' => 'N',
                        'Г' => 'G',
                        'Ґ' => 'G',
                        'Ш' => 'SH',
                        'Щ' => 'SCH',
                        'З' => 'Z',
                        'Х' => 'H',
                        'Ъ' => "'",
                        'ё' => 'yo',
                        'й' => 'i',
                        'ц' => 'ts',
                        'у' => 'u',
                        'к' => 'k',
                        'е' => 'e',
                        'н' => 'n',
                        'г' => 'g',
                        'ґ' => 'g',
                        'ш' => 'sh',
                        'щ' => 'sch',
                        'з' => 'z',
                        'х' => 'h',
                        'ъ' => "'",
                        'Ф' => 'F',
                        'Ы' => 'I',
                        'В' => 'V',
                        'А' => 'a',
                        'П' => 'P',
                        'Р' => 'R',
                        'О' => 'O',
                        'Л' => 'L',
                        'Д' => 'D',
                        'Ж' => 'ZH',
                        'Э' => 'E',
                        'ф' => 'f',
                        'ы' => 'i',
                        'в' => 'v',
                        'а' => 'a',
                        'п' => 'p',
                        'р' => 'r',
                        'о' => 'o',
                        'л' => 'l',
                        'д' => 'd',
                        'ж' => 'zh',
                        'э' => 'e',
                        'Я' => 'Ya',
                        'Ч' => 'CH',
                        'С' => 'S',
                        'М' => 'M',
                        'И' => 'I',
                        'Т' => 'T',
                        'Ь' => "'",
                        'Б' => 'B',
                        'Ю' => 'YU',
                        'я' => 'ya',
                        'ч' => 'ch',
                        'с' => 's',
                        'м' => 'm',
                        'и' => 'i',
                        'т' => 't',
                        'ь' => "'",
                        'б' => 'b',
                        'ю' => 'yu',
                    ];
                    if (isset($chars[$matches[0]])) {
                        return $chars[$matches[0]];
                    }

                    return $matches[0];
                },
                $str
            );
        }

        return $str;
    }

    /**
     * @param $data
     * @param $key
     * @param $result
     * @return void
     */
    public function multiRequestByCarrier($data, $key, &$result)
    {
    }

    /**
     * @param $data
     * @param $key
     * @param $item
     * @return mixed
     */
    public function extraRequestDataByCarrier($data, $key, $item)
    {
        return $data;
    }
}

Spamworldpro Mini