summaryrefslogtreecommitdiff
path: root/application.rb
diff options
context:
space:
mode:
Diffstat (limited to 'application.rb')
-rw-r--r--application.rb131
1 files changed, 68 insertions, 63 deletions
diff --git a/application.rb b/application.rb
index b8b1d04..e0e469d 100644
--- a/application.rb
+++ b/application.rb
@@ -10,81 +10,86 @@ require 'rjb'
gem "opentox-ruby-api-wrapper", "= 1.6.0"
require 'opentox-ruby-api-wrapper'
-get %r{/smiles/(.+)/smarts/(.*)} do |smiles,smarts|
- content_type "image/png"
- attachment "#{smiles}.png"
- #LOGGER.debug "SMILES: #{smiles}, SMARTS: #{smarts}"
- s = Rjb::import('Structure').new(smiles,200)
- s.match(smarts)
- s.show
+post "/display" do
+ content_type "image/png"
+ attachment "#{params["smiles"]}.png"
+ s = Rjb::import('Structure').new(params["smiles"],200)
+ s.match_activating(params["smarts"])
+ s.match_deactivating(["CC"])
+ s.show
end
+get %r{/smiles/(.+)/smarts/(.*)} do |smiles,smarts|
+ content_type "image/png"
+ attachment "#{smiles}.png"
+ s = Rjb::import('Structure').new(smiles,200)
+ s.match(smarts)
+ s.show
+end
get %r{/smiles/(.+)} do |smiles|
- content_type "image/png"
- attachment "#{smiles}.png"
- Rjb::import('Structure').new(smiles,200).show
+ content_type "image/png"
+ attachment "#{smiles}.png"
+ Rjb::import('Structure').new(smiles,200).show
end
get %r{/(.+)/image} do |inchi| # catches all remaining get requests
-
- smiles = OpenTox::Compound.new(:inchi => inchi).smiles
- content_type "image/png"
- attachment "#{smiles}.png"
- Rjb::import('Structure').new(smiles,200).show
-
+ smiles = OpenTox::Compound.new(:inchi => inchi).smiles
+ content_type "image/png"
+ attachment "#{smiles}.png"
+ Rjb::import('Structure').new(smiles,200).show
end
get %r{/(.+)} do |inchi| # catches all remaining get requests
- inchi = URI.unescape request.env['REQUEST_URI'].sub(/^\//,'').sub(/.*compound\//,'') # hack to avoid sinatra's URI/CGI unescaping, splitting, ..."
- case request.env['HTTP_ACCEPT']
- when "*/*"
- response['Content-Type'] = "chemical/x-daylight-smiles"
- OpenTox::Compound.new(:inchi => inchi).smiles
- when "chemical/x-daylight-smiles"
- response['Content-Type'] = "chemical/x-daylight-smiles"
- OpenTox::Compound.new(:inchi => inchi).smiles
- when "chemical/x-inchi"
- response['Content-Type'] = "chemical/x-inchi"
- inchi
- when "chemical/x-mdl-sdfile"
- response['Content-Type'] = "chemical/x-mdl-sdfile"
- OpenTox::Compound.new(:inchi => inchi).sdf
- when "image/gif"
- response['Content-Type'] = "image/gif"
- OpenTox::Compound.new(:inchi => inchi).gif
- when "image/png"
- response['Content-Type'] = "image/png"
- OpenTox::Compound.new(:inchi => inchi).png
- when "text/plain"
- response['Content-Type'] = "text/plain"
- uri = File.join @@cactus_uri,inchi,"names"
- RestClient.get(uri).body
- else
- halt 400, "Unsupported MIME type '#{request.env['HTTP_ACCEPT']}'"
- end
+ inchi = URI.unescape request.env['REQUEST_URI'].sub(/^\//,'').sub(/.*compound\//,'') # hack to avoid sinatra's URI/CGI unescaping, splitting, ..."
+ case request.env['HTTP_ACCEPT']
+ when "*/*"
+ response['Content-Type'] = "chemical/x-daylight-smiles"
+ OpenTox::Compound.new(:inchi => inchi).smiles
+ when "chemical/x-daylight-smiles"
+ response['Content-Type'] = "chemical/x-daylight-smiles"
+ OpenTox::Compound.new(:inchi => inchi).smiles
+ when "chemical/x-inchi"
+ response['Content-Type'] = "chemical/x-inchi"
+ inchi
+ when "chemical/x-mdl-sdfile"
+ response['Content-Type'] = "chemical/x-mdl-sdfile"
+ OpenTox::Compound.new(:inchi => inchi).sdf
+ when "image/gif"
+ response['Content-Type'] = "image/gif"
+ OpenTox::Compound.new(:inchi => inchi).gif
+ when "image/png"
+ response['Content-Type'] = "image/png"
+ OpenTox::Compound.new(:inchi => inchi).png
+ when "text/plain"
+ response['Content-Type'] = "text/plain"
+ uri = File.join @@cactus_uri,inchi,"names"
+ RestClient.get(uri).body
+ else
+ halt 400, "Unsupported MIME type '#{request.env['HTTP_ACCEPT']}'"
+ end
end
post '/?' do
- input = request.env["rack.input"].read
- response['Content-Type'] = 'text/uri-list'
- begin
- case request.content_type
- when /chemical\/x-daylight-smiles/
- OpenTox::Compound.new(:smiles => input).uri + "\n"
- when /chemical\/x-inchi/
- OpenTox::Compound.new(:inchi => input).uri + "\n"
- when /chemical\/x-mdl-sdfile|chemical\/x-mdl-molfile/
- OpenTox::Compound.new(:sdf => input).uri + "\n"
- when /text\/plain/
- OpenTox::Compound.new(:name => input).uri + "\n"
- else
- status 400
- "Unsupported MIME type '#{request.content_type}'"
- end
- rescue
- status 400
- "Cannot process request '#{input}' for content type '#{request.content_type}'"
- end
+ input = request.env["rack.input"].read
+ response['Content-Type'] = 'text/uri-list'
+ begin
+ case request.content_type
+ when /chemical\/x-daylight-smiles/
+ OpenTox::Compound.new(:smiles => input).uri + "\n"
+ when /chemical\/x-inchi/
+ OpenTox::Compound.new(:inchi => input).uri + "\n"
+ when /chemical\/x-mdl-sdfile|chemical\/x-mdl-molfile/
+ OpenTox::Compound.new(:sdf => input).uri + "\n"
+ when /text\/plain/
+ OpenTox::Compound.new(:name => input).uri + "\n"
+ else
+ status 400
+ "Unsupported MIME type '#{request.content_type}'"
+ end
+ rescue
+ status 400
+ "Cannot process request '#{input}' for content type '#{request.content_type}'"
+ end
end