Mailgun\RequestBuilder::create PHP Method

create() public method

Creates a new PSR-7 request.
public create ( string $method, string $uri, array $headers = [], array | string | null $body = null ) : Psr\Http\Message\RequestInterface
$method string
$uri string
$headers array
$body array | string | null Request body. If body is an array we will send a as multipart stream request. If array, each array *item* MUST look like: array ( 'content' => string|resource|StreamInterface, 'name' => string, 'filename'=> string (optional) 'headers' => array (optinal) ['header-name' => 'header-value'] )
return Psr\Http\Message\RequestInterface
    public function create($method, $uri, array $headers = [], $body = null)
    {
        if (!is_array($body)) {
            return $this->getRequestFactory()->createRequest($method, $uri, $headers, $body);
        }
        $builder = $this->getMultipartStreamBuilder();
        foreach ($body as $item) {
            $name = $item['name'];
            $content = $item['content'];
            unset($item['name']);
            unset($item['content']);
            $builder->addResource($name, $content, $item);
        }
        $multipartStream = $builder->build();
        $boundary = $builder->getBoundary();
        $headers['Content-Type'] = 'multipart/form-data; boundary=' . $boundary;
        return $this->getRequestFactory()->createRequest($method, $uri, $headers, $multipartStream);
    }

Usage Example

Example #1
0
 /**
  * Send a DELETE request with JSON-encoded parameters.
  *
  * @param string $path           Request path.
  * @param array  $parameters     POST parameters to be JSON encoded.
  * @param array  $requestHeaders Request headers.
  *
  * @return ResponseInterface
  */
 protected function httpDelete($path, array $parameters = [], array $requestHeaders = [])
 {
     try {
         $response = $this->httpClient->sendRequest($this->requestBuilder->create('DELETE', $path, $requestHeaders, $this->createJsonBody($parameters)));
     } catch (HttplugException\NetworkException $e) {
         throw HttpServerException::networkError($e);
     }
     return $response;
 }