Update Describer according to new test specs
This commit is contained in:
@@ -1,37 +1,25 @@
|
|||||||
module Aviator
|
module Aviator
|
||||||
|
|
||||||
module Describer
|
class Describer
|
||||||
|
|
||||||
def self.describe_aviator
|
def self.describe_aviator
|
||||||
provider_names = Pathname.new(__FILE__)
|
|
||||||
.join('..', '..', '..')
|
|
||||||
.children
|
|
||||||
.select{|c| c.directory? && c.basename.to_s != 'core' }
|
|
||||||
.map{|c| c.basename.to_s }
|
|
||||||
|
|
||||||
str = "Available providers:\n"
|
str = "Available providers:\n"
|
||||||
|
|
||||||
provider_names.each do |provider_name|
|
provider_names.each do |provider_name|
|
||||||
str << " #{ provider_name }\n"
|
str << " #{ provider_name }\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
str
|
str
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def self.describe_provider(provider_name)
|
def self.describe_provider(provider_name)
|
||||||
service_names = Pathname.new(__FILE__)
|
|
||||||
.join('..', '..', '..', provider_name)
|
|
||||||
.children
|
|
||||||
.select{|c| c.directory? }
|
|
||||||
.map{|c| c.basename.to_s }
|
|
||||||
|
|
||||||
str = "Available services for #{ provider_name }:\n"
|
str = "Available services for #{ provider_name }:\n"
|
||||||
|
|
||||||
service_names.each do |service_name|
|
service_names(provider_name).each do |service_name|
|
||||||
str << " #{ service_name }\n"
|
str << " #{ service_name }\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
str
|
str
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -40,56 +28,119 @@ module Aviator
|
|||||||
service = Aviator::Service.new provider: provider_name, service: service_name
|
service = Aviator::Service.new provider: provider_name, service: service_name
|
||||||
request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::"\
|
request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::"\
|
||||||
"#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
|
"#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
|
||||||
|
|
||||||
str = "Request: #{ request_name }\n\n"
|
|
||||||
|
|
||||||
str << "Parameters:\n"
|
|
||||||
|
|
||||||
params = request_class.optional_params.map{|p| [p, :optional]} +
|
display = "Request: #{ request_name }\n"
|
||||||
request_class.required_params.map{|p| [p, :required]}
|
|
||||||
|
|
||||||
params.sort{|a,b| a[0].to_s <=> b[0].to_s }.each do |param|
|
# Build the parameters
|
||||||
str << " (#{ param[1].to_s }) #{ param[0] }\n"
|
params = request_class.optional_params.map{|p| [p, false]} +
|
||||||
|
request_class.required_params.map{|p| [p, true]}
|
||||||
|
|
||||||
|
aliases = request_class.param_aliases
|
||||||
|
|
||||||
|
if params.length > 0
|
||||||
|
display << "\n"
|
||||||
|
|
||||||
|
headings = ['NAME', 'REQUIRED']
|
||||||
|
|
||||||
|
headings << 'ALIAS' if aliases.length > 0
|
||||||
|
|
||||||
|
rows = []
|
||||||
|
params.sort{|a,b| a[0].to_s <=> b[0].to_s }.each do |param|
|
||||||
|
row = [ param[0], param[1] ? 'Y' : 'N' ]
|
||||||
|
|
||||||
|
if aliases.length > 0
|
||||||
|
row << (aliases.find{|a,p| p == param[0] } || [''])[0]
|
||||||
|
end
|
||||||
|
|
||||||
|
rows << row
|
||||||
|
end
|
||||||
|
|
||||||
|
widths = [
|
||||||
|
rows.map{|row| row[0].length }.max,
|
||||||
|
rows.map{|row| row[1].length }.max
|
||||||
|
]
|
||||||
|
|
||||||
|
widths << rows.map{|row| row[2].length }.max if aliases.length > 0
|
||||||
|
|
||||||
|
table = Terminal::Table.new(headings: headings, rows: rows)
|
||||||
|
|
||||||
|
table.align_column(1, :center)
|
||||||
|
|
||||||
|
display << "Parameters:\n"
|
||||||
|
display << " " + table.to_s.split("\n").join("\n ")
|
||||||
|
display << "\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
str << "\nSample Code:\n"
|
|
||||||
|
|
||||||
str << " session.#{ service_name }_service.request(:#{ request_name }, endpoint_type: '#{ request_class.endpoint_type }')"
|
|
||||||
if params
|
# Build the sample code
|
||||||
str << " do |params|\n"
|
display << "\nSample Code:\n"
|
||||||
|
|
||||||
|
display << " session.#{ service_name }_service.request(:#{ request_name })"
|
||||||
|
|
||||||
|
if params && params.length > 0
|
||||||
|
display << " do |params|\n"
|
||||||
params.each do |pair|
|
params.each do |pair|
|
||||||
str << " params['#{ pair[0] }'] = value\n"
|
display << " params.#{ (aliases.find{|a,p| p == pair[0] } || pair)[0] } = value\n"
|
||||||
end
|
end
|
||||||
str << " end\n"
|
display << " end"
|
||||||
end
|
end
|
||||||
|
|
||||||
if request_class.links
|
display << "\n"
|
||||||
str << "\nLinks:\n"
|
|
||||||
|
|
||||||
|
# Build the links
|
||||||
|
if request_class.links && request_class.links.length > 0
|
||||||
|
display << "\nLinks:\n"
|
||||||
|
|
||||||
request_class.links.each do |link|
|
request_class.links.each do |link|
|
||||||
str << " #{ link[:rel] }:\n"
|
display << " #{ link[:rel] }:\n"
|
||||||
str << " #{ link[:href] }\n"
|
display << " #{ link[:href] }\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
str
|
display
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def self.describe_service(provider_name, service_name)
|
def self.describe_service(provider_name, service_name)
|
||||||
service = Aviator::Service.new(provider: provider_name, service: service_name)
|
|
||||||
klasses = service.request_classes
|
|
||||||
|
|
||||||
str = "Available requests for #{ provider_name } #{ service_name }_service:\n"
|
str = "Available requests for #{ provider_name } #{ service_name }_service:\n"
|
||||||
|
|
||||||
klasses.each do |klass|
|
request_classes(provider_name, service_name).each do |klass|
|
||||||
str << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
|
str << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
str
|
str
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
class <<self
|
||||||
|
private
|
||||||
|
|
||||||
|
def provider_names
|
||||||
|
Pathname.new(__FILE__)
|
||||||
|
.join('..', '..', '..')
|
||||||
|
.children
|
||||||
|
.select{|c| c.directory? && c.basename.to_s != 'core' }
|
||||||
|
.map{|c| c.basename.to_s }
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def request_classes(provider_name, service_name)
|
||||||
|
service = Aviator::Service.new(provider: provider_name, service: service_name)
|
||||||
|
service.request_classes
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def service_names(provider_name)
|
||||||
|
Pathname.new(__FILE__)
|
||||||
|
.join('..', '..', '..', provider_name)
|
||||||
|
.children
|
||||||
|
.select{|c| c.directory? }
|
||||||
|
.map{|c| c.basename.to_s }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user