56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace GuzzleHttp\Handler;
 | 
						|
 | 
						|
use GuzzleHttp\RequestOptions;
 | 
						|
use Psr\Http\Message\RequestInterface;
 | 
						|
 | 
						|
/**
 | 
						|
 * Provides basic proxies for handlers.
 | 
						|
 */
 | 
						|
class Proxy
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Sends synchronous requests to a specific handler while sending all other
 | 
						|
     * requests to another handler.
 | 
						|
     *
 | 
						|
     * @param callable $default Handler used for normal responses
 | 
						|
     * @param callable $sync    Handler used for synchronous responses.
 | 
						|
     *
 | 
						|
     * @return callable Returns the composed handler.
 | 
						|
     */
 | 
						|
    public static function wrapSync(
 | 
						|
        callable $default,
 | 
						|
        callable $sync
 | 
						|
    ) {
 | 
						|
        return function (RequestInterface $request, array $options) use ($default, $sync) {
 | 
						|
            return empty($options[RequestOptions::SYNCHRONOUS])
 | 
						|
                ? $default($request, $options)
 | 
						|
                : $sync($request, $options);
 | 
						|
        };
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Sends streaming requests to a streaming compatible handler while sending
 | 
						|
     * all other requests to a default handler.
 | 
						|
     *
 | 
						|
     * This, for example, could be useful for taking advantage of the
 | 
						|
     * performance benefits of curl while still supporting true streaming
 | 
						|
     * through the StreamHandler.
 | 
						|
     *
 | 
						|
     * @param callable $default   Handler used for non-streaming responses
 | 
						|
     * @param callable $streaming Handler used for streaming responses
 | 
						|
     *
 | 
						|
     * @return callable Returns the composed handler.
 | 
						|
     */
 | 
						|
    public static function wrapStreaming(
 | 
						|
        callable $default,
 | 
						|
        callable $streaming
 | 
						|
    ) {
 | 
						|
        return function (RequestInterface $request, array $options) use ($default, $streaming) {
 | 
						|
            return empty($options['stream'])
 | 
						|
                ? $default($request, $options)
 | 
						|
                : $streaming($request, $options);
 | 
						|
        };
 | 
						|
    }
 | 
						|
}
 |