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 CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 4
2
+ :patch: 5
3
3
  :major: 0
4
4
  :minor: 1
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.default_options[:env] = :production
14
+ Sinatra::Application.set :env, :production
15
15
  Twinkies::Server.new(config).run
16
16
  end
17
17
 
data/lib/twinkies.rb CHANGED
@@ -3,6 +3,8 @@ require 'dm-core'
3
3
  require 'twitter'
4
4
  require 'ext/date_time'
5
5
  require 'guid'
6
+ require 'builder'
6
7
  require 'twinkies/friend_searcher'
7
8
  require 'twinkies/url_list'
8
9
  require 'twinkies/item'
10
+ require 'twinkies/rss_writer'
@@ -6,8 +6,14 @@ module Twinkies
6
6
  end
7
7
 
8
8
  def search(term)
9
- Twitter::Base.new(@username, @password).timeline.select do |tweet|
10
- tweet.text.include?('http')
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
- create :link => item[:url], :tweet => item[:item]
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
@@ -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 # builder must instance_eval?
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
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