Користувальницькькі налаштування

Налаштування сайту


omaeurl

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
omaeurl [2021/11/27 17:10]
omaeurl [2023/06/17 15:38] (поточний)
nightfly
Рядок 1: Рядок 1:
 +====== OmaeUrl ======
  
 +Клас OmaeUrl надає рівень абстракції для роботи з HTTP запитами до віддалених хостів. Здебільшого він наслідує кумулятивні механіки [[nyanorm|NyanORM]] і намагається бути максимально на нього схожим у всіх своїх проявах.
 +
 +Отже, коротко в прикладах. Наприклад, хочемо дізнатися, який у нас останній стабільний реліз Ubilling:
 +
 +<code php>
 +    $ubillingRelease=new OmaeUrl('http://ubilling.net.ua/RELEASE');
 +    $latestRelease=$ubillingRelease->response();
 +</code>
 +
 +Ну або так, якщо вам так хочеться:
 +
 +<code php>
 +    $ubillingRelease=new OmaeUrl();
 +    $latestRelease=$ubillingRelease->response('http://ubilling.net.ua/RELEASE');
 +</code>
 +
 +Ну або хочеться дізнатися виробника обладнання з якимось MAC, за допомогою API [[https://searchmac.com|searchmac.com]]:
 +
 +<code php> 
 +    $apiUrl = 'http://searchmac.com/api/v2/';
 +    $mac = '00:19:99:e0:cf:c8';
 +    $searchMac = new OmaeUrl();
 +    $vendor = $searchMac->response($apiUrl.$mac);
 +</code>
 +
 +
 +Коротше, звернення до URL-у і опційне відсилання GET/POST(dataGet()/dataPost()) змінних туди-ж, а також виставлення куки(dataCookie), заголовків(dataHeader), авторизації (setBasicAuth) і всього іншого, відбувається в момент request(). Він же і повертає сирі дані, отримані в процесі виконання запиту.
 +
 +Давайте розглянемо трохи, більш наркоманський приклад взаємодії з кабінетом користувача за допомогою [[xmlagent|API XMLAgent]]?
 +
 +<code php>
 +    $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);
 +        }
 +    }
 +</code>
 +
 +
 +ну власне й отримуємо на виході потрібні нам дані
 +
 +<code>
 +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
 +)
 +</code>
 +
 +Власне щодо відсилання POST даних, то вони нічим не відрізняються від GET у контексті роботи з OmaeUrl:
 +
 +<code php>
 +  $userstatsApi->dataPost('postvariable1', 'true');
 +  $userstatsApi->dataPost('postvariable2', '666');
 +</code>
 +
 +Слід також мати на увазі, що після здійснення response() всі структури GET/POST/COOKIE не очищаються автоматично, власне для спрощення роботи з віддаленими API, які вимагають певного набору вхідних даних для всіх запитів. Для їх очищення, ви можете викликати відповідні сеттери з порожніми значеннями, або в разі потреби здійснення повторних запитів з іншими параметрами, ви просто встановлюєте сетерами нові значення для тих самих імен змінних і робите наступний запит. Приклад:
 +
 +<code php>
 +    $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));
 +</code>
 +
 +
 +Детальніше про методи і можливості OmaeUrl можна дізнатись, ознайомившись [[https://ubilling.net.ua/api_doc/classes/OmaeUrl.xhtml|ось із цією документацією]]