class Grapethor::Endpoint
Attributes
api_version[R]
app_path[R]
end_desc[R]
end_method[R]
end_name[R]
end_params[R]
end_query[R]
end_query_sample[R]
end_query_with_params[R]
end_resource[R]
request_path[R]
request_path_sample[R]
Public Class Methods
exit_on_failure?()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 24 def self.exit_on_failure? true end
source_root()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 28 def self.source_root File.join(__dir__, '..') end
Public Instance Methods
create_endpoint()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 102 def create_endpoint report("Creating new endpoint...") do unless File.exist?("#{app_path}/api/#{api_version}/#{end_resource_plural}.rb") directory "templates/endpoint/api/\%api_version\%", "#{app_path}/api/#{api_version}" end insert_into_file "#{app_path}/api/#{api_version}/#{end_resource_plural}.rb", end_content, after: "resource :#{end_resource.pluralize} do\n" insert_into_file "#{app_path}/api/#{api_version}/base.rb", "\s\s\s\smount API#{api_version}::#{end_resource.classify.pluralize}\n", before: "\s\s\s\s# mount API#{api_version}::<ResourceOrEndpointClass>\n" unless File.exist?("#{app_path}/#{test_dirname}/api/#{api_version}/#{end_resource_plural}_#{test_dirname}.rb") directory "templates/endpoint_#{app_test_framework}", app_path end insert_into_file "#{app_path}/#{test_dirname}/api/#{api_version}/#{end_resource_plural}_#{test_dirname}.rb", end_test_content, after: "\s\s### grapethor works here ###\n" end end
parse_args_and_opts()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 73 def parse_args_and_opts @end_resource = resource.downcase.singularize @end_name = name.downcase.singularize @end_method = options[:method].upcase @end_params = options[:params] @end_query = options[:query].map { |k, v| [k, v.downcase] }.to_h @end_query_with_params = options[:params].merge(options[:query]).map { |k, v| [k, v.downcase] }.to_h @api_version = options[:version].downcase @app_path = options[:path] end
prepare_endpoint()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 85 def prepare_endpoint prepare_request_path prepare_request_path_sample @end_desc = options[:desc].empty? ? "#{end_method} #{request_path}" : options[:desc] end
validate_target_api()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 94 def validate_target_api unless api_version_exists? alert "API version '#{api_version}' does not exist!" exit end end
Private Instance Methods
api_version_exists?()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 145 def api_version_exists? Dir.exist?("#{app_path}/api/#{api_version}") end
app_orm()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 173 def app_orm @app_orm ||= config_filename(@app_path)['app_orm'] end
app_test_framework()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 169 def app_test_framework @app_test_framework ||= config_filename(@app_path)['app_test_framework'] end
end_content()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 150 def end_content erb_file = File.join(__dir__, "../templates/endpoint.rb.erb") erb_templates = File.read(erb_file) ERB.new(erb_templates, nil, '-').result(binding) end
end_resource_plural()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 164 def end_resource_plural end_resource.pluralize end
end_test_content()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 157 def end_test_content erb_file = File.join(__dir__, "../templates/endpoint_#{app_test_framework}.rb.erb") erb_templates = File.read(erb_file) ERB.new(erb_templates, nil, '-').result(binding) end
param_to_type(param)
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 178 def param_to_type(param) ATTRS_MAP.dig(app_orm.to_sym, param.to_sym, :type) || 'Unknown' end
prepare_request_path()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 129 def prepare_request_path req_path = [] end_params.each { |k, v| req_path << ":#{k}" } unless end_params.empty? req_path << "#{end_name}" unless end_name.empty? @request_path = req_path.join('/') end
prepare_request_path_sample()
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 137 def prepare_request_path_sample req_path_sample = [] end_params.each { |k,v| req_path_sample << sample_value(v, true) } unless end_params.empty? req_path_sample << "#{end_name}" unless end_name.empty? @request_path_sample = req_path_sample.join('/') end
sample_value(param, path=false)
click to toggle source
# File lib/grapethor/generators/endpoint.rb, line 182 def sample_value(param, path=false) val = ATTRS_MAP.dig(app_orm.to_sym, param.to_sym, :sample) if path && val.respond_to?(:tr!) val.tr!("'", "") end val || 'unknown' end