internal async Task WriteMetadataAsync(HttpContext httpContext, ODataRequest req) { var content = ODataMiddleware.LoadContentByVersionRequest(req.RepositoryPath, httpContext); //var isRoot = content?.ContentType.IsInstaceOfOrDerivedFrom("Site") ?? true; var isRoot = content == null; var metadata = isRoot ? MetaGenerator.GetMetadata() : MetaGenerator.GetMetadata(content, req.IsCollection); var mimeType = this.MimeType; if (mimeType != null) { httpContext.Response.ContentType = mimeType; } await WriteMetadataAsync(httpContext, metadata); }
public void WriteChoiceXml(TextWriter writer) { writer.Write(" <EnumType"); WriteAttribute(writer, "Name", Name); WriteAttribute(writer, "UnderlyingType", MetaGenerator.GetPrimitivePropertyType(typeof(string))); WriteAttribute(writer, "IsFlags", UnderlyingFieldSetting.AllowMultiple.ToString().ToLower()); writer.WriteLine(">"); var options = UnderlyingFieldSetting.Options; if (options != null) { foreach (var option in options) { writer.Write(" <Member"); WriteAttribute(writer, "Name", option.Text); WriteAttribute(writer, "Value", option.Value); writer.WriteLine("/>"); } } writer.WriteLine(" </EnumType>"); }
public void WriteEnumXml(TextWriter writer) { var isFlags = UnderlyingEnumType.GetCustomAttributes(typeof(FlagsAttribute), true).Length > 0; var names = Enum.GetNames(UnderlyingEnumType); var values = Enum.GetValues(UnderlyingEnumType); writer.Write(" <EnumType"); WriteAttribute(writer, "Name", Name); WriteAttribute(writer, "UnderlyingType", MetaGenerator.GetPrimitivePropertyType(Enum.GetUnderlyingType(UnderlyingEnumType))); WriteAttribute(writer, "IsFlags", isFlags.ToString().ToLower()); writer.WriteLine(">"); for (int i = 0; i < names.Length; i++) { writer.Write(" <Member"); WriteAttribute(writer, "Name", names[i]); WriteAttribute(writer, "Value", Convert.ChangeType(values.GetValue(i), Enum.GetUnderlyingType(UnderlyingEnumType)).ToString()); writer.WriteLine("/>"); } writer.WriteLine(" </EnumType>"); }