/**
  * Make the API request
  *
  * @param \JotForm\Request $request
  * @param Boolean $useQueryAuthCredential
  * @return Object
  * @throws Exception
  */
 public function executeRequest(\JotForm\Request $request, $useQueryAuthCredential = true)
 {
     $body = [];
     switch (strtolower($request->getMethod())) {
         case 'post':
         case 'put':
             $body['form_params'] = $request->getData();
             break;
         default:
             break;
     }
     if ($useQueryAuthCredential) {
         $body = array_merge($this->credentials, $body);
     }
     // Check/get additional query options/parameters
     if ($options = $request->getQueryOptions()) {
         foreach ($options as $k => $v) {
             $body['query'][$k] = $v;
         }
     }
     try {
         $response = $this->httpClient->request($request->getMethod(), $request->getEndpoint(), $body);
         $body = $response->getBody();
         $object = json_decode($body);
         return $object;
     } catch (\GuzzleHttp\Exception\ClientException $e) {
         throw new \Exception('GuzzleHttp\\Exception\\ClientException: ' . $e->getMessage());
     } catch (\GuzzleHttp\Exception\RequestException $e) {
         throw new \Exception('GuzzleHttp\\Exception\\RequestException: ' . $e->getMessage());
     } catch (\GuzzleHttp\Exception\ConnectException $e) {
         throw new \Exception('GuzzleHttp\\Exception\\ConnectException: ' . $e->getMessage());
     } catch (\GuzzleHttp\Exception\ServerException $e) {
         throw new \Exception('GuzzleHttp\\Exception\\ServerException: ' . $e->getMessage());
     } catch (\Exception $e) {
         throw new \Exception('Exception: ' . $e->getMessage());
     }
 }