| Current Path : /var/www/magento.test.indacotrentino.com/www/scripts/import/OLD/test/ |
| Current File : /var/www/magento.test.indacotrentino.com/www/scripts/import/OLD/test/testAuthentication.phpOK |
<?php
/*
* OAuth 1.0a client (Example) for Magento 2
*
* @see: https://oauth.net/core/1.0a
* @see: https://tools.ietf.org/html/rfc5849
*/
class Api
{
const OAUTH_VERSION = '1.0';
const OAUTH_SIGNATURE = 'HMAC-SHA256';
private $consumerKey;
private $consumerSecret;
private $accessToken;
private $accessTokenSecret;
private $host;
private $token;
public function __construct()
{
/*
$this->host = 'http://magento.test.indaco.store';
$this->consumerKey = '610dee75s27oe0jlx7dx8cyr5k275861';
$this->consumerSecret = 'aw0nis1v3kst9gxlozdewmf8pnotscxf';
$this->accessToken = '0kufmoncdszyzs13bkvyrkjxlgu593bj';
$this->accessTokenSecret = 'jvdbnuw6w4cfbv4o18cg44p400ap4ad6';
*/
/*
$this->host = 'http://indaco2.38121.it/';
$this->consumerKey = '6fxozvw17jwgfeyqt48yjih4di3ssn0q';
$this->consumerSecret = 'xpcpn35eyi137089gfoliknjfl27qyp3';
$this->accessToken = '1s535lnh4zp9ujjhna5v2vewofuo10p6';
$this->accessTokenSecret = 'm5ab6997ciuhe9dfk6shls5ygr7dveqe';
*/
$this->host = 'http://indaco.38121.it/';
$this->consumerKey = 'yh9nspb82lqo1h2buqi6l90hqltzwchb';
$this->consumerSecret = 'i1j57ms6b418b5z4d8q6uq3unyc4s0nn';
$this->accessToken = 't0nj8c2n71y6gmsb8t5mzwc9i70ly2y5';
$this->accessTokenSecret = 'u66odr3bnc5gr93bxv9rjg7ptx35psuc';
}
/*
* Generate a unique nonce
*
* @return string unique string
*/
private function getNonce(): string
{
return bin2hex(random_bytes(32));
}
/*
* Create a oauth_signature
*
* @param string $verb HTTP Method/Verb
* @param string $endpoint Complete url including scheme, host, path, params
* @param array $params Parameters prefixed with oauth_
* @return string oauth_signature value
*/
private function sign(string $verb, string $endpoint, array $params): string
{
ksort($params);// @see Zend_Oauth_Signature_SignatureAbstract::_toByteValueOrderedQueryString() for more accurate sorting, including array params
// define params that will be used either in Authorization header, or as url query params, excluding 'oauth_signature'
$strParams = http_build_query($params, '', '&', PHP_QUERY_RFC3986);
// echo "strParams: ".$strParams."\n";
$baseString = sprintf('%s&%s&%s',
strtoupper($verb),// HTTP method (POST/GET/PUT/...)
rawurlencode($endpoint),// base resource url - without port & query params & anchors, @see how Zend extracts it in Zend_Oauth_Signature_SignatureAbstract::normaliseBaseSignatureUrl()
rawurlencode($strParams)
);
// echo "baseString: ".$baseString."\n";
$key = rawurlencode($this->consumerSecret).'&'.rawurlencode($this->accessTokenSecret);
// echo "$key: ".$key."\n";
return base64_encode(hash_hmac('SHA256', $baseString, $key, true));
}
/*
* Generate Oauth token including signature
*
* @param string $verb HTTP Method/Verb
* @param string $endpoint Complete url including scheme, host, path, params
*/
private function generateToken(string $verb, string $endpoint): string
{
$params = [
'oauth_consumer_key' => $this->consumerKey,
'oauth_token' => $this->accessToken,
'oauth_timestamp' => time(),
'oauth_nonce' => $this->getNonce(),
'oauth_version' => self::OAUTH_VERSION,
'oauth_signature_method' => self::OAUTH_SIGNATURE
];
$params['oauth_signature'] = $this->sign($verb, $endpoint, $params);
//echo "oauth_signature: ".$params['oauth_signature']."\n";
return implode(',', array_map(
function ($v, $k) { return sprintf('%s="%s"', $k, $v); }, // php ^7.4 fn($v, $k) => sprintf("%s='%s'", $k, $v) SICK!!!
$params,
array_keys($params)
));
}
/*
* Send HTTP Request to Magento 2 REST API
*
* @param string $verb HTTP Method/Verb
* @param string $endpoint Complete url including scheme, host, path, params
* @param string $criteria Search criteria
* @param string $token Token oauth_token
* @return null|string Json response
*/
private function client(string $verb, string $endpoint, string $criteria=null, string $token): ?string
{
$ch = curl_init();
echo $endpoint.($criteria ? '?'.$criteria : '')."\n";
$search = [
'searchCriteria[pageSize]' => 2,
'searchCriteria[currentPage]' => 1,
];
curl_setopt_array($ch, [
CURLOPT_URL => $endpoint.($criteria ? '?'.http_build_query($search) : ''),
CURLOPT_CUSTOMREQUEST => $verb,
CURLOPT_HTTPHEADER => [
'Authorization: OAuth ' . $token,
'Content-Type: application/json'
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false, // WARNING: Don't use this in production!
CURLOPT_SSL_VERIFYHOST => false, // WARNING: Don't use this in production!
CURLOPT_VERBOSE => true // Set true for Debugging
]);
// CURLOPT_POST => 1,
// CURLOPT_POSTFIELDS => $criteria,
//curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_POSTFIELDS,
// "postvar1=value1&postvar2=value2&postvar3=value3");
$err = curl_error($ch);
var_dump($err);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
/*
* Send API Request
*
* @param string $verb HTTP Method/Verb
* @param string $rest Rest path and params
* @param string $criteria Search criteria
* @return null|object response
*/
public function request(string $verb, string $rest, string $criteria=null): ?object
{
$endpoint = $this->host . $rest;
$token = $this->generateToken($verb, $endpoint);
echo "TOKEN: ".$token."\n";
try {
$response = $this->client($verb, $endpoint, $criteria, $token);
echo var_dump($response);
if (!$response) {
die("\n\nERROR: Failed to get reponse!\n\n");
}
return json_decode($response);
} catch(\Exception $e) {
error_log($e->getMessage());
}
}
}
$api = new Api();
//$result = $api->request('GET', '/rest/V1/modules');
echo "------------------------------------------\n";
//$result = $api->request('GET', '/rest/V1/products/attribute-sets/sets/list/','searchCriteria=0');
$searchCondition = rawurlencode("searchCriteria[filter_groups][0][filters][0][field]=attribute_set_id").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][value]=9").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][condition_type]=eq");
//$searchCondition = "searchCriteria[filter_groups][0][filters][0][field]=attribute_set_id&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][value]=9&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][condition_type]=eq";
//$result = $api->request('GET', '/rest/default/V1/products/attribute-sets/groups/list/', $searchCondition);
//searchCriteria[page_size]=1&searchCriteria[current_page]=1
$searchCondition = rawurlencode("searchCriteria[filter_groups][0][filters][0][field]=entity_id").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][value]=1,2,3,4,5").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][condition_type]=in");
$searchCondition = rawurlencode("searchCriteria[filter_groups][0][filters][0][field]=name").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][value]=vino").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][condition_type]=like");
$searchCondition = rawurlencode("searchCriteria[filter_groups][0][filters][0][field]=store_id").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][value]=1").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][condition_type]=eq")."&";
$searchCondition = $searchCondition . rawurlencode("searchCriteria[page_size]")."=1&";
$searchCondition = $searchCondition . rawurlencode("searchCriteria[current_page]=1");
//$searchCondition = "searchCriteria[filter_groups][0][filters][0][field]=&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][value]=1&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][condition_type]=eq";
//$searchCondition = rawurlencode($searchCondition);
//$result = $api->request('GET', '/rest/default/V1/products',$searchCondition);
$searchCondition = rawurlencode("searchCriteria[filter_groups][0][filters][0][field]=entity_id").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][value]=1").'&' ;
$searchCondition = $searchCondition . rawurlencode("searchCriteria[filter_groups][0][filters][0][condition_type]=eq");
//$searchCondition = "searchCriteria[filter_groups][0][filters][0][field]=customer_id&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][value]=1&" ;
//$searchCondition = $searchCondition . "searchCriteria[filter_groups][0][filters][0][condition_type]=eq";
//$result = $api->request('GET', '/rest/V1/orders',$searchCondition);
//$result = $api->request('GET', '/rest/V1/orders/1');
$searchCondition = 'fields=sku,price,name';
//$result = $api->request('GET', '/rest/default/V1/products/vinotest', $searchCondition);
$result = $api->request('GET', 'rest/default/V1/products/attribute-sets/sets/list', 'searchCriteria=0');
//print_r($result).PHP_EOL;
exit(1);