From 76948b1a6ac9f48edb783c8cb1126dbeed3df4b4 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Tue, 25 Aug 2009 20:52:16 +0200 Subject: modified smiles escaping, uid supported --- Rakefile | 4 +++- application.rb | 8 +++++--- config.ru | 10 ++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Rakefile b/Rakefile index 6ba8585..e8ed9f4 100644 --- a/Rakefile +++ b/Rakefile @@ -1,10 +1,12 @@ require 'rubygems' require 'rake' +@gems = "sinatra rest-client emk-sinatra-url-for cehoffman-sinatra-respond_to" + desc "Install required gems and openbabel" task :install do puts `sudo gem sources -a http://gems.github.com` - puts `sudo gem install sinatra rest-client emk-sinatra-url-for cehoffman-sinatra-respond_to` + puts `sudo gem install #{@gems}` begin require 'openbabel' puts "Openbabel is already installed" diff --git a/application.rb b/application.rb index 1ff8e16..7920b92 100644 --- a/application.rb +++ b/application.rb @@ -2,6 +2,7 @@ require lib end +mime :uid, "text/plain" mime :smiles, "chemical/x-daylight-smiles" mime :inchi, "chemical/x-inchi" mime :sdf, "chemical/x-mdl-sdfile" @@ -10,6 +11,8 @@ mime :names, "text/plain" CACTUS_URI="http://cactus.nci.nih.gov/chemical/structure/" +set :default_content, :smiles + get '/*/match/*' do smiles = URI.decode(params[:splat][0]) smarts = URI.decode(params[:splat][1]) @@ -29,8 +32,7 @@ end get %r{/(.+)} do |cansmi| # catches all remaining get requests respond_to do |format| - format.html { URI.unescape(cansmi).chomp } - format.text { URI.unescape(cansmi).chomp } + format.uid { URI.escape(cansmi, /[^#{URI::PATTERN::UNRESERVED}]/) } format.smiles { URI.unescape(cansmi).chomp } format.names { RestClient.get "#{CACTUS_URI}#{cansmi}/names" } format.inchi { RestClient.get "#{CACTUS_URI}#{cansmi}/stdinchi" } @@ -45,7 +47,7 @@ post '/?' do elsif params[:name] cansmi = RestClient.get "#{CACTUS_URI}#{params[:name]}/smiles" end - url_for("/", :full) + URI.escape(cansmi.gsub(/\s+/,''), /[^\w]/) + url_for("/", :full) + URI.escape(cansmi.gsub(/\s+/,''), /[^#{URI::PATTERN::UNRESERVED}]/) end def canonical_smiles(identifier,format) diff --git a/config.ru b/config.ru index 95e58ae..0ca30c5 100644 --- a/config.ru +++ b/config.ru @@ -2,11 +2,9 @@ require 'rubygems' require 'sinatra' require 'application.rb' -if ENV["RACK_ENV"] == 'production' - FileUtils.mkdir_p 'log' unless File.exists?('log') - log = File.new("log/sinatra.log", "a") - $stdout.reopen(log) - $stderr.reopen(log) -end +FileUtils.mkdir_p 'log' unless File.exists?('log') +log = File.new("log/sinatra.log", "a") +$stdout.reopen(log) +$stderr.reopen(log) run Sinatra::Application -- cgit v1.2.3