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 можна дізнатись, ознайомившись ось із цією документацією