====== 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|ось із цією документацією]]