xref: /webtrees/app/Contracts/ResponseFactoryInterface.php (revision 774eb6bada09fdd46a086fd31e84fd157a6351c4)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2023 webtrees development team
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18declare(strict_types=1);
19
20namespace Fisharebest\Webtrees\Contracts;
21
22use Fig\Http\Message\StatusCodeInterface;
23use Fisharebest\Webtrees\Webtrees;
24use Psr\Http\Message\ResponseInterface;
25use Psr\Http\Message\UriInterface;
26
27/**
28 * ake a PSR-7 response (using a PSR-17 response factory).
29 */
30interface ResponseFactoryInterface
31{
32    /**
33     * Redirect to a named route.
34     *
35     * @param string                                    $route_name
36     * @param array<bool|int|string|array<string>|null> $parameters
37     * @param int                                       $status
38     *
39     * @return ResponseInterface
40     *
41     */
42    public function redirect(
43        string $route_name,
44        array $parameters = [],
45        int $status = StatusCodeInterface::STATUS_FOUND
46    ): ResponseInterface;
47
48    /**
49     * Redirect to a URL.
50     *
51     * @param UriInterface|string $url
52     * @param int                 $code
53     *
54     * @return ResponseInterface
55     */
56    public function redirectUrl(UriInterface|string $url, int $code = StatusCodeInterface::STATUS_FOUND): ResponseInterface;
57
58    /**
59     * @param string|array<mixed>|object $content
60     * @param int                        $code
61     * @param array<string,string>       $headers
62     *
63     * @return ResponseInterface
64     */
65    public function response(string|array|object $content = '', int $code = StatusCodeInterface::STATUS_OK, array $headers = []): ResponseInterface;
66
67    /**
68     * Create and render a view, and embed it in an HTML page.
69     *
70     * @param string              $view_name
71     * @param array<string,mixed> $view_data
72     * @param int                 $status
73     * @param string              $layout_name
74     *
75     * @return ResponseInterface
76     */
77    public function view(
78        string $view_name,
79        array $view_data,
80        int $status = StatusCodeInterface::STATUS_OK,
81        string $layout_name = Webtrees::LAYOUT_DEFAULT
82    ): ResponseInterface;
83}
84