Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
/**
3
 * Copyright 2015 Google Inc. All Rights Reserved.
4
 *
5
 * Licensed under the Apache License, Version 2.0 (the "License");
6
 * you may not use this file except in compliance with the License.
7
 * You may obtain a copy of the License at
8
 *
9
 *      http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
namespace Google\Auth\HttpHandler;
18
 
19
use GuzzleHttp\ClientInterface;
20
use GuzzleHttp\Psr7\Response;
21
use Psr\Http\Message\RequestInterface;
22
use Psr\Http\Message\ResponseInterface;
23
 
24
class Guzzle5HttpHandler
25
{
26
    /**
27
     * @var ClientInterface
28
     */
29
    private $client;
30
 
31
    /**
32
     * @param ClientInterface $client
33
     */
34
    public function __construct(ClientInterface $client)
35
    {
36
        $this->client = $client;
37
    }
38
 
39
    /**
40
     * Accepts a PSR-7 Request and an array of options and returns a PSR-7 response.
41
     *
42
     * @param RequestInterface $request
43
     * @param array $options
44
     *
45
     * @return ResponseInterface
46
     */
47
    public function __invoke(RequestInterface $request, array $options = [])
48
    {
49
        $request = $this->client->createRequest(
50
            $request->getMethod(),
51
            $request->getUri(),
52
            array_merge([
53
                'headers' => $request->getHeaders(),
54
                'body' => $request->getBody(),
55
            ], $options)
56
        );
57
 
58
        $response = $this->client->send($request);
59
 
60
        return new Response(
61
            $response->getStatusCode(),
62
            $response->getHeaders() ?: [],
63
            $response->getBody(),
64
            $response->getProtocolVersion(),
65
            $response->getReasonPhrase()
66
        );
67
    }
68
}