/**
  * Validate credentials for token authentication
  *
  * @param array $credentials
  * @return TokenAuthentication
  * @throws \RuntimeException
  */
 protected function createTokenAuthentication(array $credentials)
 {
     Helper::validateFields($credentials, ['token'], 'authentication.types.token');
     return new TokenAuthentication($credentials['token']);
 }
 /**
  * Fire call to API and return data
  *
  * @param string $method
  * @return string|null
  */
 private function send($method)
 {
     $client = $this->getGuzzleClient();
     if (method_exists($client, $method) && !empty($this->endpoint)) {
         /** @var Response $response */
         $response = $client->{$method}($this->endpoint, $this->options);
         $contents = $response->getBody()->getContents();
         // Cleanup options, 'cause we don't need them again after the call was made
         $this->options = [];
         return $contents;
     } else {
         Helper::validateFields($this->config, ['mailFrom', 'mailTo', 'configuration'], 'email');
         // Send an error email
         $mailer = new Mailer($this->config['mailFrom'], $this->config['mailTo'], $this->config['configuration']['url']);
         $mailer->sendErrorMail($method, $this->endpoint, 'Chosen method doesn\'t exist in Guzzle', '', $this->options);
     }
     return null;
 }