summaryrefslogtreecommitdiff
path: root/lib/lazar-rest.rb
blob: 255c52fad31d953aba1926868e460ef8d98ac8ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require "sinatra"
require "sinatra/reloader"
require 'sinatra/cross_origin'

configure do
  $logger = Logger.new(STDOUT)
  enable :reloader #if development?
  enable :cross_origin
  disable :show_exceptions
  disable :raise_errors
end

#set :protection, :except => :frame_options

# Environment setup from unicorn -E param
ENV["LAZAR_ENV"] = ENV["RACK_ENV"]
require "../lazar/lib/lazar.rb"
require "../qsar-report/lib/qsar-report.rb"
=begin
if ENV["LAZAR_ENV"] == "development"
  require "../lazar/lib/lazar.rb"
  require "../qsar-report/lib/qsar-report.rb"
else
  require "lazar"
  require "qsar-report"
end
=end

include OpenTox

before do
  @accept = request.env['HTTP_ACCEPT']
  response['Content-Type'] = @accept
end

not_found do
  400
  "Path '#{request.env["REQUEST_PATH"]}' not found.\n"
end

error do
  response['Content-Type'] = "text/plain"
  error = request.env['sinatra.error']
  body = error.message+"\n"
  error.respond_to?(:http_code) ? code = error.http_code : code = 500
  halt code, body
end

# https://github.com/britg/sinatra-cross_origin#responding-to-options
options "*" do
  response.headers["Allow"] = "HEAD,GET,PUT,POST,DELETE,OPTIONS"
  response.headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept"
  200
end

[
  "aa.rb",
  "api.rb",
  "compound.rb",
  "dataset.rb",
  "feature.rb",
  "model.rb",
  "nanoparticle.rb",
  "report.rb",
  "substance.rb",
  "swagger.rb",
  "validation.rb"
].each{ |f| require_relative f }