Example #1
0
 public static function generateAccessToken()
 {
     //the base uri for api requests
     $queryBuilder = Configuration::$BASEURI;
     //prepare query string for API call
     $queryBuilder = $queryBuilder . '/token';
     //validate and preprocess url
     $queryUrl = APIHelper::cleanUrl($queryBuilder);
     //prepare headers
     $headers = array('user-agent' => 'APIMATIC 2.0', 'Accept' => 'application/json', 'Authorization' => sprintf('Basic %1$s', base64_encode(Configuration::$clientID . ':' . Configuration::$clientSecret)));
     //prepare parameters
     $parameters = array('grant_type' => 'client_credentials');
     //prepare API request
     $request = Unirest::post($queryUrl, $headers, $parameters);
     //and invoke the API call request to fetch the response
     $response = Unirest::getResponse($request);
     //Error handling using HTTP status codes
     if ($response->code == 500) {
         throw new APIException('Authentication error', 500, $response->body);
     } else {
         if ($response->code < 200 || $response->code > 206) {
             //[200,206] = HTTP OK
             throw new APIException("HTTP Response Not OK", $response->code, $response->body);
         }
     }
     if (isset($response->body->error)) {
         throw new APIException($response->body->error->code, $response->body->error->http_code, $response->body->error->message);
     }
     if (!isset($response->body->access_token)) {
         throw new OAuthException('Access token is missing.');
     }
     Configuration::$oAuthAccessToken = $response->body->access_token;
     return $response->body->access_token;
 }