getResumeUri(); if ($writeSize) { $rangeEnd = $this->rangeStart + $writeSize - 1; $data = $this->data->read($writeSize); } else { $rangeEnd = '*'; $data = $this->data->getContents(); $writeSize = strlen($data); } // do the streaming write $headers = ['Content-Length' => $writeSize, 'Content-Type' => $this->contentType, 'Content-Range' => "bytes {$this->rangeStart}-{$rangeEnd}/*"]; $request = new \DeliciousBrains\WP_Offload_Media\Gcp\GuzzleHttp\Psr7\Request('PUT', $resumeUri, $headers, $data); try { $response = $this->requestWrapper->send($request, $this->requestOptions); } catch (ServiceException $ex) { throw new \DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Core\Exception\GoogleException("Upload failed. Please use this URI to resume your upload: {$resumeUri}", $ex->getCode(), $ex); } // reset the buffer with the remaining contents $this->rangeStart += $writeSize; return json_decode($response->getBody(), true); } }