private static ArrayType GetArray(IDictionary <string, object> dynamicRaml, string key) { var array = new ArrayType(); array.MaxItems = DynamicRamlParser.GetIntOrNull(dynamicRaml, "maxItems"); array.MinItems = DynamicRamlParser.GetIntOrNull(dynamicRaml, "minItems"); array.UniqueItems = DynamicRamlParser.GetBoolOrNull(dynamicRaml, "maxProperties"); RamlType items = null; if (dynamicRaml.ContainsKey("items")) { var asDictionary = dynamicRaml["items"] as IDictionary <string, object>; if (asDictionary != null) { items = GetRamlType(new KeyValuePair <string, object>("", asDictionary)); } else { var asString = dynamicRaml["items"] as string; items = new RamlType { Type = asString }; } } array.Items = items; return(array); }
private static ObjectType GetObject(IDictionary <string, object> dynamicRaml) { var obj = new ObjectType(); obj.AdditionalProperties = DynamicRamlParser.GetValueOrNull(dynamicRaml, "additionalProperties"); obj.Discriminator = DynamicRamlParser.GetValueOrNull(dynamicRaml, "discriminator"); obj.DiscriminatorValue = DynamicRamlParser.GetStringOrNull(dynamicRaml, "discriminatorValue"); obj.MaxProperties = DynamicRamlParser.GetIntOrNull(dynamicRaml, "maxProperties"); obj.MinProperties = DynamicRamlParser.GetIntOrNull(dynamicRaml, "minProperties"); obj.PatternProperties = DynamicRamlParser.GetValueOrNull(dynamicRaml, "patternProperties"); ParseProperties(dynamicRaml, obj); return(obj); }
public MimeType GetMimeType(object mimeType) { var value = mimeType as IDictionary <string, object>; if (value == null) { var schema = mimeType as string; return(!string.IsNullOrWhiteSpace(schema) ? new MimeType { Schema = schema } : null); } if (value.ContainsKey("body") && value["body"] is IDictionary <string, object> ) { value = (IDictionary <string, object>)value["body"]; } RamlType ramlType = null; if (value.ContainsKey("type") && value.ContainsKey("properties")) { ramlType = TypeBuilder.GetRamlType(new KeyValuePair <string, object>("obj", mimeType)); } if (value.ContainsKey("application/json")) { value = value["application/json"] as IDictionary <string, object>; } if (value.ContainsKey("type") && (value["type"] as IDictionary <string, object>) != null && ((IDictionary <string, object>)value["type"]).ContainsKey("properties")) { ramlType = TypeBuilder.GetRamlType(new KeyValuePair <string, object>("obj", value["type"])); } return(new MimeType { Type = TypeExtractor.GetType(value), InlineType = ramlType, Description = value.ContainsKey("description") ? (string)value["description"] : null, Example = DynamicRamlParser.GetExample(value), Schema = GetSchema(value), FormParameters = value.ContainsKey("formParameters") ? GetParameters((IDictionary <string, object>)value["formParameters"]) : null, Annotations = AnnotationsBuilder.GetAnnotations(dynamicRaml) }); }
private static ObjectType GetObject(IDictionary <string, object> dynamicRaml) { var obj = new ObjectType(); obj.AdditionalProperties = DynamicRamlParser.GetValueOrNull(dynamicRaml, "additionalProperties"); obj.Discriminator = DynamicRamlParser.GetValueOrNull(dynamicRaml, "discriminator"); obj.DiscriminatorValue = DynamicRamlParser.GetStringOrNull(dynamicRaml, "discriminatorValue"); obj.MaxProperties = DynamicRamlParser.GetIntOrNull(dynamicRaml, "maxProperties"); obj.MinProperties = DynamicRamlParser.GetIntOrNull(dynamicRaml, "minProperties"); obj.PatternProperties = DynamicRamlParser.GetValueOrNull(dynamicRaml, "patternProperties"); var properties = new Dictionary <string, RamlType>(); if (dynamicRaml.ContainsKey("properties")) { foreach (var property in (IDictionary <string, object>)dynamicRaml["properties"]) { properties.Add(property.Key, GetRamlType(property)); } } obj.Properties = properties; return(obj); }
public static RamlType GetRamlType(KeyValuePair <string, object> type) { var key = type.Key; var required = true; if (key.EndsWith("?")) { key = key.Substring(0, key.Length - 1); required = false; } var ramlType = new RamlType(); ramlType.Name = key; ramlType.Required = required; var simpleProperty = type.Value as string; if (simpleProperty != null) { if (simpleProperty.StartsWith("<")) { ramlType.External = new ExternalType { Xml = simpleProperty }; return(ramlType); } if (simpleProperty.StartsWith("{")) { ramlType.External = new ExternalType { Schema = simpleProperty }; return(ramlType); } ramlType.Scalar = GetScalar(type, required); return(ramlType); } var dynamicRaml = type.Value as IDictionary <string, object>; if (dynamicRaml == null) { throw new InvalidOperationException("Cannot parse type: " + type.Key); } ramlType = new RamlType { Name = type.Key, Type = GetType((IDictionary <string, object>)type.Value), Example = DynamicRamlParser.GetStringOrNull((IDictionary <string, object>)type.Value, "example"), Facets = DynamicRamlParser.GetDictionaryOrNull <object>((IDictionary <string, object>)type.Value, "facets"), OtherProperties = GetOtherProperties((IDictionary <string, object>)type.Value) }; SetPropertiesByType(type, ramlType); return(ramlType); }