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.loginByToken",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);
}