Your IP : 216.73.217.13


Current Path : /var/www/magento.test.indacotrentino.com/www/scripts/import/OLD/test/
Upload File :
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);