fluke/devops-service/routes/v2.0.rb
2015-07-16 12:54:16 +03:00

112 lines
2.6 KiB
Ruby

require "sinatra/base"
require "sinatra/streaming"
require "helpers/version_2"
require "json"
require "fog"
require "auth/devops_auth"
require "db/exceptions/invalid_record"
require "db/exceptions/record_not_found"
require "exceptions/dependency_error"
module Devops
class Api2 < Sinatra::Base
include Sinatra::JSON
helpers Sinatra::Streaming
helpers Devops::Version2_0::Helpers
register Sinatra::DevopsAuth
configure :production do
disable :dump_errors
disable :show_exceptions
set :logging, Logger::INFO
puts "Production mode"
end
configure :development do
set :logging, Logger::DEBUG
disable :raise_errors
# disable :dump_errors
set :show_exceptions, :after_handler
puts "Development mode"
end
not_found do
"Not found"
end
error RecordNotFound do
e = env["sinatra.error"]
logger.warn e.message
halt_response(e.message, 404)
end
error InvalidRecord do
e = env["sinatra.error"]
logger.warn e.message
logger.warn "Request body: #{request.body.read}"
halt_response(e.message, 400)
end
error InvalidCommand do
e = env["sinatra.error"]
logger.warn e.message
halt_response(e.message, 400)
end
error DependencyError do
e = env["sinatra.error"]
logger.warn e.message
halt_response(e.message, 400)
end
error InvalidPrivileges do
e = env["sinatra.error"]
logger.warn e.message
halt_response(e.message, 401)
end
error Excon::Errors::Error do
e = env["sinatra.error"]
logger.warn e.message
halt_response(e.message, 400)
end
=begin
error ::Excon::Errors::Unauthorized do
e = env["sinatra.error"]
resp = e.response
ct = resp.headers["Content-Type"]
msg = unless ct.nil?
if ct.include?("application/json")
json = ::Chef::JSONCompat.from_json(resp.body)
m = "ERROR: Unauthorized (#{json['error']['code']}): #{json['error']['message']}"
logger.error(m)
else
end
m
else
"Unauthorized: #{e.inspect}"
end
halt_response(msg, 500)
end
=end
error Fog::Compute::AWS::Error do
e = env["sinatra.error"]
logger.error e.message
halt_response(e.message, 500)
end
error do
e = env["sinatra.error"]
logger.error e.message
halt_response(e.message, 500)
end
end
end