2015-08-03 15:09:04 +03:00
|
|
|
require "json"
|
|
|
|
|
require "exceptions/parser_error"
|
|
|
|
|
require "exceptions/validation_error"
|
|
|
|
|
|
|
|
|
|
module Devops
|
|
|
|
|
module API2_0
|
|
|
|
|
module ParserHelpers
|
|
|
|
|
|
|
|
|
|
def create_object_from_json_body type=Hash, empty_body=false
|
|
|
|
|
json = request.body.read.strip
|
|
|
|
|
return nil if json.empty? and empty_body
|
|
|
|
|
@body_json = begin
|
|
|
|
|
::JSON.parse(json)
|
|
|
|
|
rescue ::JSON::ParserError => e
|
|
|
|
|
DevopsLogger.logger.error e.message
|
|
|
|
|
raise Devops::ParserError.new("Invalid JSON: #{e.message}")
|
|
|
|
|
end
|
|
|
|
|
raise Devops::ParserError.new("Invalid JSON, it should be an #{type == Array ? "array" : "object"}") unless @body_json.is_a?(type)
|
|
|
|
|
@body_json
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_provider provider
|
|
|
|
|
list = ::Provider::ProviderFactory.providers
|
|
|
|
|
raise Devops::ValidationError.new("Invalid provider '#{provider}', available providers: '#{list.join("', '")}'") unless list.include?(provider)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_string val, msg, _nil=false, empty=false
|
|
|
|
|
check_param val, String, msg, _nil, empty
|
|
|
|
|
end
|
|
|
|
|
|
2015-11-13 17:22:55 +03:00
|
|
|
def check_boolean val, msg
|
|
|
|
|
begin
|
|
|
|
|
check_param val, TrueClass, msg, false, true
|
|
|
|
|
rescue
|
|
|
|
|
check_param val, FalseClass, msg, false, true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2015-08-03 15:09:04 +03:00
|
|
|
def check_array val, msg, vals_type=String, _nil=false, empty=false
|
|
|
|
|
check_param val, Array, msg, _nil, empty
|
|
|
|
|
val.each {|v| raise Devops::ValidationError.new(msg) unless v.is_a?(vals_type)} unless val.nil?
|
|
|
|
|
val
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_filename file_name, not_string_msg, json_resp=true
|
|
|
|
|
check_string file_name, not_string_msg
|
|
|
|
|
r = Regexp.new("^[\\w _\\-.]{1,255}$", Regexp::IGNORECASE)
|
|
|
|
|
if r.match(file_name).nil?
|
|
|
|
|
msg = "Invalid file name '#{file_name}'. Expected name with 'a'-'z', '0'-'9', ' ', '_', '-', '.' symbols with length greate then 0 and less then 256 "
|
|
|
|
|
raise Devops::ValidationError.new(msg, json_resp)
|
|
|
|
|
=begin
|
|
|
|
|
if json_resp
|
|
|
|
|
halt_response(msg)
|
|
|
|
|
else
|
|
|
|
|
halt(400, msg)
|
|
|
|
|
end
|
|
|
|
|
=end
|
|
|
|
|
end
|
|
|
|
|
file_name
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def check_param val, type, msg, _nil=false, empty=false
|
|
|
|
|
if val.nil?
|
|
|
|
|
if _nil
|
|
|
|
|
return val
|
|
|
|
|
else
|
|
|
|
|
raise Devops::ValidationError.new(msg)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if val.is_a?(type)
|
2015-11-13 17:22:55 +03:00
|
|
|
raise Devops::ValidationError.new(msg) if !empty && val.empty?
|
2015-08-03 15:09:04 +03:00
|
|
|
val
|
|
|
|
|
else
|
|
|
|
|
raise Devops::ValidationError.new(msg)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|