34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/puppet/feature/aviator/core/cli/describer.rb', line 34
def self.describe_request(provider_name, service_name, api_version, endpoint_type, request_name)
service = Aviator::Service.new :provider => provider_name, :service => service_name
request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::Requests::"\
"#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
display = "Request: #{ request_name }\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].to_s.length }.max,
rows.map{|row| row[1].to_s.length }.max
]
widths << rows.map{|row| row[2].to_s.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
display << "\nSample Code:\n"
display << " session.request(:#{ service_name }_service, :#{ request_name })"
if params && params.length > 0
display << " do |params|\n"
params.each do |pair|
display << " params.#{ (aliases.find{|a,p| p == pair[0] } || pair)[0] } = value\n"
end
display << " end"
end
display << "\n"
if request_class.links && request_class.links.length > 0
display << "\nLinks:\n"
request_class.links.each do |link|
display << " #{ link[:rel] }:\n"
display << " #{ link[:href] }\n"
end
end
display
end
|