/// <summary> /// Get the response example /// </summary> /// <param name="operationDescription"></param> /// <returns></returns> public Message GetResponseExampleAsMessage(OperationDescription operationDescription) { bool isXmlSerializerType; Type body = OperationDescriptionUtilites.GetResponseBodyType(operationDescription, out isXmlSerializerType); if (IsBodySpecial(body)) { return(GetSpecialBodyDocumentationAsMessage(body, "response")); } try { object instance = Activator.CreateInstance(body); return(OperationDescriptionUtilites.GetResponseFormat(operationDescription) == "Json" ? GetJsonExampleAsMessage(instance, body) : GetXmlExampleAsMessage(instance, body, isXmlSerializerType)); } catch (Exception e) { return(GetTextMessage(String.Format("Could not generate example for response. Failed with error: {0}", e.Message))); } }
/// <summary> /// Get Documentation for a particular operation /// </summary> /// <param name="operationDescription"></param> /// <returns></returns> private string GetOperationDocumentation(OperationDescription operationDescription) { StringBuilder bodyXml = new StringBuilder(); bodyXml.AppendFormat("<p class=\"heading2\"><strong>{0}</strong></p><br/>", operationDescription.Name); WebOperationDocAttribute docAttribute = operationDescription.Behaviors.Find <WebOperationDocAttribute>(); if (docAttribute != null) { if (!String.IsNullOrEmpty(docAttribute.Description)) { bodyXml.AppendFormat("<p class=\"intro\">{0}", HttpUtility.HtmlEncode(docAttribute.Description)); if (!String.IsNullOrEmpty(docAttribute.SupportLink)) { bodyXml.AppendFormat(" <a href=\"{0}\">Report Bug</a>", HttpUtility.HtmlEncode(docAttribute.SupportLink)); } else { WebServiceDocAttribute serviceDocAttribute = ContractDescription.Behaviors.Find <WebServiceDocAttribute>(); if (!String.IsNullOrEmpty(serviceDocAttribute.SupportLink)) { bodyXml.AppendFormat(" <a href=\"{0}\">Report Bug</a>", HttpUtility.HtmlEncode(serviceDocAttribute.SupportLink)); } } bodyXml.Append("</p>"); } } bodyXml.AppendFormat("<p class=\"intro\"><strong>Method:</strong> {0}</p>", OperationDescriptionUtilites.GetMethod(operationDescription)); string uriTemplate = OperationDescriptionUtilites.GetUriTemplate(operationDescription); uriTemplate = String.Format("{0}/{1}", BaseUri.AbsoluteUri, uriTemplate); uriTemplate = HttpUtility.HtmlEncode(uriTemplate); bodyXml.AppendFormat("<p class=\"intro\"><strong>URI Template:</strong> {0}</p>", uriTemplate); string requestFormat = OperationDescriptionUtilites.GetRequestFormat(operationDescription); if (!String.IsNullOrEmpty(requestFormat)) { bodyXml.AppendFormat("<p class=\"intro\"><strong>Request Format:</strong> {0}</p>", requestFormat); } string requestExample = GetRequestExample(operationDescription); FormatCodeBlock(ref requestExample); if (OperationDescriptionUtilites.GetResponseFormat(operationDescription) != "Json") { bodyXml.AppendFormat("<p class=\"intro\"><strong>Request Example (<a href=\"./docs/request/schema\">schema</a>):</strong> <br/>"); } else { bodyXml.AppendFormat("<p class=\"intro\"><strong>Request Example:</strong> <br/>"); } bodyXml.AppendLine(requestExample); bodyXml.Append("</p>"); bodyXml.AppendFormat("<p class=\"intro\"><strong>Response Format:</strong> {0}</p>", OperationDescriptionUtilites.GetResponseFormat(operationDescription)); string responseExample = GetResponseExample(operationDescription); FormatCodeBlock(ref responseExample); if (OperationDescriptionUtilites.GetResponseFormat(operationDescription) != "Json") { bodyXml.AppendFormat("<p class=\"intro\"><strong>Response Example (<a href=\"./docs/response/schema\">schema</a>):</strong><br/>"); } else { bodyXml.AppendFormat("<p class=\"intro\"><strong>Response Example:</strong> <br/>"); } bodyXml.AppendLine(responseExample); bodyXml.AppendLine("</p>"); return(bodyXml.ToString()); }