# media-cloud-sync/1.0.3/includes/sdk/google/ramsey/uuid/src/Codec/GuidStringCodec.php

Media Cloud Sync, version 1.0.3. 46 lines.

- Page: https://pluginprobe.com/plugins/media-cloud-sync/1.0.3/code/includes/sdk/google/ramsey/uuid/src/Codec/GuidStringCodec.php
- Raw: https://pluginprobe.com/plugins/media-cloud-sync/1.0.3/raw/includes/sdk/google/ramsey/uuid/src/Codec/GuidStringCodec.php
- Modified: 2024-10-27T10:40:38+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/media-cloud-sync/1.0.3/code/includes/sdk/google/ramsey/uuid/src/Codec/GuidStringCodec.php#L10-L20`.

```php
<?php

/**
 * This file is part of the ramsey/uuid library
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
 * @license http://opensource.org/licenses/MIT MIT
 */
declare (strict_types=1);
namespace Dudlewebs\WPMCS\Ramsey\Uuid\Codec;

use Dudlewebs\WPMCS\Ramsey\Uuid\Guid\Guid;
use Dudlewebs\WPMCS\Ramsey\Uuid\UuidInterface;
use function bin2hex;
use function substr;
/**
 * GuidStringCodec encodes and decodes globally unique identifiers (GUID)
 *
 * @see Guid
 *
 * @psalm-immutable
 */
class GuidStringCodec extends StringCodec
{
    public function decode(string $encodedUuid): UuidInterface
    {
        $bytes = $this->getBytes($encodedUuid);
        return $this->getBuilder()->build($this, $this->swapBytes($bytes));
    }
    public function decodeBytes(string $bytes): UuidInterface
    {
        // Specifically call parent::decode to preserve correct byte order
        return parent::decode(bin2hex($bytes));
    }
    /**
     * Swaps bytes according to the GUID rules
     */
    private function swapBytes(string $bytes): string
    {
        return $bytes[3] . $bytes[2] . $bytes[1] . $bytes[0] . $bytes[5] . $bytes[4] . $bytes[7] . $bytes[6] . substr($bytes, 8);
    }
}

```
