Вдигна се известно количество шум покрай edno23.com след p2p конференцията и няколко човека проявиха интерес да ползват API-то на edno23. Тъй като въпросното API предлага само базова функционалност и не е доизпипано, все още не сме го пуснали публично. Затова в тази тема ще обясня накратко що за животно е и как се ползва и ще съм много благодарен на всякакъв фийдбек.
Държа да уточня две важни неща обаче:
1. Функционалността на API-то е и ще бъде ограничена. Ако всичко може да се прави през API-то, тогава самият сайт като сайт ще бъде излишен, което не е целта на занятието
2. API-то има ограничения за брой заявки в секунда, минута, час, ден и др., както и в количеството върнати данни.
Към момента API-то се състои от три основни части:
1. Интерфейс за извличане на информация – адресът е: http://edno23.com/api/xml/get.php
2. Интерфейс за публикуване на съобщения – адресът е: http://edno23.com/api/xml/post.php
3. Интерфейс за проследяване на потребители – адресът е: http://edno23.com/api/xml/follow.php
4. Интерфейс за проверка на потребител и парола – адресът е: http://edno23.com/api/xml/usercheck.php
Към тези адреси се изпращат стандартни GET и POST заявки, информацията се връща в XML формат. За нещата, които изискват логване с потребителско име и парола, се използва базова http автентикация. По-надолу ще се опитам да обясня горе-долу кое как работи.
Част 1: Извличане на информация
-
Как да вземем всички хора, които следят даден потребител в edno23.com:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=followers
В примера на мястото на Nick се поставя съответното потребителско име. При евентуална грешка скриптът ще върне съобщение от сорта на:<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ERROR</status>
<errmsg>Invalid user еди-кой-си</errmsg>
</edno23>Списъкът с исканите потребители се връща в следния вид:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ОК</status>
<users>
<user>
<username>Manuel</username>
<profile>http://manuel.edno23.com</profile>
<avatar>1223583067_13508.png</avatar>
</user>
<user>
<username>pesho</username>
<profile>http://pesho.edno23.com</profile>
<avatar>1240398685_99536.png</avatar>
</user>
….
</users>
</edno23>За всеки потребител се връща: потребителско име, линк към профила му, аватар. Аватарът е само името на файла – преди него трябва да се постави пътят към директорията, съответстваща на искания от вас размер:
http://img.edno23.com/avatars/името-на-файла.png – за картинки с размер 150х150 пиксела;
http://img.edno23.com/avatars/thumbs/името-на-файла.png – за картинки с размер 50х50 пиксела;
http://img.edno23.com/avatars/thumbs2/името-на-файла.png – за картинки с размер 16х16 пиксела. -
Как да вземем всички хора, които даден потребител следи в edno23.com:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=following
Информацията се връща по същия начин, както в по-горния пример. -
Как да вземем по-подробна информация за даден потребител:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=userinfo
Информацията се връща в следния вид:<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ОК</status>
<userinfo>
<username>Nick</username>
<avatar>1202566935_12345.jpg</avatar>
<fullname>Никола Павлов</fullname>
<website>http://nickpavlov.net</website>
<tags>пловдив, edno23, bgdev, web, php, javascript, тениски, бира, clixpy</tags>
<city>Пловдив</city>
<age>21</age>
<gender>m</gender>
<about>жик-так</about>
</userinfo>
</edno23> -
Как да вземем съобщенията от приятелите на даден потребител:
Това са постовете, които можете да видите в edno23 в таба “С приятели”. Само че API-то връща само последните 50 поста. Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=following_posts
Информацията се връща в следния вид:<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ОК</status>
<posts>
<post>
<url>http://nick.edno23.com/view/post:225218</url>
<user_from>Nick</user_from>
<user_to></user_to>
<message>Тук е съдържанието на поста</message>
<attached_link>Ако има прикачен линк, той е тук</attached_link>
<attached_image>Ако има прикачена картинка, тук е адреса й</attached_image>
<attached_video>Ако има видео, линкът е към сайта-източник</attached_video>
<user_from_avatar>1202566935_12345.jpg</user_from_avatar>
<user_to_avatar></user_to_avatar>
</post>
<post>
…по същия начин
</post>
<post>
…по същия начин
</post>
….
</posts>
</edno23> -
Как да вземем съобщенията, съдържащи @еди-кой-си:
Това са постовете, които можете да видите в edno23 в таба “@Моят-никнейм”. Само че API-то връща само последните 50 поста. Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=posts_mention_me
Информацията се връща по същия начин, както в по-горния пример. -
Как да вземем всички директни съобщения, които даден потребител е изпратил:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=direct_posts_from_me
Тук първо се изисква http автентикация – трябва да се прати същото потребителско име и паролата му. След това информацията се връща по същия начин, както в по-горния пример, само че таговете user_from и user_to съдържат съответно изпращача и получателя на съобщението. -
Как да вземем всички директни съобщения, които даден потребител е получил:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/get.php?username=Nick&type=direct_posts_to_me
Тук първо се изисква http автентикация – трябва да се прати същото потребителско име и паролата му. След това информацията се връща по същия начин, както в по-горния пример, само че таговете user_from и user_to съдържат съответно изпращача и получателя на съобщението.
Част 2: Публикуване на съобщения
За публикуване на съобщения е нужно приложението ви да се регистрира в системата на edno23, което може да стане като ми пишете на nikola.pavlov@gmail.com (по-нататък процесът най-вероятно ще бъде автоматизиран). Ще получите две неща – api id и api password. Когато извиквате апито и му пращате съобщение, трябва тези две неща да бъдат постнати заедно с останалата информация, както е посочено по-долу. Освен това се изисква базова http автентикация – трябва да се изпрати потребителското име и паролата на потребителя, от чийто акаунт се поства.
Съобщенията са два вида – публични и лични (директни). Вероятно от edno23 знаете каква е разликата между двете. Що се отнася до интерфейса за постване, единствената разлика е, че при лично съобщение трябва да се посочи никнейма на получателя.
И така, за да постнете нещо през апито, трябва да изпратите следните неща с POST-метод към адрес
http://edno23.com/api/xml/post.php:
- api_id и api_pass – по-горе е обяснено как да ги получите;
- message – Текст на съобщението (до 160 символа); Ако текстът е празен, ще бъде върната грешка.
- attached_link – Ако желаете да прикачите линк, трябва да е тук. Ако линкът не е валиден, ще бъде върната грешка;
- attached_image – Ако желаете да прикачите картинка, адресът й трябва да е тук. Ако картинката не може да бъде качена, ще бъде върната грешка;
- attached_video – Ако желаете да прикачите видео (embed от видео-сайт), тук трябва да е адресът или ембед-кодът. Ако видеото не може да бъде прочетено или е от сайт, който системата не поддържа, ще бъде върната грешка. За момента поддържаните видео-сайтове са: youtube.com, metacafe.com, myspace.com, vimeo.com, revver.com, vbox7.com, dtrailer.com и др. Важно: към един пост не могат да се прикачат едновременно картинка и видео;
Ако всичко е наред по входните данни, както и по автентикацията, съобщението ще бъде публикувано и ще бъде върнат следният XML:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ОК</status>
<url>ако съобщението е публично, тук ще е линкът към него</url>
</edno23>
При възникване на грешка съобщението се връща както в най-горния пример за грешка.
Част 3: Проследяване на потребители
Първо се изисква базова http автентикация – трябва да подадете потребителското име и паролата на потребителя, чийто акаунт ще използвате. След това:
-
Как да започнем да следим някого:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/follow.php?username=Nick&state=1
Връща се следното съобщение:<?xml version=”1.0″ encoding=”UTF-8″ ?>
<edno23>
<status>ОК</status>
</edno23> -
Как да спрем да следим някого:
Изпращаме GET заявка по следния начин:
http://edno23.com/api/xml/follow.php?username=Nick&state=0
Връща се съобщение както по-горе.
Част 4: Проверка на потребител и парола
На това нещо целта му е примерно ако желаете в даден сайт да използвате акаунтите от edno23. Към адрес http://edno23.com/api/xml/usercheck.php трява с POST да подадете параметри username и password и скриптът ще ви отговори дали има такъв акаунт с тази парола
Ако няма такъв акаунт или е сбъркана паролата, апито връща стандартно съобщение за грешка като показаните по-горе. Възможно е да получите и грешка “Flood Restriction” – ако се получат повечко заявки за един и същ потребител в кратък интервал от време. Ако всичко е наред, получавате xml резултат със status OK и таг userinfo, който съдържа данните за потребителя по същия начин, както по-горе в get.php.
Ами това е в общи линии
Предстои да се правят разни нови неща, ако има нещо, пишете ми






Entries (RSS)
April 30th, 2009 at 18:42
Cool…много добър пост, евала
May 1st, 2009 at 11:41
Мда, определено ще се ползва
Става ли, да кажем, че вече съм ти писал писмо и съм си заявил api id и api password, имаш ми мейла
May 1st, 2009 at 18:34
Днес се регнах изобщо в 123 и ми беше крайно интересно защо паролата е в plain text… Добре, че не използвам важни пасове за такива системи.
May 1st, 2009 at 18:56
Видях публикацията в блога ти. Доста е тъпо от твоя страна да си правиш такива изводи, че и да плюеш публично, без да си сигурен. Паролите се хешират, мога да ти докажа ако настояваш. Просто преди да се запише в базата се праща по мейл, какво толкова странно и необичайно виждаш в това ?
May 1st, 2009 at 19:03
В блогпоста не съм писал, че се записва в базата в чист вид – точно предвид възможността да се записва чисто чак след това. Но не смятам за правилен подход да се праща и по мейл – затова съществуват и input password полетата със звездички, за да не се вижда от някой край теб. Ако влезеш в пощата и случайно си отвориш мейла, на всички ще бъде ясно за какво иде реч.
П.С. Имам абсолютно неутрално мнение към системата и добро впечатление от теб конкретно – затова просто информирам за това, което съм видял, и давам съвет тук.
May 1st, 2009 at 19:06
Благодаря за отговора и съвета. В моите очи това да се праща парола по мейл не е проблем, то си е практика (макар най-чесно да се ползва при забравена парола за генериране и пращане на рандомска нова).
May 1st, 2009 at 19:10
Давам ти пример: в кафенето на университета съм, пия си кафето и се регистрирам. Около мен – народ, проверявам си пощата и отварям съобщението за регистрация. Предполагам, че вътре има tips and tricks или някакви други неща за системата, освен благодарственото писмо, че съм се регнал. Затова и не очаквам да има парола вътре
Отново no offence, но да си видиш така паролата може конкретно да бъде опасно. Подобно на идиотщината (IMHO) на cPanel с добавяне на потребител и база от данни, описани в блога на jeckyll.
May 1st, 2009 at 19:17
То тогава трябва идентификацията да става по пръстов отпечатък, някой може да ти наднича какво пишеш въпреки звездичките, ако ще разписваме възможните казуси
Разбирам какво имаш предвид де, просто се учудвам, че такова нещо, което се ползва на толкова места, ти прави впечатление. Въпросът е интересен, може би си заслужава да се пусне отделна дискусия по темата. Peace
May 1st, 2009 at 19:19
Част от работата ми е свързана със security одит, може да е професионално изкривяване. Мир да има.
May 1st, 2009 at 19:19
Offtopic: Впрочем, миналата седмица в Брюксел разбихме един фингърпринт, така че и това не е вариант
May 1st, 2009 at 20:22
Преди време платих $80 на един сайт за една услуга (теми за Wordpress). Изпратиха ми паролата в plain text. Без да се замисля, отидох и отмених регистрацията и им писах защо я отменям.
May 4th, 2009 at 14:44
Ник, поздравления! Много се радвам за API-то на edno23.com
Остава някой да напише и GUI клиент!
Пожелавам ви да задминете и **twitter** по функционалност!
May 5th, 2009 at 09:08
@Karaman
GUI е най-лесното, ако има сносно API. Аз обаче не мога да разбера идеята “1. Функционалността на API-то е и ще бъде ограничена. Ако всичко може да се прави през API-то, тогава самият сайт като сайт ще бъде излишен, което не е целта на занятието”. Edno23.com сайт ли е, услуга ли е ?
May 6th, 2009 at 07:32
Nick, Марио е прав…
Има редици причини (от гледна точка security) пароли да _не_ се изпращат по мейл. (чак сега забелязвам, че и вие изпращате по този начин)
Мога да изредя много такива, но (както винаги) някой ще ме нарече и мен параноичен.
Както ти сам спомена, изпращат се основно временни пароли, такива които нямат нищо общо с потребителските (non-temporary) такива.
Както и да е (не че не е важно…но имам друг въпрос).. обмисляте ли да пуснете API за user search-a. Конкретно ме интересува търсене по ключови думи
Също ми е интересно “get.php” API-то има ли лимит, защото ми хрумна супер яка идея за приложение, но трябва да знам как да конфигурирам cраwl-a
May 6th, 2009 at 17:26
Много браво!
May 7th, 2009 at 00:39
Тъпо. Не разбирам какъв е проблема да се праща парола на мейла. В ранните (ако не се лъжа) версии на phpBB се пазеше в plain text. Мене не ми е ясно и друго — защо псевдо разбирачите постоянно говорят за md5…сякаш има само md5. Явно толкова и разбират, що изобщо не се сещат, че обикновено повечето приложения “насоляват” md5. Не, че това би спряло някой да открадне всички пароли ако си го навие. Изобщо…няма смисъл да задълбавате в такива неща. Ако някой си забрави някъде паролата — пращат му нова, която на мейла идва в plain text, а в базата си се записва И насолена. Ех, от колко време ми се върти в главата една статия именно за паролите…
Ник, няма смисъл да се занимаваш и да обясняваш.
Поздрави, Краси.
May 13th, 2009 at 03:51
Скоро ще има ли опция за follow/unfollow към write API-то ?
May 20th, 2009 at 23:28
Айде – нов uP123 вече с follow/unfollow
July 1st, 2009 at 12:05
Добавих още едно нещо към API-то – точка 4.
July 7th, 2009 at 22:08
Мерси относно проверката на потреб. име и парола