public static void SchemaMap(string key, _1.Schema schema, Dictionary <string, ISchema> created, Dictionary <string, ISuspendBuilder <ISchema> > inProgress) { switch (schema.Type) { case "integer": created.Add(key, new SimpleSchema(SchemaType.Int)); break; case "string": created.Add(key, new SimpleSchema(SchemaType.String)); break; case "number": created.Add(key, new SimpleSchema(SchemaType.Number)); break; case "array": { var builder = new ArraySchemaBuilder(schema.Items?.GetRef() ?? $"{key}/items", created); builder.Parse(); if (builder.CanCreate()) { created.Add(key, builder.Create()); } else { inProgress.Add(key, builder); } break; } case "boolean": created.Add(key, new SimpleSchema(SchemaType.Bool)); break; case "object": { var builder = new ClassSchemaBuilder(key.Split('/').Last(), key, schema.Required, schema, created); builder.Parse(); if (builder.CanCreate()) { created.Add(key, builder.Create()); } else { inProgress.Add(key, builder); } break; } } }
public ClassSchemaBuilder(string name, string path, IEnumerable <string> requiredProperties, _1.Schema model, Dictionary <string, ISchema> schemata) { _name = name; _path = path; _schemata = schemata; _requiredProperties = requiredProperties ?? new List <string>(); if (model.Properties != null) { _propertiesToParse = model.Properties .Select(x => new KeyValuePair <string, string>(x.Key, x.Value.GetRef())).ToList(); } else { _propertiesToParse = new List <KeyValuePair <string, string> >(); } }