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

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


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Відео
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

omaeurl

OmaeUrl

Клас OmaeUrl надає рівень абстракції для роботи з HTTP запитами до віддалених хостів. Здебільшого він наслідує кумулятивні механіки 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 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(). Він же і повертає сирі дані, отримані в процесі виконання запиту.

Давайте розглянемо трохи, більш наркоманський приклад взаємодії з кабінетом користувача за допомогою 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 можна дізнатись, ознайомившись ось із цією документацією

omaeurl.txt · Востаннє змінено: 2023/06/17 15:38 повз nightfly