Sha256: 1355d0ceb75310f7c8d963dea5fbff7798c283ed8832c8aaa5595aa450c9af77

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

require 'sinatra'

module Twinkies
  class Server
    def initialize(config)
      @tweet_db = config.tweet_db
      @username = config.username
      @password = config.password
    end

    def run
      setup_db
      start_tweet_refresher
      handle_request
    end

    def setup_db
      DataMapper.setup(:default, "sqlite3://#{@tweet_db}")
      DataMapper.auto_upgrade!
    end

    def start_tweet_refresher
      Thread.abort_on_exception = true
      Thread.new do
        loop do
          puts "refreshing tweets..."
          Item.refresh @username, @password
          sleep 60
        end
      end
    end

    def handle_request
      username = @username # builder must instance_eval?
      get '/feed.xml' do
        builder do |xml|
          xml.instruct!
          xml.rss :version => '2.0' do
            xml.channel do
              xml.title "#{username}'s twitter URL feed"
              xml.description "#{username}'s twitter URL feed"
              xml.link "http://twitter.com/#{username}"

              Item.latest.each do |tweet|
                xml.item do
                  xml.title "#{tweet.user} - #{tweet.text}"
                  xml.link tweet.link
                  xml.pubDate tweet.created_at
                  xml.guid tweet.id, :isPermaLink => false
                end
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pat-maddox-twinkies-0.1.0 lib/twinkies/server.rb
pat-maddox-twinkies-0.1.1 lib/twinkies/server.rb