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

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


Сайдбар

Розділи

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

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.1664019551.txt.gz · Востаннє змінено: 2022/09/24 14:39 повз 127.0.0.1