Пример #1
0
 private HttpContent GetStringContent(ApiDocumentation vocab, string format, string docDir)
 {
     var sbMain = new StringBuilder();
     sbMain.Heading(format, 1, "Vocab");
     foreach (var clazz in vocab.SupportedClasses)
     {
         var sb = new StringBuilder();
         sb.Heading(format, 1, clazz.Label);
         if (!string.IsNullOrWhiteSpace(clazz.UnstableNote))
         {
             sb.Para(format, clazz.UnstableNote, true);
         }
         sb.Para(format, clazz.Description);
         sb.Code(format, clazz.UriTemplate);
         if (clazz.SupportedOperations != null && clazz.SupportedOperations.Length > 0)
         {
             sb.Heading(format, 2, "Supported operations");
             // sb.Code(format, clazz.UriTemplate);
             AppendSupportedOperationsTable(sb, format, clazz.SupportedOperations);
         }
         if (clazz.SupportedProperties != null && clazz.SupportedProperties.Length > 0)
         {
             sb.Heading(format, 2, "Supported properties");
             foreach (SupportedProperty prop in clazz.SupportedProperties)
             {
                 var linkProp = prop.Property as HydraLinkProperty;
                 if (linkProp != null)
                 {
                     sb.Heading(format, 3, prop.Title + " (🔗)");
                 }
                 else
                 {
                     sb.Heading(format, 3, prop.Title);
                 }
                 sb.Para(format, prop.Description);
                 if (!string.IsNullOrWhiteSpace(prop.UnstableNote))
                 {
                     sb.Para(format, prop.UnstableNote, true);
                 }
                 sb.StartTable(format, "domain", "range", "readonly", "writeonly");
                 sb.TableRow(format, NameSpace(prop.Property.Domain), NameSpace(prop.Property.Range), prop.ReadOnly.ToString(), prop.WriteOnly.ToString());
                 sb.EndTable(format);
                 if (linkProp != null)
                 {
                     sb.Code(format, clazz.UriTemplate + "/" + linkProp.Label);
                     AppendSupportedOperationsTable(sb, format, linkProp.SupportedOperations);
                 }
             }
         }
         string classDoc = sb.ToString();
         WriteDocToDisk(format, docDir, clazz, classDoc);
         sbMain.Append(classDoc);
     }
     return new StringContent(sbMain.ToString(), Encoding.UTF8, "text/" + format);
 }
Пример #2
0
 private void AppendSupportedOperationsTable(StringBuilder sb, string format, Operation[] supportedOperations)
 {
     if (supportedOperations != null && supportedOperations.Length > 0)
     {
         sb.StartTable(format, "Method", "Label", "Expects", "Returns", "Statuses");
         foreach (var op in supportedOperations)
         {
             string statuses = "";
             if (op.StatusCodes != null && op.StatusCodes.Length > 0)
             {
                 statuses = string.Join(", ",
                     op.StatusCodes.Select(code => code.StatusCode + " " + code.Description));
             }
             sb.TableRow(format, op.Method, op.Label, NameSpace(op.Expects), NameSpace(op.Returns), statuses);
         }
         sb.EndTable(format);
     }
 }