Class: Genio::Parser::Format::IODocs
- Inherits:
-
Base
- Object
- Base
- Genio::Parser::Format::IODocs
show all
- Defined in:
- lib/genio/parser/format/iodocs.rb
Constant Summary
collapse
- URIPropertyName =
/{([^}]+)}/
Instance Attribute Summary
Attributes inherited from Base
#data_types, #endpoint, #enum_types, #files, #options, #services
Class Method Summary
collapse
Methods inherited from Base
#expand_path, #initialize, #load_files, #open, #read_file, #to_iodocs
Methods included from Logging
#logger
Class Method Details
.members_for_data_type(data_type, schema) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/genio/parser/format/iodocs.rb', line 68
def members_for_data_type(data_type, schema)
return [] if members_loaded[data_type]
members_loaded[data_type] = true
members = []
if data_type.extends and schema.data_types[data_type.extends]
members += members_for_data_type(schema.data_types[data_type.extends], schema)
end
data_type.properties.each{|name, property|
unless property.readonly
members.push(property_to_iodocs(name, property, schema))
end
}
members_loaded.delete(data_type)
members
end
|
.members_loaded ⇒ Object
64
65
66
|
# File 'lib/genio/parser/format/iodocs.rb', line 64
def members_loaded
@members ||= {}
end
|
.operation_to_iodocs(name, operation, schema) ⇒ Object
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
|
# File 'lib/genio/parser/format/iodocs.rb', line 34
def operation_to_iodocs(name, operation, schema)
data = {
"Name" => name,
"HTTPMethod" => operation.type,
"URI" => operation.path.gsub(URIPropertyName,':\1') ,
"Required" => "Y",
"Type" => "complex",
"Parameters" => [],
"Description" => operation.description || "" }
if operation.parameters
data["Parameters"] =
operation.parameters.map do |name, property|
property_to_iodocs(name, property.merge( :required => (property.location == "path") ), schema)
end
end
operation.path.scan(URIPropertyName) do |name|
if operation.parameters.nil? or operation.parameters[$1].nil?
property = Types::Property.new(:type => "string", :required => true)
data["Parameters"] << property_to_iodocs($1, property, schema)
end
end
if operation.request_property
property = operation.request_property.merge( :required => true )
parameter = property_to_iodocs(property.type, property, schema)
data["Parameters"] += [ parameter ]
data["RequestContentType"] = "application/json"
end
data
end
|
.property_to_iodocs(name, property, schema) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/genio/parser/format/iodocs.rb', line 84
def property_to_iodocs(name, property, schema)
if property.attribute and schema.options[:attribute]
name = "@#{name}"
elsif property.package and schema.options[:namespace]
name = "#{property.package}:#{name}"
end
data = {
"Name" => name,
"Type" => property.type,
"ValidatedClass" => property.type,
}
data["Description"] = property.description if property.description
data["Required"] = "Y" if property.required == true
data["Default"] = property.default unless property.default.nil?
if property.enum
data["Type"] = "enumerated"
data["EnumeratedList"] = property.enum
elsif schema.data_types[property.type]
data["Type"] = "complex"
data["Members"] = members_for_data_type(schema.data_types[property.type], schema)
data["Members"] = [ data["Members"] ] if property.array
end
data
end
|
.service_to_iodocs(name, service, schema) ⇒ Object
28
29
30
31
|
# File 'lib/genio/parser/format/iodocs.rb', line 28
def service_to_iodocs(name, service, schema)
{ "name" => name,
"methods" => service.operations.map{|name, operation| operation_to_iodocs(name, operation, schema) } }
end
|
.to_iodocs(schema) ⇒ Object
24
25
26
|
# File 'lib/genio/parser/format/iodocs.rb', line 24
def to_iodocs(schema)
{ "endpoints" => schema.services.map{|name, service| service_to_iodocs(name, service, schema) } }
end
|