Взаимодействие Catalyst-приложения с внешним API. Пример 1

В дальнейшем хотелось бы найти время и рассмотреть несколько примеров взаимодействия Catalyst-приложения с внешними API. Например, API социальных сетей и авторизация с помощью OAuth (особенно заинтересовал Twitter), API платежных систем, API для совершения покупок он-лайн. Ниже — самый простой, односторонний, пример взаимодействия с внешней системой (строго говоря, это даже назвать API нельзя).

Приведенный код строится на ранее созданной основе: http://dev-lab.info/2013/11/как-создать-catalyst-приложение-с-нуля

Задача:

Имеется интернет-магазин. В специальной директории, на сайте магазина, хранится несколько файлов с упорядоченной информацией для партнеров магазина. Все данные — в xml-формате. Списки городов, в которых осуществляет деятельность магазин, списки магазинов, списки товаров и т.п. Требуется просто организовать доступ к данным из Catalyst-приложения.

Решение:

Создаем модуль NorthMarket.pm, который скачивает файлы, делает базовый парсинг данных. Создаем модуль Manage.pm, который получает данные с помощью NorthMarket.pm и оперирует ими по собственному усмотрению.

В данном случае, данные запрашиваются при обращении к странице http://localhost:3000/manage . В дальнейшем, конечно же, можно организовать более интеллектуальный интерфейс — данные будут запрашиваться по нажатию кнопки, или можно вынести запрос в отдельный скрипт, который запускается по cron и сохраняет все полученные данные в БД, или в виде файла. Но в указанном примере, я просто запрашиваю данные и вывожу на страничке список городов.

 

/app/lib/Net/Source/NorthMarket.pm :

 

/app/lib/app/Controller/Manage.pm :

 

/app/root/src/manage.tt :

 

Пример xml-файла для вышеприведенного кода :