Powered by CodeIgniter

Шестеренка

(27)
18
18 голосов
В сообществе «Шестеренка» предлагаю публиковать свои шестеренки. Как готовые варианты, так и Alfa, Beta версии.
Приветствую!

Пока делал шестеренку Sypex Dumper 2, паралельно задумалась идея об API. Ну подобие API что-ли. В общем у нее возможности могут разными. Пока что для примера сделал данные о пользователе (публичные и приватные) и настроек (info).
Установка проста:
Скачать архив — Распакавать в каталог шестеренок
— Войти в админапанель, создать приватный Api-key полного доступа


Теперь вам доступна возможность получать данные (в формате JSON) для сторонних скриптов, особенно если они расположены на другом сайте(сервере).

Для примера данные о пользователе можно получить так:
_http://cogear/cgapi/user/API-KEY/admin

вместо API-KEY указав ключ можем получить следующие данные:

0 — публичные данные (имя, последнее посещение, рейтинг) — _http://cogear/cgapi/user/0/admin
{"success":true,"mode":"public","name":"admin","last_visit":"2010-03-14 16:01:47","points":"0","points_counter":"0"}
Api-key полного доступа — приватные данные (email, дата регистрации, заряд, ip, аватар) — _http://cogear/cgapi/user/82a564470224c4662431bcb8f31830bd/admin
{"mode":"private","id":"1","email":"xxxxxx@gmail.com","url_name":"admin","reg_date":"2007-03-14 23:10:48","user_group":"1","charge":"8","last_charge_bonus":"2010-02-13 16:08:13","allow_mail":"true","is_validated":"true","ip":"127.0.0.1","avatar":{"24x24":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/24x24\/20986.jpg","64x64":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/64x64\/20986.jpg","128x128":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/128x128\/20986.jpg","original":"Z:\/home\/cogear\/www\/uploads\/avatars\/1\/20986.jpg"}}
Что еще можно получить?

Можно получить рейтинг топика, комментария, можно организовать удаленную авторизацию для своих отдельных скриптов, получая данные подтверждения и т.д и т.п.

Для примера скрипт который покажет как обработать данные:
$json = file_get_contents('http://cogear/cgapi/config/82a564470224c4662431bcb8f31830bd/global/database') Получим в ответ: {«success»:true,«message»:«mysqli:\/\/root:123321@localhost\/cogear»}
Это мы получили данные базы данных, ну мало ли в каком скрипте они были нужны.

Теперь можем обработать данные JSON, разобрав их по отдельности.
$json = json_decode($json); print $json->{'message'};
получаем отдельно строку: mysqli:\/\/root:123321@localhost\/cogear
Разбираем на части:
$database = preg_split("(://|@|/)", $json['database']); $tmp = explode(":", $database[1]); // user:password, иногда ведь бывает и без пароля:) $database[1] = $tmp[0]; $database[4] = $tmp[1]; print_r($database); Итог:
Array ( [0] => mysqli [1] => root [2] => localhost [3] => dbname [4] => 123321 )
Вообще честно признать, очень специфичная шестеренка, поэтому не выкладываю в каталог, так как я не могу привести примеров где она может часто пригодится. Для меня это был просто — интерес.

p.s. Кстати, о той же шестеренке sypex dumper, для того что-бы выудить данные базы данных я воспользовался другим способом, приведу код — вам будет все понятно:
$global_info = parse_ini_file("../../../global/global.info"); if(!empty($_COOKIE['s']) && preg_match('/^[\da-f]{32}$/', $_COOKIE['s'])) { # 0-mysqli, 1-user, 2-host, 3-dbname, 4-password $global_info['database'] = preg_split("(://|@|/)", $global_info['database']); $tmp = explode(":", $global_info['database'][1]); // user:password $global_info['database'][1] = $tmp[0]; $global_info['database'][4] = $tmp[1]; $this->CFG['my_db'] = $global_info['database'][3]; $uid = $_COOKIE['id']; $sid = $_COOKIE['s']; if ($this->connect($global_info['database'][2], '', $global_info['database'][1], $global_info['database'][4])) { mysql_selectdb($global_info['database'][3]); if($query = mysql_query('SELECT * FROM `users` WHERE id='.$uid.' and is_validated=TRUE')){ $user = mysql_fetch_assoc($query); if (($user['user_group'] == 1) && (md5(sha1($user['name'].$user['password']).date("Y-m")) === $sid)) { $auth = 1; } } } }
12:24 ← 24 марта 2010 Отправить в Твиттер freemFreem  RSS comments 8

Комментарии (8) ↓

Tsukasa-mixer Tsukasa-mixer time 05:44 ← 26 марта 2010 #
Кста шестеренка пригодится ;) сиб
Neuron Neuron time 10:04 ← 26 сентября 2010 #
ссылка удалена с Яндекса:(
Автор
Freem Freem time 10:45 ← 27 сентября 2010 #
Надо посмотреть дома, надеюсь не удалил :-)
inetlover inetlover time 13:19 ← 27 сентября 2010 #
Не понимаю, как я раньше не заметил этой шестеренки — она мне тоже нужна.
Продублируйте файл, плиз.
Автор
Freem Freem time 13:53 ← 10 ноября 2010 #
К сожалению удалил :( Если надо могу снова написать… что хотите от такого api?
inetlover inetlover time 16:19 ← 10 ноября 2010 #
Спасибо!
Я просто хотел посмотреть, как устроен механизм который выводит данные в формате JSON.
Хотел поучиться на чужом опыте. :-)
Автор
Freem Freem time 16:53 ← 10 ноября 2010 #
В приницпе ничего сложного в выводе нет, на вскидку код не проверял, т.е. делал примерно в таком виде.

function index($param = FALSE){ $arr = array( 'val1' => 123, 'val2' => 'abc' ); $json_data = json_encode($arr); if ($param =- 'json') { ajax(TRUE, $json_data); } }
inetlover inetlover time 01:25 ← 11 ноября 2010 #
Спасибо!

Как начну делать, сразу же обращусь к вашей подсказке.