mirror of
https://github.com/brunofontes/Memsource-API.git
synced 2024-11-23 19:00:50 +00:00
Refactoring Oauth and Memsource classes
This commit is contained in:
parent
aaabb91039
commit
283e85b834
@ -11,6 +11,11 @@ class FetchApi
|
|||||||
{
|
{
|
||||||
protected $base_url;
|
protected $base_url;
|
||||||
protected $token;
|
protected $token;
|
||||||
|
|
||||||
|
public function getBase_url()
|
||||||
|
{
|
||||||
|
return $this->base_url;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BaseAPI needs at least the Memsource Token to use it's API
|
* BaseAPI needs at least the Memsource Token to use it's API
|
||||||
@ -18,7 +23,7 @@ class FetchApi
|
|||||||
* @param string $token
|
* @param string $token
|
||||||
* @param string $memsourceBaseUrl [Optional] A non-standard Memsource URL base for the API to work
|
* @param string $memsourceBaseUrl [Optional] A non-standard Memsource URL base for the API to work
|
||||||
*/
|
*/
|
||||||
public function __construct(string $token = null, string $memsourceBaseUrl = 'https://cloud.memsource.com/web')
|
public function __construct(string $token = null, string $memsourceBaseUrl)
|
||||||
{
|
{
|
||||||
$this->base_url = $memsourceBaseUrl;
|
$this->base_url = $memsourceBaseUrl;
|
||||||
$this->token = $token;
|
$this->token = $token;
|
||||||
@ -27,7 +32,7 @@ class FetchApi
|
|||||||
/**
|
/**
|
||||||
* Fetch API data using curl
|
* Fetch API data using curl
|
||||||
*
|
*
|
||||||
* @param string $method Should be 'get', 'post', 'jsonPost' or 'download'
|
* @param string $method Should be 'get', 'put', 'post', 'jsonPost', 'download' or 'raw'
|
||||||
* @param string $url The api url
|
* @param string $url The api url
|
||||||
* @param array $parameters Array ['key' => 'value'] of get or post fields or structured array for json requests
|
* @param array $parameters Array ['key' => 'value'] of get or post fields or structured array for json requests
|
||||||
* @param string $filename [optional] Specified file in which the download request will be saved
|
* @param string $filename [optional] Specified file in which the download request will be saved
|
||||||
@ -64,6 +69,9 @@ class FetchApi
|
|||||||
$setopt = $this->getDownloadFileParam($filename)
|
$setopt = $this->getDownloadFileParam($filename)
|
||||||
+ $this->getJsonPostParam($parameters);
|
+ $this->getJsonPostParam($parameters);
|
||||||
break;
|
break;
|
||||||
|
case 'raw':
|
||||||
|
$setopt = $parameters;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new \Exception("Method {$method} is invalid on Fetch", 1);
|
throw new \Exception("Method {$method} is invalid on Fetch", 1);
|
||||||
}
|
}
|
||||||
|
@ -8,9 +8,15 @@
|
|||||||
|
|
||||||
namespace BrunoFontes;
|
namespace BrunoFontes;
|
||||||
|
|
||||||
|
use \BrunoFontes\Memsource\BilingualFile;
|
||||||
|
use \BrunoFontes\Memsource\FetchApi;
|
||||||
|
use \BrunoFontes\Memsource\Jobs;
|
||||||
|
use \BrunoFontes\Memsource\Oauth;
|
||||||
|
use \BrunoFontes\Memsource\Project;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memsource API class
|
* Memsource API class
|
||||||
*
|
*
|
||||||
* Instructions: https://github.com/brunofontes/Memsource-API/
|
* Instructions: https://github.com/brunofontes/Memsource-API/
|
||||||
* Memsource API details: https://cloud.memsource.com/web/docs/api
|
* Memsource API details: https://cloud.memsource.com/web/docs/api
|
||||||
*/
|
*/
|
||||||
@ -24,47 +30,46 @@ class Memsource
|
|||||||
|
|
||||||
public function __construct(string $token = null, string $memsourceBaseUrl = 'https://cloud.memsource.com/web')
|
public function __construct(string $token = null, string $memsourceBaseUrl = 'https://cloud.memsource.com/web')
|
||||||
{
|
{
|
||||||
$this->_fetchApi = new \BrunoFontes\Memsource\FetchApi($token, $memsourceBaseUrl);
|
$this->_fetchApi = new FetchApi($token, $memsourceBaseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memsource Oauth functions
|
* Memsource Oauth functions
|
||||||
*
|
*
|
||||||
* @return \BrunoFontes\Memsource\Oauth
|
* @return Oauth
|
||||||
*/
|
*/
|
||||||
public function oauth(): \BrunoFontes\Memsource\Oauth
|
public function oauth(): Oauth
|
||||||
{
|
{
|
||||||
return $this->_oauth ?? $this->_oauth = new \BrunoFontes\Memsource\oauth();
|
return $this->_oauth ?? $this->_oauth = new oauth($this->_fetchApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memsource API BilingualFile related functions
|
* Memsource API BilingualFile related functions
|
||||||
*
|
*
|
||||||
* @return \BrunoFontes\Memsource\BilingualFile
|
* @return BilingualFile
|
||||||
*/
|
*/
|
||||||
public function bilingualFile(): \BrunoFontes\Memsource\BilingualFile
|
public function bilingualFile(): BilingualFile
|
||||||
{
|
{
|
||||||
return $this->_bilingualFile ?? $this->_bilingualFile = new \BrunoFontes\Memsource\BilingualFile($this->_fetchApi);
|
return $this->_bilingualFile ?? $this->_bilingualFile = new BilingualFile($this->_fetchApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memsource API Jobs related functions
|
* Memsource API Jobs related functions
|
||||||
*
|
*
|
||||||
* @return \BrunoFontes\Memsource\Jobs
|
* @return Jobs
|
||||||
*/
|
*/
|
||||||
public function jobs(): \BrunoFontes\Memsource\Jobs
|
public function jobs(): Jobs
|
||||||
{
|
{
|
||||||
return $this->_jobs ?? $this->_jobs = new \BrunoFontes\Memsource\Jobs($this->_fetchApi);
|
return $this->_jobs ?? $this->_jobs = new Jobs($this->_fetchApi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memsource API Project related functions
|
* Memsource API Project related functions
|
||||||
*
|
*
|
||||||
* @return \BrunoFontes\Memsource\Project
|
* @return Project
|
||||||
*/
|
*/
|
||||||
public function project(): \BrunoFontes\Memsource\Project
|
public function project(): Project
|
||||||
{
|
{
|
||||||
return $this->_project ?? $this->_project = new \BrunoFontes\Memsource\Project($this->_fetchApi);
|
return $this->_project ?? $this->_project = new Project($this->_fetchApi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
namespace BrunoFontes\Memsource;
|
namespace BrunoFontes\Memsource;
|
||||||
|
|
||||||
class Oauth extends \BrunoFontes\Memsource\FetchApi
|
class Oauth extends \BrunoFontes\Memsource\BaseApi
|
||||||
{
|
{
|
||||||
private $_url = '/oauth';
|
private $_url = '/oauth';
|
||||||
|
|
||||||
@ -23,8 +23,16 @@ class Oauth extends \BrunoFontes\Memsource\FetchApi
|
|||||||
*/
|
*/
|
||||||
public function getAuthorizationCodeUrl(string $client_id, string $callback_uri)
|
public function getAuthorizationCodeUrl(string $client_id, string $callback_uri)
|
||||||
{
|
{
|
||||||
$authorize_url = $this->base_url . $this->_url . '/authorize';
|
$authorize_url = $this->fetchApi->getBase_url() . $this->_url . '/authorize';
|
||||||
return $authorize_url . '?response_type=code&client_id=' . $client_id . '&redirect_uri=' . $callback_uri . '&scope=openid';
|
$parambeters = http_build_query(
|
||||||
|
[
|
||||||
|
"response_type" => 'code',
|
||||||
|
"client_id" => $client_id,
|
||||||
|
"redirect_uri" => $callback_uri,
|
||||||
|
"scope" => 'openid'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
return "{$authorize_url}?{$parambeters}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAccessToken(string $authorization_code, string $client_id, string $client_secret, string $callback_uri)
|
public function getAccessToken(string $authorization_code, string $client_id, string $client_secret, string $callback_uri)
|
||||||
@ -38,7 +46,12 @@ class Oauth extends \BrunoFontes\Memsource\FetchApi
|
|||||||
CURLOPT_POST => true,
|
CURLOPT_POST => true,
|
||||||
CURLOPT_POSTFIELDS => $content
|
CURLOPT_POSTFIELDS => $content
|
||||||
];
|
];
|
||||||
$response = json_decode($this->curl($token_url, $params), true);
|
$response = json_decode($this->fetchApi->fetch('raw', $token_url, $params), true);
|
||||||
|
|
||||||
|
if (isset($response['error'])) {
|
||||||
|
throw new \Exception("Error getting TOKEN: " . $response['error_description'], 1);
|
||||||
|
}
|
||||||
|
|
||||||
return $response['access_token'];
|
return $response['access_token'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user