20     public function __construct(callable $nextHandler)
 
   22         $this->nextHandler = $nextHandler;
 
   33         $fn = $this->nextHandler;
 
   36         if ($request->
getBody()->getSize() === 0) {
 
   37             return $fn($request, $options);
 
   43         if (!$request->
hasHeader(
'Content-Type')) {
 
   44             if ($uri = $request->
getBody()->getMetadata(
'uri')) {
 
   46                     $modify[
'set_headers'][
'Content-Type'] = $type;
 
   52         if (!$request->
hasHeader(
'Content-Length')
 
   53             && !$request->
hasHeader(
'Transfer-Encoding')
 
   55             $size = $request->
getBody()->getSize();
 
   57                 $modify[
'set_headers'][
'Content-Length'] = $size;
 
   59                 $modify[
'set_headers'][
'Transfer-Encoding'] = 
'chunked';
 
   64         $this->addExpectHeader($request, $options, $modify);
 
   74     private function addExpectHeader(
 
   75         RequestInterface $request,
 
   80         if ($request->hasHeader(
'Expect')) {
 
   84         $expect = isset($options[
'expect']) ? $options[
'expect'] : 
null;
 
   87         if ($expect === 
false || $request->getProtocolVersion() < 1.1) {
 
   92         if ($expect === 
true) {
 
   93             $modify[
'set_headers'][
'Expect'] = 
'100-Continue';
 
   98         if ($expect === 
null) {
 
  104         $body = $request->getBody();
 
  105         $size = $body->getSize();
 
  107         if ($size === 
null || $size >= (
int) $expect || !$body->isSeekable()) {
 
  108             $modify[
'set_headers'][
'Expect'] = 
'100-Continue';