1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace rhertogh\Yii2Oauth2Server\helpers; |
4
|
|
|
|
5
|
|
|
use GuzzleHttp\Psr7\Response as Psr7Response; |
6
|
|
|
use GuzzleHttp\Psr7\ServerRequest; |
7
|
|
|
use GuzzleHttp\Psr7\Utils as Psr7Utils; |
8
|
|
|
use Psr\Http\Message\ServerRequestInterface; |
9
|
|
|
use Yii; |
10
|
|
|
use yii\web\Request; |
11
|
|
|
use yii\web\Response; |
12
|
|
|
|
13
|
|
|
class Psr7Helper |
14
|
|
|
{ |
15
|
|
|
/** |
16
|
|
|
* Converts a Yii2 request into a PSR 7 request. |
17
|
|
|
* @param Request $request |
18
|
|
|
* @return ServerRequestInterface |
19
|
|
|
* @since 1.0.0 |
20
|
|
|
*/ |
21
|
4 |
|
public static function yiiToPsr7Request($request) |
22
|
|
|
{ |
23
|
4 |
|
$serverRequest = Yii::createObject(ServerRequest::class, [ |
24
|
4 |
|
$request->method, |
25
|
4 |
|
$request->absoluteUrl, |
26
|
4 |
|
$request->headers->toArray(), |
27
|
4 |
|
$request->rawBody |
28
|
|
|
]); |
29
|
|
|
|
30
|
|
|
return $serverRequest |
31
|
4 |
|
->withParsedBody($request->bodyParams) |
32
|
4 |
|
->withQueryParams($request->getQueryParams()); |
33
|
|
|
} |
34
|
|
|
|
35
|
|
|
/** |
36
|
|
|
* Converts a Yii2 Response into a PSR 7 Response. |
37
|
|
|
* @param Response $response |
38
|
|
|
* @return Psr7Response |
39
|
|
|
* @since 1.0.0 |
40
|
|
|
*/ |
41
|
1 |
|
public static function yiiToPsr7Response($response) |
42
|
|
|
{ |
43
|
|
|
/** @var Psr7Response $psr7Response */ |
44
|
1 |
|
$psr7Response = Yii::createObject(Psr7Response::class); |
45
|
|
|
|
46
|
1 |
|
foreach ($response->headers as $name => $value) { |
47
|
1 |
|
$psr7Response = $psr7Response->withHeader($name, $value); |
48
|
|
|
} |
49
|
|
|
|
50
|
|
|
return $psr7Response |
51
|
1 |
|
->withStatus($response->getStatusCode()) |
52
|
1 |
|
->withBody(Psr7Utils::streamFor($response->content)); |
53
|
|
|
} |
54
|
|
|
|
55
|
|
|
/** |
56
|
|
|
* Converts a PSR 7 Response into a Yii2 Response. |
57
|
|
|
* @param Psr7Response $psr7Response |
58
|
|
|
* @return Response |
59
|
|
|
* @since 1.0.0 |
60
|
|
|
*/ |
61
|
1 |
|
public static function psr7ToYiiResponse($psr7Response) |
62
|
|
|
{ |
63
|
|
|
/** @var Response $response */ |
64
|
1 |
|
$response = Yii::createObject([ |
65
|
|
|
'class' => Response::class, |
66
|
1 |
|
'statusCode' => $psr7Response->getStatusCode(), |
67
|
1 |
|
'content' => (string)$psr7Response->getBody(), |
68
|
|
|
]); |
69
|
|
|
|
70
|
1 |
|
$response->headers->fromArray(array_change_key_case($psr7Response->getHeaders(), CASE_LOWER)); |
71
|
|
|
|
72
|
1 |
|
return $response; |
73
|
|
|
} |
74
|
|
|
} |
75
|
|
|
|