# media-cloud-sync/1.2.8/includes/sdk/s3/Aws/Arn/ArnParser.php

Media Cloud Sync, version 1.2.8. 67 lines.

- Page: https://pluginprobe.com/plugins/media-cloud-sync/1.2.8/code/includes/sdk/s3/Aws/Arn/ArnParser.php
- Raw: https://pluginprobe.com/plugins/media-cloud-sync/1.2.8/raw/includes/sdk/s3/Aws/Arn/ArnParser.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.2.8/code/includes/sdk/s3/Aws/Arn/ArnParser.php#L10-L20`.

```php
<?php

namespace Dudlewebs\WPMCS\s3\Aws\Arn;

use Dudlewebs\WPMCS\s3\Aws\Arn\S3\AccessPointArn as S3AccessPointArn;
use Dudlewebs\WPMCS\s3\Aws\Arn\ObjectLambdaAccessPointArn;
use Dudlewebs\WPMCS\s3\Aws\Arn\S3\MultiRegionAccessPointArn;
use Dudlewebs\WPMCS\s3\Aws\Arn\S3\OutpostsBucketArn;
use Dudlewebs\WPMCS\s3\Aws\Arn\S3\RegionalBucketArn;
use Dudlewebs\WPMCS\s3\Aws\Arn\S3\OutpostsAccessPointArn;
/**
 * This class provides functionality to parse ARN strings and return a
 * corresponding ARN object. ARN-parsing logic may be subject to change in the
 * future, so this should not be relied upon for external customer usage.
 *
 * @internal
 */
class ArnParser
{
    /**
     * @param $string
     * @return bool
     */
    public static function isArn($string)
    {
        return $string !== null && \strpos($string, 'arn:') === 0;
    }
    /**
     * Parses a string and returns an instance of ArnInterface. Returns a
     * specific type of Arn object if it has a specific class representation
     * or a generic Arn object if not.
     *
     * @param $string
     * @return ArnInterface
     */
    public static function parse($string)
    {
        $data = Arn::parse($string);
        if ($data['service'] === 's3-object-lambda') {
            return new ObjectLambdaAccessPointArn($string);
        }
        $resource = self::explodeResourceComponent($data['resource']);
        if ($resource[0] === 'outpost') {
            if (isset($resource[2]) && $resource[2] === 'bucket') {
                return new OutpostsBucketArn($string);
            }
            if (isset($resource[2]) && $resource[2] === 'accesspoint') {
                return new OutpostsAccessPointArn($string);
            }
        }
        if (empty($data['region'])) {
            return new MultiRegionAccessPointArn($string);
        }
        if ($resource[0] === 'accesspoint') {
            if ($data['service'] === 's3') {
                return new S3AccessPointArn($string);
            }
            return new AccessPointArn($string);
        }
        return new Arn($data);
    }
    private static function explodeResourceComponent($resource)
    {
        return \preg_split("/[\\/:]/", $resource);
    }
}

```
