public void AddExpectedResponse(string rawResponse, CodeBlockAnnotation annotation) { if (this.ExpectedResponse != null) { throw new InvalidOperationException("An expected response was already added to this request."); } this.ExpectedResponse = rawResponse; this.ExpectedResponseMetadata = annotation; }
public static MethodDefinition FromRequest(string request, CodeBlockAnnotation annotation, DocFile source, IssueLogger issues) { var method = new MethodDefinition { Request = request, RequestMetadata = annotation, Identifier = annotation.MethodName?.FirstOrDefault(), SourceFile = source, RequiredScopes = annotation.RequiredScopes, RequiredApiVersions = annotation.RequiredApiVersions, RequiredTags = annotation.RequiredTags }; method.Title = method.Identifier; var methodIssues = issues.For(method.Identifier); try { HttpRequest requestExample; HttpParser.TryParseHttpRequest(request, out requestExample, methodIssues); if (!string.IsNullOrEmpty(requestExample?.Body) && requestExample.Body.Contains("{")) { if (string.IsNullOrEmpty(annotation.ResourceType)) { annotation.ResourceType = "requestBodyResourceFor." + method.Identifier; } var body = requestExample.Body; if (requestExample.ContentType != null && requestExample.ContentType.StartsWith(MimeTypeMultipartRelated, StringComparison.OrdinalIgnoreCase)) { var multipartContent = new MultipartMime.MultipartMimeContent(requestExample.ContentType, body); var part = multipartContent.PartWithId("<metadata>"); body = part.Body; } var requestBodyResource = new JsonResourceDefinition(annotation, body, source, methodIssues); if (requestBodyResource.Parameters != null) { method.RequestBodyParameters.AddRange(requestBodyResource.Parameters); } } } catch (Exception ex) { methodIssues.Warning(ValidationErrorCode.HttpParserError, "Unable to parse request body resource", ex); } return(method); }
public ExampleDefinition(CodeBlockAnnotation annotation, string content, DocFile source, string language) { if (string.IsNullOrEmpty(language)) { throw new ArgumentNullException("language"); } this.Metadata = annotation; this.SourceExample = content; this.SourceFile = source; switch (language.ToLower()) { case "json": { this.Language = CodeLanguage.Json; try { object inputObject = JsonConvert.DeserializeObject(content); this.ParsedExample = JsonConvert.SerializeObject(inputObject, Formatting.Indented); } catch (Exception ex) { Logging.LogMessage( new ValidationError( ValidationErrorCode.JsonParserException, source.DisplayName, "Error parsing resource definition: {0}", ex.Message)); } break; } case "http": this.ParsedExample = this.SourceExample; this.Language = CodeLanguage.Http; break; default: this.Language = CodeLanguage.Unsupported; Logging.LogMessage( new ValidationError( ValidationErrorCode.UnsupportedLanguage, source.DisplayName, "The code language for this example is unuspported: {0}", language)); break; } }
protected ResourceDefinition(CodeBlockAnnotation sourceAnnotation, string content, DocFile source, string language) { this.sourceAnnotation = sourceAnnotation; this.OriginalExampleText = content; this.SourceFile = source; this.Abstract = sourceAnnotation.Abstract; this.Name = sourceAnnotation.ResourceType; this.NameAka = sourceAnnotation.ResourceTypeAka; this.KeyPropertyName = sourceAnnotation.KeyPropertyName; this.BaseType = sourceAnnotation.BaseType; if (string.IsNullOrEmpty(sourceAnnotation.ResourceType)) { Logging.LogMessage( new ValidationError( ValidationErrorCode.MissingResourceName, source.DisplayName, "Resource definition is missing Name value")); } }
public SamplesDefinition(CodeBlockAnnotation annotation, string content) { this.Samples = content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); }
public JsonResourceDefinition(CodeBlockAnnotation sourceAnnotation, string json, DocFile source, IssueLogger issues) : base(sourceAnnotation, json, source, "json") { ParseJsonInput(issues); }
public void AddSimulatedResponse(string rawResponse, CodeBlockAnnotation annotation) { this.ActualResponse = rawResponse; }