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

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


omaeurl

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Остання ревізія По сторонах наступні версії
omaeurl [2021/11/27 16:36]
omaeurl [2023/06/17 15:22]
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|ось із цією документацією]]
omaeurl.txt · Востаннє змінено: 2023/06/17 15:38 повз nightfly