summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2009-08-25 20:52:16 +0200
committerChristoph Helma <helma@in-silico.de>2009-08-25 20:52:16 +0200
commit76948b1a6ac9f48edb783c8cb1126dbeed3df4b4 (patch)
tree4b5a7307ffcbaa5493777b167eeef40996e90979
parent7c67bb9d0337b0b9d126df94715a95045dd8bdb1 (diff)
modified smiles escaping, uid supported
-rw-r--r--Rakefile4
-rw-r--r--application.rb8
-rw-r--r--config.ru10
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