Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал Vlad 27 апреля 2010 в 19:31.
Категории: Delphi в Web.


Думаю, что те кто пользуются твитером прекрасно знают, что представляет из себя сервис bit.ly и для чего он используется. Ну, а для тех, кто не знает, скажу, что сервис bit.ly - это сервис сокращения ссылок. Несмотря на то, что в Сети навалом всякого рода сокращалок, в том числе и дающих пользователям заработать копеечку на ссылках, bit.ly отличает одно замечательное свойство. Помимо простого сжатия ссылок этот сервис также позволяет получать полную статистику по сжатым ссылкам. Кроме простого количества кликов по Вашей ссылке Вы можете посмотреть, например, сколько ретвитов получило сообщение со ссылкой в twitter, есть и другие "фишки" сервиса, в том числе и API.


API bit.ly поддерживает три формата для выходных данных: json (по умолчанию), xml и txt. Поэтому и модуль Delphi для работы с API возвращает только результаты запроса в виде строки, а не проводит анализ ответа. Дело в том, что кому-то удобнее работать с форматом JSON и использовать в работе библиотеки типа SuperObject, а мне удобней анализировать XML или вообще может потребоваться получить результат в TXT. Поэтому я не стал заморачиваться над анализом возвращенных данных, а лишь реализовал отправку правильно сформированного запроса и получение ответа.

Для работы с http-протоколом используется Synapse, однако Вы можете переписать всего один метод GETQuery, чтобы отправлять GET-запросы хоть через Indy, хоть через WinInet.

Модуль содержит класс TBitly, который, в свою очередь, содержит следующие свойства и методы:

Свойство Login : string - логин пользователя в сервисе bit.ly

Свойство APIKey : string - ключ API который выдается Вам при регистрации в сервисе.

Методы:

function Shorten(const LongURL:string; Domain:TBitlyDomains;OutputFormat:TBitlyFormat=xml):string;

Используется для сокращения длинной ссылки.

LongURL - ссылка, которую необходимо сократить;

Domain - домен, который будет использован в адресе укороченной ссылки. Этот параметр может принимать два значения: tdBit - в этом случае короткая ссылка будет выглядеть как http://bit.ly/xxxx или tdJmp - ссылка будет выглядеть как http://j.mp/xxxx;

OutputFormat - здесь и далее означает в каком формате будут возвращаться данные. Может принимать три значения: xml,json и txt;

function Validate(const Login, APIKey: string; OutputFormat:TBitlyFormat=xml):string;

Проверка правильности Login и APIKey.

function Expand(const URLs,Hashes:TStringList;OutputFormat:TBitlyFormat=xml):string;

Функция обратная функции Shorten - разворачивает короткие ссылки до первоначального вида.

URLs - список коротких ссылок для "разворачивания"

Hashes - список хэшей ссылок для разворачивания. Хэш ссылки - это строка после / в URL.

function Clicks(const URLs,Hashes:TStringList;OutputFormat:TBitlyFormat=xml):string;

Возвращает информацию по количеству кликов на ссылке. Параметры аналогичны параметрам в методе Expand

function BitlyProDomain(const domain:string;OutputFormat:TBitlyFormat=xml):string;

Проверка домена на принадлежность его к bit.pro. Честно говоря, не до конца уловил где можно использовать этот метод, но т.к. он присутствует в API, то реализовал и его.

Полную информацию по составу возвращаемых от сервера документов Вы можете получить на официальном проекте bitly-api в Google Code.
А вот и сам модуль: zip BitlyAPI.pas(1.63 KB)

-----------------------
В последнее время начал замечать в твитере всё большее количество русских сервисов сокращения ссылок. Если вы тоже решили создать свой сервис наподобие bit.ly, то могу вам посоветовать хостинг от cishost.ru - дешевый хостинг для небольших проектов.
-----------------------
Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (3)

WP_Cloudy
  • Avgustin пишет:

    Отличная библиотека!
    проверил)
    минус в том что логин должен быть записан в нижнем регистре иначе никак.
    но это уже мелочи жизни))

  • Vlad пишет:

    Есть ошибки — значит есть куда двигаться дальше :)

  • Avgustin пишет:

    тут вот еще столкнулся с такой штукой.
    есть ссылка
    http://forums.goha.ru/showthread.php?t=432458
    и она переводиться в следующую
    http://forums.goha.ru/showthread.php/?t=432458
    из-за чего страница выглядит побитой.

    вина всему из-за следующего кода

    Result:=StringReplace(Result,'?','/?',[rfReplaceAll,rfIgnoreCase]);

    но легко исправил просто поставив потом.

    Result:=StringReplace(Result,'php/?','php?',[rfReplaceAll,rfIgnoreCase]);

    а так библиотека всеравно очень хорошая.

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник