107 lines
2.5 KiB
Ruby
107 lines
2.5 KiB
Ruby
require "sinatra/base"
|
|
require "sinatra/streaming"
|
|
require "helpers/version_2"
|
|
require "json"
|
|
|
|
require "auth/devops_auth"
|
|
|
|
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
|