diff options
author | Christoph Helma <helma@in-silico.de> | 2009-08-25 20:52:16 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.de> | 2009-08-25 20:52:16 +0200 |
commit | 76948b1a6ac9f48edb783c8cb1126dbeed3df4b4 (patch) | |
tree | 4b5a7307ffcbaa5493777b167eeef40996e90979 | |
parent | 7c67bb9d0337b0b9d126df94715a95045dd8bdb1 (diff) |
modified smiles escaping, uid supported
-rw-r--r-- | Rakefile | 4 | ||||
-rw-r--r-- | application.rb | 8 | ||||
-rw-r--r-- | config.ru | 10 |
3 files changed, 12 insertions, 10 deletions
@@ -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) @@ -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 |