From 17e783b5d159f205f0de59c6c522f5de5b8c9a6e Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 7 Dec 2012 11:42:12 +0100 Subject: working version without proxy --- application.rb | 128 ++++++++++++++++----------------------------------------- 1 file changed, 36 insertions(+), 92 deletions(-) (limited to 'application.rb') diff --git a/application.rb b/application.rb index a3d46c3..68bb8d2 100644 --- a/application.rb +++ b/application.rb @@ -1,70 +1,36 @@ require "./pubchem.rb" require 'rack/session/dalli' +require "rack/cache" module OpenTox class Application < Service set :static, true set :root, File.dirname(__FILE__) also_reload './pubchem.rb' - #enable :sessions - use Rack::Session::Dalli, :cache => Dalli::Client.new @@pug_uri = "http://pubchem.ncbi.nlm.nih.gov/rest/pug/" - helpers do - -=begin - def pubchem_search url - attempts = 0 - result = nil - begin - attempts += 1 - json = RestClient.get url, :timeout => 90000000 - result = JSON.parse json - while result["Waiting"] do - sleep 2 - listkey = result["Waiting"]["ListKey"] - result = pubchem_search File.join(@pug_uri, "compound", "listkey", listkey, "cids", "JSON") - end - rescue - if $!.message =~ /Timeout/i and attempts < 4 - sleep 2 - retry - elsif $!.message =~ /Timeout/i and attempts >= 4 - File.open("timeouts","a+"){|f| f.puts url} - puts url - puts $!.message - elsif $!.message.match /404/ - #not_found_error #TODO - else - puts url - puts $!.message - end - end - end -=end - - def image_uri cid - File.join @@pug_uri, "compound", "cid", cid, "PNG"#?record_type=3d&image_size=small" - end - + before do + #cache_control :public, :max_age => 3600 end before '/cid/:cid/*' do + #cache_control :public, :max_age => 3600 session[:compound] = PubChemCompound.new params[:cid] unless session[:compound] and session[:compound].cid == params[:cid] end get '/?' do + #cache_control :public, :no_cache haml :index end get '/cid/:cid/?' do - session[:compound] = PubChemCompound.new params[:cid] haml :compound end get '/search/?' do - #begin - cids = RestClientWrapper.get(File.join(@@pug_uri,"compound","name",URI.escape(params[:name]),"cids","TXT")).split("\n") + #cache_control :public, :no_cache + begin + cids = RestClient.get(File.join(@@pug_uri,"compound","name",CGI.escape(params[:name]),"cids","TXT")).split("\n") if cids.size == 1 session[:compound] = PubChemCompound.new cids.first haml :compound @@ -72,96 +38,74 @@ module OpenTox @compounds = cids.collect{|cid| PubChemCompound.new cid } haml :select end - #rescue - #haml :not_found - #end + rescue + haml :not_found + end end get '/cid/:cid/targets/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].targets - else - @assays = PubChemCompound.new(params[:cid]).targets - end + @assays = session[:compound].targets haml :targets, :layout => false end get '/cid/:cid/nontargets/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].non_targets - else - @assays = PubChemCompound.new(params[:cid]).non_targets - end + @assays = session[:compound].non_targets haml :targets, :layout => false end get '/cid/:cid/other_active_assays/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].active_assays - session[:compound].targets - else - compound = PubChemCompound.new(params[:cid]) - @assays = compound.active_assays - compound.targets - end + @assays = session[:compound].active_assays - session[:compound].targets haml :assays, :layout => false end get '/cid/:cid/other_inactive_assays/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].inactive_assays - session[:compound].non_targets - else - compound = PubChemCompound.new(params[:cid]) - @assays = compound.inactive_assays - compound.non_targets - end + @assays = session[:compound].inactive_assays - session[:compound].non_targets haml :assays, :layout => false end get '/cid/:cid/predicted_targets/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].predicted_targets - else - @assays = PubChemCompound.new(params[:cid]).predicted_targets - end + @assays = session[:compound].predicted_targets haml :predicted_targets, :layout => false end get '/cid/:cid/predicted_nontargets/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].predicted_non_targets - else - @assays = PubChemCompound.new(params[:cid]).predicted_non_targets - end + @assays = session[:compound].predicted_non_targets haml :predicted_targets, :layout => false end get '/cid/:cid/other_predicted_active_assays/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].predicted_active_assays - session[:compound].predicted_targets - else - compound = PubChemCompound.new(params[:cid]) - @assays = compound.predicted_active_assays - compound.predicted_targets - end + @assays = session[:compound].predicted_active_assays - session[:compound].predicted_targets haml :predicted_assays, :layout => false end get '/cid/:cid/other_predicted_inactive_assays/?' do - if params[:cid] == session[:compound].cid - @assays = session[:compound].predicted_inactive_assays - session[:compound].predicted_non_targets - else - compound = PubChemCompound.new(params[:cid]) - @assays = compound.predicted_inactive_assays - compound.predicted_non_targets - end - haml :assays, :layout => false + @assays = session[:compound].predicted_inactive_assays - session[:compound].predicted_non_targets + haml :predicted_assays, :layout => false end get '/cid/:cid/neighbors/?' do haml :neighbors, :layout => false end - get '/cid/:cid/cosine/:cid2/?' do - session[:compound].cosine(PubChemCompound.new(params[:cid2])).to_s + session[:compound].cosine(PubChemCompound.new(params[:cid2])).round(3).to_s end +=begin + get '/aid/:aid/?' do + puts File.join(@@pug_uri, "assay", "aid", params[:aid].to_s, "description", "JSON") + json = RestClient.get File.join(@@pug_uri, "assay", "aid", params[:aid].to_s, "description", "JSON") + @description = JSON.parse(json)["PC_AssayContainer"][0]["assay"]["descr"] + haml :assay_description, :layout => false + end + + get '/pubchem_proxy/*' do |path| + puts path.inspect + puts "http://pubchem.ncbi.nlm.nih.gov/rest/pug/#{path}" + RestClientWrapper.get "http://pubchem.ncbi.nlm.nih.gov/rest/pug/#{path}" + end +=end + get '/fp/?' do @fp = [] YAML.load_file("false_positives.yaml").each do |pred| -- cgit v1.2.3