Pubsubhubbub on Rails. Как извлечь содержимое исходного POST-содержимого из запроса POST?

У меня возникли проблемы с настройкой абонентского приложения с поддержкой pubsub с использованием рельсов. Я в настоящее время подписался на открытый хаб pubsubhubbub.appspot.com и получаю пинги к моей конечной точке приложения. (на данный момент я создал счетчик, который увеличивается каждый раз, когда конечная точка пингируется). Но я не могу понять, как извлечь содержимое исходного POST-содержимого из POST. Я новичок в pubsub и очень хочу экспериментировать с ним. Я наткнулся на это сообщение в блоге, но это не зависит от языка.


Источник: Джозеф Смарр: Реализация поддержки подписчиков PubSubHubbub: пошаговое руководство. http://josephsmarr.com/2010/03/01/implementing-pubsubhubbub-subscriber-support-a-step-by-step-guide/

Теперь вы готовы к выплата - магическое получение писем от эфир каждый раз, когда блог вы подписанный на новый контент! Вы будете получать входящие запросы на ваш указанный URL обратного вызова без каких-либо добавлены дополнительные параметры запроса (т.е. вы знаете его пинг, а не проверка, потому что не будет любой параметр hub.mode). Вместо этого новые записи подписанный канал будет включен непосредственно в теле POST запрос с запросом Content-Type приложения /atom + xml для каналов ATOM и application/rss + xml для RSS каналы. В зависимости от вашего программирования язык выбора, вам нужно будет выяснить, как извлечь необработанную POST body содержание. Например, в PHP вы откроете специальное имя файла php://для чтения.

Любая помощь будет принята с благодарностью.

Ответ 1

Вы не сказали, но я предполагаю, что вы используете Rails 3.x?

Чтобы получить необработанное тело POST, вы просто используете request.raw_post в своем контроллере. Это даст вам длинную строку, которая выглядит как строка параметров запроса: some_var = something & something_else = something_else..., которую вы можете проанализировать, чтобы получить то, что вы хотите.

Однако посмотрите на журналы разработки для входящего запроса и посмотрите, не является ли параметр hash params лучшим вариантом для вас. Служба должна публиковать данные под некоторым именем переменной, например some_var, и хеш params будет содержать параметры [: some_var], содержащие только эти данные. Вам не нужно выкапывать самостоятельно, другими словами.