require 'sinatra' require 'whois' require 'haml' require 'json' require 'ostruct' before do response['Access-Control-Allow-Origin'] = '*' end helpers do def cache_for_day if settings.environment != :development response['Cache-Control'] = "public, max-age=86400" end end def whois_lookup @lookup_info = Whois.query(params[:url]) @admin_contacts = Hash[@lookup_info.admin_contacts[0].each_pair.to_a] @technical_contacts = Hash[@lookup_info.technical_contacts[0].each_pair.to_a] return { "domain" => @lookup_info.domain, "created_on" => @lookup_info.created_on, "expires_on" => @lookup_info.expires_on, "whois_server" => @lookup_info.referral_whois, "nameservers" => @lookup_info.nameservers, "admin_contacts" => @admin_contacts, "techical_contacts" => @technical_contacts } end end get '/' do cache_for_day haml :index end get '/ip.json' do { :ip => request.ip }.to_json end get '/lookup' do begin cache_for_day @formatted_response = whois_lookup haml :lookup rescue haml :error end end get '/lookup.json' do begin cache_for_day whois_lookup.to_json rescue {"Error" => "Bad Request"}.to_json end end