Pubsubhubbub на Rails. Как извлечь необработанное содержимое тела POST из запроса POST? - PullRequest
10 голосов
/ 09 марта 2010

У меня проблемы с настройкой приложения подписчика с поддержкой pubsub с использованием rails. В настоящее время я подписался на open hub 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 и приложение / rss + xml для RSS каналы. В зависимости от вашего программирования язык по выбору, вам нужно выяснить, как извлечь сырой пост содержание тела. Например, в PHP вы бы открыли специальное имя файла php: // ввод для чтения.

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

1 Ответ

6 голосов
/ 25 июня 2012

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

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

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

...