Příklady použití API Sklik Drak Vyhledávání

Příklady volání API Drak

Pro snadnější implementaci našeho Sklik API rozraní jsme si pro vás připravili vzorové příklady v nejčastěji používaných jazycích.
Příklady jsou dostupné i na Seznam githubu

Python [JSON]

from requests import post
import json

class JsonSklik:
                
        def login(self):
            response = post("https://api.sklik.cz/jsonApi/drak/client.login",json=("", ""))
            res = response.json()
            if res["status"] == 200:
                self.session = res["session"]
                return True
            else:
                return False
    
        """
        Volani metody
        @return |Boolen    

        Other examples and date types
        OBJECT - "group":{"status":["active","suspend"],"isDeleted":False}
        ARRAY - 'ids': [1297587,123932]
        STRING[] - "displayColumns":["id","name"]
            import base64
            square = open('300_300.jpg',"rb").read().encode('base64')
        BINARY - 'image': square

        """
        def request(self):
            if self.login():
                response = response = post('https://api.sklik.cz/jsonApi/drak/ads.createReport', json=[{"session":self.session},
                {"dateFrom":"2018-01-22",
                "dateTo":"2018-02-23"}
                ])
                return response.json()
            else:
                return False

example = JsonSklik()
print example.request()

PHP [JSON]

<?php

/**
 * API DRAK JSON
 * Čisté volání API DRAK přes JSON pomocí nativních metod PHP
 */
class JsonSklik {

    /**
     * Session - Po přihlášení je vyžadované u každého volání pro autentizaci
     * @var string 
     */
    protected $session = '';
    
    /**
     * URL pro volání dotazu - API verze DRAK
     * @var string 
     */
    protected $url = 'https://api.sklik.cz/jsonApi/drak';
    
    /**
     * Zavolání XML dotazu
     * @param string $url - kompletní adres
     * @param string $request - XML dotaz (ve formátu XML-RCP)
     * @see https://cs.wikipedia.org/wiki/XML-RPC#T%C4%9Blo
     * @return string
     */
    protected function call($url, $request) {
        $header[] = "Content-type: application/json";
        $header[] = "Content-length: " . strlen($request);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

        $data = curl_exec($ch);
        if (curl_errno($ch)) {
            return curl_error($ch);
        } else {
            curl_close($ch);
            return $data;
        }
    }
    
    /**
     * Přihlášení uživatele pomocí uživatelského jména a hesla
     */
    public function login() {
        $ses = array();
        $request = json_encode(
            array('')
        );
        $response = $this->call($this->url.'/client.loginByToken', $request);        
        $response = json_decode($response);
        if(isset($response->session)) {
            $this->session = $response->session;            
        }
    }
    /**
     * Volání metody. 
     * @return mixed
     */
    public function request() {
        $this->login();
        $method = 'client.stats';
        $request = json_encode(
            array(
                array('session'=>$this->session),
                array(
                    'dateFrom' => '2017-02-20',
                    'dateTo' => '2017-02-22',
                    'granularity' => 'total'
                )
            )
        );        
        $response = $this->call($this->url.'/'.$method, $request);
        return json_decode($response);
    }
}
$test = new JsonSklik();
echo $test->request();
?>

JavaScript [JSON]

/**
 * Call API method
 * @param {String} method  - API method 
 * @param {Object} parameters - parametrs for API method
 * @param {String} callback - Callback method after success API call
 * @param {Mixed} params - variables which will be push to callback method
 */
function sklikApi(method, parameters, callback, params) {
  $.ajax({
    contentType: 'application/json',
    method: 'POST',
    dataType: "json",
    url: 'https://api.sklik.cz/jsonApi/drak/' + method,
    data: JSON.stringify(parameters)
  }).done(function (response) {
    if (response.session) {
      session = response.session;
      if (callback) {
        callback(response, params);
      }
    } else {
      return false;
    }
  }).fail(function (jqXHR, textStatus) {
    return false;
  });
}

/**
 * Login user by Token
 */
function loginByToken() {
  //############# TOKEN
  var token = '';
  var userId = [010];
  sklikApi('client.loginByToken', token, createReport, { 'userIds': userId });
}

/**
 * Create method by API
 * @param {Object} parameters 
 */
function createReport(response, parameters) {
  var params =
    [{ 'session': session, 'userId': parameters.userId },
    {
      'campaign': { 'status': ['active'] },
      'group': { 'status': ['active'] },
      'dateFrom': '2018-01-08',
      'dateTo': '2018-02-08'
    },
    { 'statGranularity': 'monthly' }
    ];

  sklikApi(
    'keywords.createReport',
    params,
    printer,
    parameters
  );
}

/**
 * Print createReports response
 * @param {Object} response 
 * @param {Object} parameters 
 */
function printer(response, parameters) {
  console.log(response.totalCount);
}