require "twitter"
require 'sinatra'
require 'yaml'
require 'json'
require 'date'

class DelayInfoServer < Sinatra::Base
  attr_reader :client
  attr_reader :rosen
  attr_accessor :delay

  def initialize()
    super()
    @config = YAML.load_file('config/server.yaml')
    @client = Twitter::REST::Client.new do |cfg|
      # Twitter APIŎgpNfVݒ肷D
      cfg.consumer_key        = @config['server']['consumer_key']
      cfg.consumer_secret     = @config['server']['consumer_secret']
      cfg.access_token        = @config['server']['access_token']
      cfg.access_token_secret = @config['server']['access_token_secret']
    end
    @delay = Array.new
  end

  get '/' do  # [gfBNg͘H}Weby[WԂD
    File.open('view/index.html') {|f| f.read}
  end

  get '/delayinfo/update' do  # ̃Gh|CgĂ΂ƒxXVD
    @delay.clear
    @config['rosen'].each_pair do |name, code|
      # ݒt@C̘HƂɁuxvƂL[[h邩TwitterD
      @client.search("\##{name} x").take(10).each do |tweet|
        if tweet.text =~ /\##{name}/ and tweet.text =~ /x/
          # uxvƂL[[hC5ȓ̓eł邩`FbND
          now = DateTime.now.to_time
          tweet_time = Date.parse(tweet.created_at.to_s).to_time
          if (now - tweet_time) <= (60 * 5)
            # 5ȓ̓eȂC̘H͒xĂ̂Ɣ肷D
            @delay.push({ "rosen" => name, "code" => code })
          end
        end
      end
      @delay.uniq!
    end
    { delayInfo: @delay }.to_json  # `FbNxJSON`ŕԂD
  end

  get '/delayinfo/list' do  # ̃Gh|Cg͌_ŕێĂxԂD
    { delayInfo: @delay }.to_json
  end
end

DelayInfoServer.run! if $PROGRAM_NAME == __FILE__