class Genio::Parser::Format::IODocs

Constants

URIPropertyName

Public Class Methods

members_for_data_type(data_type, schema) click to toggle source
# 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() click to toggle source
# File lib/genio/parser/format/iodocs.rb, line 64
def members_loaded
  @members ||= {}
end
operation_to_iodocs(name, operation, schema) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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