#! /usr/bin/env ruby require 'twitter' require 'yaml' require 'net/http' require 'uri' #Specify and load config CONFIG_FILE = 'config.yaml' $config = YAML::load(File.open(File.join(File.dirname(__FILE__), CONFIG_FILE))) # Configure and create the twitter client Twitter.configure do |config| config.consumer_key = $config['oauth']['consumer_key'] config.consumer_secret = $config['oauth']['consumer_secret'] config.oauth_token = $config['oauth']['request_token'] config.oauth_token_secret = $config['oauth']['request_secret'] end client = Twitter::Client.new # Read last known status from cache last_status = $config['worker']['last_status'].to_s # Get current status from web url = URI.parse('http://www.chaostreff-dortmund.de/') res = Net::HTTP.start(url.host, url.port) {|http| http.get('/raumstatus.php?txt') } $current_status = res.body.to_s.strip # If status differs from last time checked, put the announcement if (last_status != $current_status) if ($current_status == "offline") tweet = "Der Raum ist jetzt OFFEN. #ctdo" status = "offline" elsif ($current_status == "online") tweet = "Der Raum ist jetzt GESCHLOSSEN. #ctdo." status = "online" else tweet = "Raumstatus UNBEKANNT." status = "unknown" end $config['worker']['last_status'] = status File.open(CONFIG_FILE, 'w') { |f| YAML.dump($config, f) } client.update(tweet, {:lat => "51.527611", :lon => "7.464944", :display_coordinates => "true"}) end