pat-maddox-twinkies 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/bin/twinkies +1 -1
- data/lib/twinkies.rb +2 -0
- data/lib/twinkies/friend_searcher.rb +8 -2
- data/lib/twinkies/item.rb +4 -2
- data/lib/twinkies/rss_writer.rb +35 -0
- data/lib/twinkies/server.rb +4 -24
- metadata +12 -2
data/VERSION.yml
CHANGED
data/bin/twinkies
CHANGED
@@ -11,7 +11,7 @@ def run_app(base_dir)
|
|
11
11
|
config.tweet_db = File.expand_path(config.tweet_db)
|
12
12
|
end
|
13
13
|
require 'twinkies/server'
|
14
|
-
Sinatra::Application.
|
14
|
+
Sinatra::Application.set :env, :production
|
15
15
|
Twinkies::Server.new(config).run
|
16
16
|
end
|
17
17
|
|
data/lib/twinkies.rb
CHANGED
@@ -6,8 +6,14 @@ module Twinkies
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def search(term)
|
9
|
-
|
10
|
-
|
9
|
+
begin
|
10
|
+
Twitter::Base.new(@username, @password).timeline.select do |tweet|
|
11
|
+
tweet.text.include?('http')
|
12
|
+
end
|
13
|
+
rescue Twitter::CantConnect => e
|
14
|
+
# twitter's down, who'da thunk?!
|
15
|
+
$stderr.puts e
|
16
|
+
[]
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
data/lib/twinkies/item.rb
CHANGED
@@ -16,7 +16,7 @@ module Twinkies
|
|
16
16
|
self.created_at = tweet.created_at
|
17
17
|
end
|
18
18
|
|
19
|
-
def save
|
19
|
+
def save(context=:default)
|
20
20
|
@existing = Item.first(:twitter_id => twitter_id)
|
21
21
|
if @existing && @existing.link == link
|
22
22
|
self.id = @existing.id
|
@@ -35,7 +35,9 @@ module Twinkies
|
|
35
35
|
|
36
36
|
tweets = FriendSearcher.new(username, password).search('http')
|
37
37
|
UrlList.new(tweets) {|t| t.text}.each do |item|
|
38
|
-
|
38
|
+
new_item = new :link => item[:url], :tweet => item[:item]
|
39
|
+
yield(new_item) if block_given?
|
40
|
+
new_item.save
|
39
41
|
end
|
40
42
|
end
|
41
43
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Twinkies
|
2
|
+
class RssWriter
|
3
|
+
def initialize(username, request_path, items)
|
4
|
+
@username = username
|
5
|
+
@request_path = request_path
|
6
|
+
@items = items
|
7
|
+
end
|
8
|
+
|
9
|
+
def rss
|
10
|
+
username = @username
|
11
|
+
request_path = @request_path
|
12
|
+
items = @items
|
13
|
+
|
14
|
+
xml = Builder::XmlMarkup.new :indent => 2
|
15
|
+
xml.instruct!
|
16
|
+
xml.rss :version => '2.0', "xmlns:atom" => "http://www.w3.org/2005/Atom" do
|
17
|
+
xml.channel do
|
18
|
+
xml.title "#{username}'s twitter URL feed"
|
19
|
+
xml.description "#{username}'s twitter URL feed"
|
20
|
+
xml.link "http://twitter.com/#{username}"
|
21
|
+
xml.tag! "atom:link", :rel => "self", :href => request_path
|
22
|
+
|
23
|
+
@items.each do |tweet|
|
24
|
+
xml.item do
|
25
|
+
xml.title "#{tweet.user} - #{tweet.text}"
|
26
|
+
xml.link tweet.link
|
27
|
+
xml.pubDate tweet.created_at.rfc822
|
28
|
+
xml.guid tweet.guid, :isPermaLink => false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/twinkies/server.rb
CHANGED
@@ -12,6 +12,7 @@ module Twinkies
|
|
12
12
|
setup_db
|
13
13
|
start_tweet_refresher
|
14
14
|
handle_request
|
15
|
+
Sinatra::Base.run!
|
15
16
|
end
|
16
17
|
|
17
18
|
def setup_db
|
@@ -31,34 +32,13 @@ module Twinkies
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def handle_request
|
34
|
-
username = @username #
|
35
|
-
|
36
|
-
get '/feed.xml' do
|
35
|
+
username = @username # instance_eval..
|
36
|
+
Sinatra::Base.get '/feed.xml' do
|
37
37
|
pieces = ['http://', request.env['SERVER_NAME']]
|
38
38
|
pieces << ":#{request.env['SERVER_PORT']}" unless request.env['SERVER_PORT'].to_i == 80
|
39
39
|
pieces << request.env['REQUEST_PATH']
|
40
40
|
request_path = pieces.join
|
41
|
-
|
42
|
-
builder do |xml|
|
43
|
-
xml.instruct!
|
44
|
-
xml.rss :version => '2.0', "xmlns:atom" => "http://www.w3.org/2005/Atom" do
|
45
|
-
xml.channel do
|
46
|
-
xml.title "#{username}'s twitter URL feed"
|
47
|
-
xml.description "#{username}'s twitter URL feed"
|
48
|
-
xml.link "http://twitter.com/#{username}"
|
49
|
-
xml.tag! "atom:link", :rel => "self", :href => request_path
|
50
|
-
|
51
|
-
Item.latest.each do |tweet|
|
52
|
-
xml.item do
|
53
|
-
xml.title "#{tweet.user} - #{tweet.text}"
|
54
|
-
xml.link tweet.link
|
55
|
-
xml.pubDate tweet.created_at.rfc822
|
56
|
-
xml.guid tweet.guid, :isPermaLink => false
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
41
|
+
RssWriter.new(username, request_path, Item.latest).rss
|
62
42
|
end
|
63
43
|
end
|
64
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pat-maddox-twinkies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Maddox
|
@@ -13,7 +13,7 @@ date: 2009-01-09 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name: sinatra
|
16
|
+
name: bmizerany-sinatra
|
17
17
|
version_requirement:
|
18
18
|
version_requirements: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
@@ -48,6 +48,15 @@ dependencies:
|
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: "0"
|
50
50
|
version:
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: twitter
|
53
|
+
version_requirement:
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
version:
|
51
60
|
description: TODO
|
52
61
|
email: pat.maddox@gmail.com
|
53
62
|
executables:
|
@@ -66,6 +75,7 @@ files:
|
|
66
75
|
- lib/twinkies/friend_searcher.rb
|
67
76
|
- lib/twinkies/server.rb
|
68
77
|
- lib/twinkies/url_list.rb
|
78
|
+
- lib/twinkies/rss_writer.rb
|
69
79
|
- lib/twinkies/item.rb
|
70
80
|
- spec/spec_helper.rb
|
71
81
|
- spec/url_list_spec.rb
|