/**
  * Fetches a set of access credentials from the server.
  *
  * @param ehough_coauthor_api_v1_Credentials    $clientCredentials
  * @param ehough_coauthor_api_v1_AbstractServer $server
  * @param ehough_coauthor_api_v1_Credentials    $temporaryCredentials
  * @param string                                $verificationCode
  *
  * @return ehough_coauthor_api_v1_Credentials
  *
  * @throws ehough_coauthor_api_exception_RuntimeException If unable to retrieve the credentials for any reason.
  */
 public function fetchToken(ehough_coauthor_api_v1_Credentials $clientCredentials, ehough_coauthor_api_v1_AbstractServer $server, ehough_coauthor_api_v1_Credentials $temporaryCredentials, $verificationCode)
 {
     /**
      * Build an HTTP request.
      */
     $httpRequest = new ehough_shortstop_api_HttpRequest(ehough_shortstop_api_HttpRequest::HTTP_METHOD_POST, $server->getTokensEndpoint());
     /**
      * Sign it using our client *and* temporary credentials.
      */
     $this->_signer->signForAccessTokenRequest($httpRequest, $clientCredentials, $temporaryCredentials, $verificationCode);
     /**
      * Fetch the token.
      */
     return $this->_fetchCredentialsFromRemote($httpRequest, $server);
 }
 /**
  * @param ehough_shortstop_api_HttpRequest   $request
  * @param ehough_coauthor_api_v1_Credentials $clientCredentials
  * @param ehough_coauthor_api_v1_Credentials $tokenCredentials
  *
  * @return void
  *
  * @throws ehough_coauthor_api_exception_RuntimeException If anything fails.
  */
 public function signRequest(ehough_shortstop_api_HttpRequest $request, ehough_coauthor_api_v1_Credentials $clientCredentials, ehough_coauthor_api_v1_Credentials $tokenCredentials = null)
 {
     $this->_signer->sign($request, $clientCredentials, $tokenCredentials);
 }