diff --git a/lib/pubsubhubbub.rb b/lib/pubsubhubbub.rb index bb0bcf2a3..2610027cf 100644 --- a/lib/pubsubhubbub.rb +++ b/lib/pubsubhubbub.rb @@ -4,16 +4,14 @@ class PubSubHubbub - H = {"User-Agent" => "PubSubHubbub Ruby", "Content-Type" => "application/x-www-form-urlencoded"} def initialize(hub, options={}) - @headers = H.merge(options[:head]) if options[:head] - @hub = hub.kind_of?(URI) ? hub : URI::parse(hub) - end + @headers = H.merge(options[:head]) if options[:head] + @hub = hub + end - def publish(feed) - RestClient.post @hub, :headers => H, 'hub.url' => feed, 'hub.mode' => 'publish' - end + def publish(feed) + RestClient.post(@hub, :headers => @headers, 'hub.url' => feed, 'hub.mode' => 'publish') + end end - diff --git a/spec/lib/pubsubhubbub_spec.rb b/spec/lib/pubsubhubbub_spec.rb new file mode 100644 index 000000000..fadf9b445 --- /dev/null +++ b/spec/lib/pubsubhubbub_spec.rb @@ -0,0 +1,23 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + +require 'spec_helper' + +describe PubSubHubbub do + describe '#initialize' do + end + + describe '#publish' do + it 'posts the feed to the given hub' do + hub = "http://hubzord.com/" + feed = 'http://rss.com/dom.atom' + body = {'hub.url' => feed, 'hub.mode' => 'publish'} + + stub_request(:post, "http://hubzord.com/"). + with(:body => "hub.url=http%3A%2F%2Frss.com%2Fdom.atom&headers=&hub.mode=publish", + :headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Content-Length'=>'65', 'Content-Type'=>'application/x-www-form-urlencoded'}).to_return(:status => [202, 'you are awesome']) + PubSubHubbub.new(hub).publish(feed).code.should == 202 + end + end +end