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);
 | |
|         };
 | |
|     }
 | |
| }
 |