Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
namespace GuzzleHttp\Handler;
3
 
4
use GuzzleHttp\RequestOptions;
5
use Psr\Http\Message\RequestInterface;
6
 
7
/**
8
 * Provides basic proxies for handlers.
9
 */
10
class Proxy
11
{
12
    /**
13
     * Sends synchronous requests to a specific handler while sending all other
14
     * requests to another handler.
15
     *
16
     * @param callable $default Handler used for normal responses
17
     * @param callable $sync    Handler used for synchronous responses.
18
     *
19
     * @return callable Returns the composed handler.
20
     */
21
    public static function wrapSync(
22
        callable $default,
23
        callable $sync
24
    ) {
25
        return function (RequestInterface $request, array $options) use ($default, $sync) {
26
            return empty($options[RequestOptions::SYNCHRONOUS])
27
                ? $default($request, $options)
28
                : $sync($request, $options);
29
        };
30
    }
31
 
32
    /**
33
     * Sends streaming requests to a streaming compatible handler while sending
34
     * all other requests to a default handler.
35
     *
36
     * This, for example, could be useful for taking advantage of the
37
     * performance benefits of curl while still supporting true streaming
38
     * through the StreamHandler.
39
     *
40
     * @param callable $default   Handler used for non-streaming responses
41
     * @param callable $streaming Handler used for streaming responses
42
     *
43
     * @return callable Returns the composed handler.
44
     */
45
    public static function wrapStreaming(
46
        callable $default,
47
        callable $streaming
48
    ) {
49
        return function (RequestInterface $request, array $options) use ($default, $streaming) {
50
            return empty($options['stream'])
51
                ? $default($request, $options)
52
                : $streaming($request, $options);
53
        };
54
    }
55
}