You are here

public function Drupal8Post::submit in hCaptcha 8

Submit the POST request with the specified parameters.

Parameters

array $params: Request parameters.

Return value

\stdClass Body of the hCaptcha response.

Overrides RequestMethod::submit

File

src/HCaptcha/Drupal8Post.php, line 24
Custom Drupal 8 request method class for hCaptcha.

Class

Drupal8Post
Sends POST requests to the hCaptcha service.

Namespace

Drupal\hcaptcha\HCaptcha

Code

public function submit($url, array $params) {
  $options = array(
    'headers' => array(
      'Content-type' => 'application/x-www-form-urlencoded',
    ),
    'body' => http_build_query($params, '', '&'),
    // Stop firing exception on response status code >= 300.
    // See http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html
    'http_errors' => false,
  );
  $response = \Drupal::httpClient()
    ->post($url, $options);
  if ($response
    ->getStatusCode() == 200) {

    // The service request was successful.
    $result = (string) $response
      ->getBody();
  }
  elseif ($response
    ->getStatusCode() < 0) {

    // Negative status codes typically point to network or socket issues.
    $result = '{"success": false, "error-codes": ["connection-failed"]}';
  }
  else {

    // Positive none 200 status code typically means the request has failed.
    $result = '{"success": false, "error-codes": ["bad-response"]}';
  }
  return json_decode($result);
}