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

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


omaeurl

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Наступна ревізія По сторонах наступні версії
omaeurl [2021/11/27 17:10]
omaeurl [2022/09/24 14:39]
127.0.0.1 зовнішнє редагування
Рядок 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