require_relative "request_parser" module Devops module API2_0 module Parser class StackParser < RequestParser def create @body ||= create_object_from_json_body project_name = check_string(@body["project"], "Parameter 'project' must be a not empty string") env_name = check_string(@body["deploy_env"], "Parameter 'deploy_env' must be a not empty string") check_string(@body["name"], "Parameter 'name' must be a not empty string", true, false) list = check_array(@body["run_list"], "Parameter 'run_list' is invalid, it should be not empty array of strings", String, true, true) Validators::Helpers::RunList.new(list).validate! unless list.nil? @body end def run_list list = check_array(create_object_from_json_body(Array), "Body must contains not empty array of strings") Validators::Helpers::RunList.new(list).validate! list end def tags @body ||= create_object_from_json_body raise InvalidRecord.new("Request body should be an object") unless @body.is_a?(Hash) @body.each do |k, v| raise InvalidRecord.new("Invalid key '#{k}', it should be a String") unless k.is_a?(String) raise InvalidRecord.new("Invalid value '#{v}' for key '#{k}', it should be a String") unless v.is_a?(String) end @body end def deploy @body ||= create_object_from_json_body names = check_array(@body["names"], "Parameter 'names' should be a not empty array of strings", String, true) tags = check_array(@body["tags"], "Parameter 'tags' should be an array of strings", String, true) @body end def change_stack_template template_id = create_object_from_json_body['stack_template'] check_string(template_id, "Parameter 'stack_template' must be a not empty string") template_id end end end end end