Browse Source

Add UriFactory.

ADmad 3 years ago
parent
commit
e7f4683b35
2 changed files with 73 additions and 0 deletions
  1. 38 0
      src/Http/UriFactory.php
  2. 35 0
      tests/TestCase/Http/UriFactoryTest.php

+ 38 - 0
src/Http/UriFactory.php

@@ -0,0 +1,38 @@
+<?php
+declare(strict_types=1);
+
+/**
+ * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
+ * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+ * @link          https://cakephp.org CakePHP(tm) Project
+ * @since         5.0.0
+ * @license       https://opensource.org/licenses/mit-license.php MIT License
+ */
+namespace Cake\Http;
+
+use Laminas\Diactoros\Uri;
+use Psr\Http\Message\UriFactoryInterface;
+use Psr\Http\Message\UriInterface;
+
+/**
+ * Factory class for creating uri instances.
+ */
+class UriFactory implements UriFactoryInterface
+{
+    /**
+     * Create a new URI.
+     *
+     * @param string $uri The URI to parse.
+     * @throws \InvalidArgumentException If the given URI cannot be parsed.
+     */
+    public function createUri(string $uri = ''): UriInterface
+    {
+        return new Uri($uri);
+    }
+}

+ 35 - 0
tests/TestCase/Http/UriFactoryTest.php

@@ -0,0 +1,35 @@
+<?php
+declare(strict_types=1);
+
+/**
+ * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
+ * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+ * @link          https://cakephp.org CakePHP(tm) Project
+ * @since         5.0.0
+ * @license       https://opensource.org/licenses/mit-license.php MIT License
+ */
+namespace Cake\Test\TestCase\Http;
+
+use Cake\Http\UriFactory;
+use Cake\TestSuite\TestCase;
+use Laminas\Diactoros\Uri;
+
+/**
+ * Test case for the uri factory.
+ */
+class UriFactoryTest extends TestCase
+{
+    public function testCreateUri(): void
+    {
+        $factory = new UriFactory();
+        $uri = $factory->createUri('https://cakephp.org');
+
+        $this->assertInstanceOf(Uri::class, $uri);
+    }
+}