示例#1
0
        /// <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)));
            }
        }
示例#2
0
        /// <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());
        }