#!/usr/bin/env ruby
require 'rubygems'
require 'open-uri'
require "fcgi"

def filesize(url)
  url = URI.parse(url)
  Net::HTTP.start(url.host, url.port) do |http|
    return http.head(url.request_uri).content_length
  end
end

FCGI.each_cgi do |cgi|
  cgi['bigger'].match(/^(.*?)\/(.*?)\/(.*?)\.html/)
  from = Regexp::last_match[1]
  to = Regexp::last_match[2]
  page = Regexp::last_match[3]
  tos = to.split(',')
  File.open("log",File::APPEND|File::WRONLY|File::CREAT) {|f|f.write "#{from}/#{tos.join(':')} - #{page}\n"}
  doc = open("http://#{from}.wikipedia.org/wiki/#{page}")
  webtext = doc.read
  p2check = []
  tos.each do |lang|
    if webtext.match(/\"interwiki-#{lang}\"\>\<a href=\"(.*?)\">/)
      
      p2check << {:size => filesize(Regexp::last_match[1]), :url => Regexp::last_match[1]}
    end
  end
  if p2check.size > 0
    biggest = 0
    url=''
    p2check.each do |item| 
      if item[:size] > biggest 
        url = item[:url] 
        biggest = item[:size]
      end
    end
    puts cgi.header( { 'Status' => '302 Moved', 'location' => url } )
    File.open("log",File::APPEND|File::WRONLY|File::CREAT) {|f|f.write "#{url}\n"}
  else
    File.open("log",File::APPEND|File::WRONLY|File::CREAT) {|f|f.write "#{url}\n"}
    puts cgi.header( { 'Status' => '302 Moved', 'location' => "http://#{from}.wikipedia.org/wiki/#{page}" } )
  end
end

