private Property GetPropertyFromScalar(RamlType prop, KeyValuePair <string, RamlType> kv) { if (prop.Scalar.Enum != null && prop.Scalar.Enum.Any()) { if (!enums.ContainsKey(kv.Key)) { var apiEnum = new ApiEnum { Name = NetNamingMapper.GetPropertyName(kv.Key), Description = kv.Value.Description, Values = GetEnumValues(kv.Value.Scalar) }; enums.Add(kv.Key, apiEnum); } } return(new Property { Minimum = ToDouble(prop.Scalar.Minimum), Maximum = ToDouble(prop.Scalar.Maximum), Type = GetPropertyType(prop, kv), MaxLength = prop.Scalar.MaxLength, MinLength = prop.Scalar.MinLength, Name = NetNamingMapper.GetPropertyName(kv.Key), Required = prop.Required || kv.Value.Scalar.Required, Example = prop.Example, Description = prop.Description, IsEnum = prop.Scalar.Enum != null && prop.Scalar.Enum.Any(), OriginalName = kv.Key.TrimEnd('?') }); }
private bool IsAlreadyAdded(IDictionary<string, ApiEnum> enums, ApiEnum apiEnum) { foreach (var @enum in enums) { if(apiEnum.Values.Count != @enum.Value.Values.Count) continue; if (apiEnum.Values.Any(x => [email protected](x))) continue; return true; } return false; }
private string ParseEnum(string key, Newtonsoft.JsonV4.Schema.JsonSchema schema, IDictionary<string, ApiEnum> enums, string description) { var name = NetNamingMapper.GetObjectName(key); var apiEnum = new ApiEnum { Name = name, Description = description, Values = schema.Enum.Select(e => NetNamingMapper.GetEnumValueName(e.ToString())).ToList() }; if (enums.ContainsKey(name)) { if(IsAlreadyAdded(enums, apiEnum)) return name; apiEnum.Name = UniquenessHelper.GetUniqueName(enums, name); } enums.Add(apiEnum.Name, apiEnum); return apiEnum.Name; }