|
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
|
|
|
public static function yiiToPsr7Response($response) |
|
42
|
|
|
{ |
|
43
|
|
|
/** @var Psr7Response $psr7Response */ |
|
44
|
|
|
$psr7Response = Yii::createObject(Psr7Response::class); |
|
45
|
|
|
|
|
46
|
|
|
foreach ($response->headers as $name => $value) { |
|
47
|
|
|
$psr7Response = $psr7Response->withHeader($name, $value); |
|
48
|
|
|
} |
|
49
|
|
|
|
|
50
|
|
|
return $psr7Response |
|
51
|
|
|
->withStatus($response->getStatusCode()) |
|
52
|
|
|
->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
|
|
|
|