Skip to content

Commit ac6b1cc

Browse files
committed
Initial commit for the tumblr github hook
1 parent d433d9e commit ac6b1cc

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

services/tumblr.rb

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Service::Tumblr < Service
2+
string :oauth_token, :oauth_secret, :blog_url
3+
4+
def receive_push
5+
return unless payload['commits']
6+
7+
repository = payload['repository']['name']
8+
compare_url = payload['compare']
9+
10+
title = "New commits pushed to #{repository}."
11+
description << "<ul>"
12+
payload['commits'].each do |commit|
13+
description << "<li><a href='#{commit['url']}'>#{commit['message']}</a></li>"
14+
end
15+
description << "</ul>"
16+
17+
post(title, compare_url, description)
18+
19+
end
20+
21+
def post(title, url, description
22+
23+
params = {:type => "link", :title => title, :url => url, :description => description}
24+
access_token = ::OAuth::AccessToken.new(consumer, data['oauth_token'], data['oauth_secret'])
25+
consumer.request(:post, "/v2/#{data['blog_url']}/post"
26+
access_token, { :scheme => :query_string }, params)
27+
end
28+
29+
def consumer_key
30+
secrets['tumblr']['key']
31+
end
32+
33+
def consumer_secret
34+
secrets['tumblr']['secret']
35+
end
36+
37+
def consumer
38+
@consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret,
39+
:site => "http://api.tumblr.com")
40+
end
41+
42+
end

test/tumblr_test.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require File.expand_path('../helper', __FILE__)
2+
3+
class TumblrTest < Service::TestCase
4+
def test_push
5+
svc = service({'token' => 't', 'secret' => 's'}, payload)
6+
7+
def svc.post(title, url, description)
8+
@params = {:title => title, :url => url, :description => description}
9+
end
10+
11+
svc.receive_push
12+
assert_equal 'test', @params['title']
13+
14+
end
15+
16+
def test_oauth_consumer
17+
svc = service({'oauth_token' => 't', 'oauth_secret' => 's'}, payload)
18+
19+
svc.secrets = {'tumblr' => {'key' => 'ck', 'secret' => 'cs'}}
20+
assert_equal 'ck', svc.consumer_key
21+
assert_equal 'cs', svc.consumer_secret
22+
assert svc.consumer
23+
end
24+
25+
def service(*args)
26+
super Service::Tumblr, *args
27+
end
28+
29+
end

0 commit comments

Comments
 (0)