<?php
/**
 * Base API Model
 */

use \GuzzleHttp\Client;
use \GuzzleHttp\Cookie\CookieJar;

/**
 * Base model for api interaction
 */
class BaseApiModel extends BaseModel {

	/**
	 * The Guzzle http client object
	 * @var object $client
	 */
	protected $client;

	/**
	 * Cookie jar object for api requests
	 * @var object $cookieJar
	 */
	protected $cookieJar;

	/**
	 * Constructor
	 */
	public function __construct()
	{
		parent::__construct();

		$this->cookieJar = new CookieJar();
		$this->client = new Client([
			'base_url' => $this->base_url,
			'defaults' => [
				'cookies' => $this->cookieJar,
				'headers' => [
					'User-Agent' => $_SERVER['HTTP_USER_AGENT'],
					'Accept-Encoding' => 'application/json'
				],
				'timeout' => 5,
				'connect_timeout' => 5
			]
		]);
	}

	/**
	 * Get the full url path, since the base_url in Guzzle doesn't work correctly
	 *
	 * @param string $path
	 * @return string
	 */
	protected function _url($path)
	{
		return "{$this->base_url}{$path}";
	}

}
// End of BaseApiModel.php