| 
<?php
 /**
 * Curler Responder, let's say 'https://example.com/restricted/' is .htaccess protected and returns
 */
 
 use Many\Http\Curler;
 
 $rspns = [
 'auth_type' => $_SERVER['AUTH_TYPE'] ?? 'error',
 'header' => getallheaders(),
 'body' => file_get_contents('php://input'),
 'c_types' => [
 'json' => 'application/json',
 ]
 ];
 
 $setType = $rspns['c_types'][$_GET['c_type'] ?? null] ?? null;
 $cType = $setType ?? $_SERVER['CONTENT_TYPE'] ?? 'text/html';
 
 /** Set Content-Type header auto, if requested one is listed in 'c_types' */
 if ($setType)
 header(sprintf('Content-Type: %s; charset: %s', $cType, $_GET['charset'] ?? 'UTF-8'));
 
 /** Parse received body content */
 if (ctype_print($rspns['body']))
 parse_str($rspns['body'], $rspns['body_parsed']);
 
 exit('application/json' == $cType
 ? json_encode($rspns, JSON_PRETTY_PRINT)
 : print_r($rspns, true)
 );
 
 
 
 /**
 * Curler Receiver, access the .htaccess protected ressources
 */
 
 $curler = (new Curler)
 ->authAny('many', '123456') // auto ->authBasic() or ->authDigest()
 ->postFields([
 'lorem_ipsum' => 'Dolor Sit Amet',
 ])
 ->jsonDecode()
 ->exec('https://example.com/restricted/'); // ?c_type=json &charset=UTF-8
 
 printf('<pre>%s<hr /><b>body</b><br />%s</pre>'
 , print_r($curler, true)
 , $curler['response']->body ?? 'body is not an object'
 );
 
 |