уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Думаю, что те кто пользуются твитером прекрасно знают, что представляет из себя сервис 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, то реализовал и его.

Скачать исходник: Исходники —> API онлайн-сервисов —> Прочие API
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
3 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Avgustin
Avgustin
24/05/2010 19:32

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

Avgustin
Avgustin
06/06/2010 00:22

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

вина всему из-за следующего кода
[code]Result:=StringReplace(Result,'?','/?',[rfReplaceAll,rfIgnoreCase]);[/code]
но легко исправил просто поставив потом.
[code]Result:=StringReplace(Result,'php/?','php?',[rfReplaceAll,rfIgnoreCase]);[/code]

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