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