Browse Source

Add ResponseFactory.

ADmad 3 years ago
parent
commit
273c1a7b40
2 changed files with 74 additions and 0 deletions
  1. 39 0
      src/Http/ResponseFactory.php
  2. 35 0
      tests/TestCase/Http/ResponseFactoryTest.php

+ 39 - 0
src/Http/ResponseFactory.php

@@ -0,0 +1,39 @@
+<?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 Psr\Http\Message\ResponseFactoryInterface;
+use Psr\Http\Message\ResponseInterface;
+
+/**
+ * Factory class for creating response instances.
+ */
+class ResponseFactory implements ResponseFactoryInterface
+{
+    /**
+     * Create a new response.
+     *
+     * @param int $code The HTTP status code. Defaults to 200.
+     * @param string $reasonPhrase The reason phrase to associate with the status code
+     *   in the generated response. If none is provided, implementations MAY use
+     *   the defaults as suggested in the HTTP specification.
+     */
+    public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface
+    {
+        return (new Response())->withStatus($code, $reasonPhrase);
+    }
+}

+ 35 - 0
tests/TestCase/Http/ResponseFactoryTest.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\ResponseFactory;
+use Cake\TestSuite\TestCase;
+
+/**
+ * Test case for the response factory.
+ */
+class ResponseFactoryTest extends TestCase
+{
+    public function testCreateResponse(): void
+    {
+        $factory = new ResponseFactory();
+        $response = $factory->createResponse();
+
+        $this->assertSame(200, $response->getStatusCode());
+        $this->assertSame('OK', $response->getReasonPhrase());
+    }
+}