Статьи

Представляем Bitly Cloud Connector для Mule

За последние несколько лет в сети наблюдается рост числа услуг по сокращению URL-адресов. Большая часть этого роста обусловлена ​​популярностью микроблогов и социальных сетей, таких как Twitter. И с этим ростом возникает потребность разработчиков создавать свои собственные приложения, чтобы воспользоваться этими услугами.

Bitly — одна из самых популярных услуг сокращения — http://bitly.com/ . С января 2011 года Bitly видел почти 100 миллиардов кликов по ссылкам с мощным битом. И как любой хороший сервис, у них есть API. API не только обеспечивает сокращение и расширение URL-адресов, но также предоставляет статистику для ваших ссылок, а также ряд API данных в реальном времени, которые позволяют вам искать конкретные ключевые слова и фильтровать по теме, социальной сети, местоположению, домену и языку, чтобы возвращать связанные контент в настоящее время получает наибольшее внимание в Интернете.

Bitly теперь предоставляют версию 3 своих API. И любой, кто работает с ними, будет знать, что у них есть свои отличительные черты, особенно коды ошибок! Поэтому я рад объявить Mule Cloud Connector для API-интерфейсов Bitly.

Начало работы с Bitly Cloud Connector

Аутентификация

Соединитель поддерживает два механизма аутентификации: базовая аутентификация (OAuth — поток клиентских учетных данных) и OAuth (веб-поток). Bitly устарела аутентификация API-ключа и не была включена как часть этого соединителя.

Пример Basic Auth

Простой пример сокращения длинного URL с помощью обычной аутентификации:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:bitly="http://www.mulesoft.org/schema/mule/bitly"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/bitly http://www.mulesoft.org/schema/mule/bitly/1.0-SNAPSHOT/mule-bitly.xsd">
 
<bitly:config name="bitly" username="${bitly.username}" password="${bitly.password}" doc:name="Bitly (Basic Auth)"/>
 
<flow name="shorten" doc:name="shorten">
<bitly:shorten username="${bitly.username}" password="${bitly.username}" longUrl="http://shop.oreilly.com/product/0636920025726.do"
config-ref="bitly" doc:name="Bitly" />
</flow>
 
</mule>

Базовый Auth — Multi-Tennant

Соединитель поддерживает управление подключениями и позволяет пользователю указывать учетные данные на уровне операций, чтобы обеспечить многопользовательский режим. Вот простой пример сокращения длинного URL с помощью базовой аутентификации на уровне операций:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:bitly="http://www.mulesoft.org/schema/mule/bitly"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/bitly http://www.mulesoft.org/schema/mule/bitly/1.0-SNAPSHOT/mule-bitly.xsd">
 
<bitly:config name="bitly" doc:name="Bitly (Basic Auth)"/>
 
<flow name="shorten" doc:name="shorten">
<bitly:shorten username="${bitly.username}" password="${bitly.username}" longUrl="http://shop.oreilly.com/product/0636920025726.do"
config-ref="bitly" doc:name="Bitly" />
</flow>
 
</mule>

OAuth

Простой пример сокращения длинного URL с помощью OAuth:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:bitly="http://www.mulesoft.org/schema/mule/bitly"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/bitly http://www.mulesoft.org/schema/mule/bitly/1.0-SNAPSHOT/mule-bitly.xsd">
 
<bitly:config-with-oauth name="bitlyOAuth" apiKey="${bitly.apiKey}" apiSecret="{bitly.apiSecret}" doc:name="Bitly (OAuth)">
<bitly:oauth-callback-config domain="localhost" localPort="8082" remotePort="8082" path="callback" />
</bitly:config-with-oauth>
 
<flow name="shortenWithOAuth" doc:name="shortenWithOAuth">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="8081" path="authorize" doc:name="HTTP" />
 
<bitly:authorize config-ref="bitlyOAuth" doc:name="Bitly" />
 
<bitly:shorten longUrl="http://shop.oreilly.com/product/0636920025726.do"
config-ref="bitlyOAuth" doc:name="Bitly" />
</flow>
 
</mule>

Форматы данных

Как и во всех облачных коннекторах, форматы запросов абстрагируются в простые в использовании атрибуты, вложенные элементы и т. Д. Их можно найти в документации по коннекторам — http://ryandcarter.github.com/bitly-connector/mule/modules.html.

Форматы ответов предоставляются в виде необработанных ответов JSON от Bitly API, которые можно найти в документации по Bitly API — http://dev.bitly.com/api.html . Это можно легко изменить в Mule, используя предоставленные JSON-преобразователи и привязки данных.

Вот простой пример создания URI для существующего изображения в Amazon S3 с использованием соединителя S3, сокращения URI с помощью соединителя Bitly и публикации в Twitter с помощью соединителя Twitter.

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:twitter="http://www.mulesoft.org/schema/mule/twitter"
xmlns:s3="http://www.mulesoft.org/schema/mule/s3"
xmlns:bitly="http://www.mulesoft.org/schema/mule/bitly"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/twitter http://www.mulesoft.org/schema/mule/twitter/current/mule-twitter.xsd
http://www.mulesoft.org/schema/mule/s3 http://www.mulesoft.org/schema/mule/s3/current/mule-s3.xsd
http://www.mulesoft.org/schema/mule/bitly http://www.mulesoft.org/schema/mule/bitly/1.0-SNAPSHOT/mule-bitly.xsd">
 
<twitter:config name="twitter" consumerKey="${twitter.consumer.key}"
consumerSecret="${twitter.consumer.secret}" accessKey="${twitter.access.key}"
accessSecret="${twitter.access.secret}" />
 
<s3:config name="s3" accessKey="${s3.accessKey}" secretKey="${s3.secretKey}" />
<bitly:config name="bitly" username="${bitly.username}" password="${bitly.password}" doc:name="Bitly (Basic Auth)"/>
 
<flow name="shorten" doc:name="shorten">
<s3:create-object-uri bucketName="my-bucket" key="logo.jpg" config-ref="s3"/>
<bitly:shorten username="${bitly.username}" password="${bitly.username}" longUrl="#[payload]"
config-ref="bitly" doc:name="Bitly" />
<twitter:update-status status="New image: #[payload['data']['url']]"
config-ref="twitter" />
</flow>
 
</mule>

В этом примере мы просто конвертируем ответ JSON Bitly в HashMap, используя преобразователь json-to-objec, и используем упрощенный синтаксис MEL (Mule Expression Language) для доступа к свойству «url» из карты и публикации в Twitter.

Дайте мне код!

Разъем можно найти на Github по адресу: https://github.com/ryandcarter/bitly-connector . Это только в бета-версии на данный момент; поэтому, если у вас есть какие-либо проблемы, пожалуйста, сообщите о них на Github.

Идти дальше

Как вы видите, объединение нескольких API-интерфейсов — это игра childs с Mule Cloud Connect, и с этим Cloud Connector вы можете сделать гораздо больше вещей; Поместите коннекторы S3, Twitter и Bitly Cloud, чтобы публиковать укороченные изображения в Twitter из корзины S3, или, может быть, склеите коннекторы Github и Bitly Cloud, чтобы создать сокращенные общие ресурсы. Если у вас есть интересные примеры или улучшения, просто отправьте запрос на получение.

И, конечно, если вам нужна дополнительная информация или помощь по Mule Cloud Connect, я могу порекомендовать очень хорошую книгу: http://oreil.ly/mule-cloud ?