Příklady použití API Sklik Drak Vyhledávání
Všechno důležité dění okolo API. Odebírej náš Sklik API newsletter.

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/drak/json/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/drak/json/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/drak/json/';
    
    /**
     * 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/drak/json/' + 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);
}