====== OmaeUrl ======
Клас OmaeUrl надає рівень абстракції для роботи з HTTP запитами до віддалених хостів. Здебільшого він наслідує кумулятивні механіки [[nyanorm|NyanORM]] і намагається бути максимально на нього схожим у всіх своїх проявах.
Отже, коротко в прикладах. Наприклад, хочемо дізнатися, який у нас останній стабільний реліз Ubilling:
$ubillingRelease=new OmaeUrl('http://ubilling.net.ua/RELEASE');
$latestRelease=$ubillingRelease->response();
Ну або так, якщо вам так хочеться:
$ubillingRelease=new OmaeUrl();
$latestRelease=$ubillingRelease->response('http://ubilling.net.ua/RELEASE');
Ну або хочеться дізнатися виробника обладнання з якимось MAC, за допомогою API [[https://searchmac.com|searchmac.com]]:
$apiUrl = 'http://searchmac.com/api/v2/';
$mac = '00:19:99:e0:cf:c8';
$searchMac = new OmaeUrl();
$vendor = $searchMac->response($apiUrl.$mac);
Коротше, звернення до URL-у і опційне відсилання GET/POST(dataGet()/dataPost()) змінних туди-ж, а також виставлення куки(dataCookie), заголовків(dataHeader), авторизації (setBasicAuth) і всього іншого, відбувається в момент request(). Він же і повертає сирі дані, отримані в процесі виконання запиту.
Давайте розглянемо трохи, більш наркоманський приклад взаємодії з кабінетом користувача за допомогою [[xmlagent|API XMLAgent]]?
$userstatsUrl = 'http://demo.ubilling.net.ua:9999/billing/userstats/';
$userstatsApi = new OmaeUrl($userstatsUrl);
$agent = 'UbillingYobaBrowser/6.6.6 awesome';
$userstatsApi->setUserAgent($agent);
//user params
$userLogin = 'tbjfp4mb';
$userPassword = 'piwkg';
//setting some request options
$userstatsApi->dataGet('xmlagent', 'true');
$userstatsApi->dataGet('json', 'true');
$userstatsApi->dataGet('uberlogin', $userLogin);
$userstatsApi->dataGet('uberpassword', md5($userPassword));
//performing request
$result = $userstatsApi->response();
//connection issues handling
if ($userstatsApi->httpCode() == 0) {
$error = $userstatsApi->error();
show_error($error['errorcode'] . ' ' . $error['errormessage']);
}
$requestInfo = $userstatsApi->lastRequestInfo();
if ($requestInfo['http_code'] != 200) {
//something went wrong?
show_error(__('HTTP error code') . ': ' . $requestInfo['http_code']);
} else {
//ok, some data received
if (!empty($result)) {
$result = json_decode($result, true);
debarr($result);
}
}
ну власне й отримуємо на виході потрібні нам дані
Array
(
[address] => Зловісненськ Шевченка 13/7
[realname] => Василь Бухайко
[login] => tbjfp4mb
[cash] => 0
[ip] => 172.30.0.9
[phone] => 90932
[mobile] => 925219854
[email] => tbjfp4mb@ourisp.ua
[credit] => 0
[creditexpire] => No
[payid] => 2887647241
[contract] => 80362
[tariff] => Unlim-5
[tariffnm] => No
[traffdownload] => 0 b
[traffupload] => 0 b
[trafftotal] => 0 b
[accountstate] => active
[accountexpire] => 4
[currency] => UAH
[version] => 1
)
Власне щодо відсилання POST даних, то вони нічим не відрізняються від GET у контексті роботи з OmaeUrl:
$userstatsApi->dataPost('postvariable1', 'true');
$userstatsApi->dataPost('postvariable2', '666');
Слід також мати на увазі, що після здійснення response() всі структури GET/POST/COOKIE не очищаються автоматично, власне для спрощення роботи з віддаленими API, які вимагають певного набору вхідних даних для всіх запитів. Для їх очищення, ви можете викликати відповідні сеттери з порожніми значеннями, або в разі потреби здійснення повторних запитів з іншими параметрами, ви просто встановлюєте сетерами нові значення для тих самих імен змінних і робите наступний запит. Приклад:
$userstatsUrl = 'http://demo.ubilling.net.ua:9999/billing/userstats/';
$userstatsApi = new OmaeUrl($userstatsUrl);
//setting some request options
$userstatsApi->dataGet('xmlagent', 'true');
$userstatsApi->dataGet('json', 'true');
//performing requests for different users
$userLogin = 'tbjfp4mb';
$userPassword = 'piwkg';
$userstatsApi->dataGet('uberlogin', $userLogin);
$userstatsApi->dataGet('uberpassword', md5($userPassword));
$userData = $userstatsApi->response();
$userLogin = 'v6x3edx5';
$userPassword = '2omzn';
$userstatsApi->dataGet('uberlogin', $userLogin);
$userstatsApi->dataGet('uberpassword', md5($userPassword));
$anotherUserData = $userstatsApi->response();
debarr(json_decode($userData, true));
debarr(json_decode($anotherUserData, true));
Детальніше про методи і можливості OmaeUrl можна дізнатись, ознайомившись [[https://ubilling.net.ua/api_doc/classes/OmaeUrl.xhtml|ось із цією документацією]]