| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | <?phpnamespace Aws\Arn;use Aws\Arn\S3\AccessPointArn as S3AccessPointArn;use Aws\Arn\ObjectLambdaAccessPointArn;use Aws\Arn\S3\MultiRegionAccessPointArn;use Aws\Arn\S3\OutpostsBucketArn;use Aws\Arn\S3\RegionalBucketArn;use 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);    }}
 |