private void ParseResponses(KeyValuePair <string, ResourceType> type, Verb verb) { if (verb.Responses == null) { return; } foreach (var response in verb.Responses.Where(response => response != null)) { var name = Enum.GetName(typeof(VerbType), verb.Type); if (name == null) { continue; } var key = type.Key + "-" + name.ToLower() + ParserHelpers.GetStatusCode(response.Code) + ResponseContentSuffix; if (response.Body == null || !response.Body.Any(b => b.Value != null && !string.IsNullOrWhiteSpace(b.Value.Schema))) { continue; } var mimeType = GeneratorServiceHelper.GetMimeType(response); var obj = objectParser.ParseObject(key, mimeType.Schema, schemaResponseObjects, warnings, enums, schemaRequestObjects, schemaObjects, targetNamespace); AddObjectToObjectCollectionOrLink(obj, key, schemaResponseObjects, schemaObjects); } }
private void ParseResponses(IDictionary <string, ApiObject> objects, KeyValuePair <string, ResourceType> type, Verb verb) { if (verb.Responses == null) { return; } foreach (var response in verb.Responses.Where(response => response != null)) { var name = Enum.GetName(typeof(VerbType), verb.Type); if (name == null) { continue; } var key = type.Key + "-" + name.ToLower() + ParserHelpers.GetStatusCode(response.Code) + ResponseContentSuffix; if (response.Body == null || !response.Body.Any(b => b.Value != null && !string.IsNullOrWhiteSpace(b.Value.Schema))) { continue; } var mimeType = GeneratorServiceHelper.GetMimeType(response); var obj = objectParser.ParseObject(key, mimeType.Schema, objects, warnings); // Avoid duplicated keys and names if (obj != null && !objects.ContainsKey(key) && objects.All(o => o.Value.Name != obj.Name) && obj.Properties.Any()) { objects.Add(key, obj); } } }
private string GetReturnTypeFromResponse(Method method, Resource resource, MimeType mimeType, string key, string responseCode, IDictionary <string, ApiObject> schemaResponseObjects) { var returnType = GetNamedReturnType(method, resource, mimeType, schemaResponseObjects); if (!string.IsNullOrWhiteSpace(returnType)) { return(returnType); } returnType = GetReturnTypeFromResourceType(method, resource, key, responseCode, schemaResponseObjects); if (!string.IsNullOrWhiteSpace(returnType)) { return(returnType); } if (schemaResponseObjects.ContainsKey(key) && schemaResponseObjects[key].Properties.Any()) { return(schemaResponseObjects[key].IsArray ? schemaResponseObjects[key].Name + "[]" : schemaResponseObjects[key].Name); } var responseKey = key + ParserHelpers.GetStatusCode(responseCode) + GeneratorServiceBase.ResponseContentSuffix; if (schemaResponseObjects.ContainsKey(responseKey) && schemaResponseObjects[responseKey].Properties.Any()) { return(schemaResponseObjects[responseKey].IsArray ? schemaResponseObjects[responseKey].Name + "[]" : schemaResponseObjects[responseKey].Name); } return(returnType); }
public static ApiObject GetHeadersObject(ClientGeneratorMethod generatedMethod, Response response, string objectName) { return(new ApiObject { Name = generatedMethod.Name + objectName + ParserHelpers.GetStatusCode(response.Code) + "ResponseHeader", Properties = ParseHeaders(response) }); }
public string GetResponseType(Method method, Resource resource, MimeType mimeType, string key, string responseCode, string fullUrl) { string returnType = null; if (mimeType.InlineType == null) { returnType = GetNamedReturnType(method, resource, mimeType, fullUrl); if (!string.IsNullOrWhiteSpace(returnType)) { return(returnType); } returnType = GetReturnTypeFromResourceType(method, resource, key, responseCode, fullUrl); if (!string.IsNullOrWhiteSpace(returnType)) { return(returnType); } } if (ResponseHasKey(key)) { return(GetReturnTypeFromResponseByKey(key)); } var responseKey = key + ParserHelpers.GetStatusCode(responseCode) + GeneratorServiceBase.ResponseContentSuffix; if (ResponseHasKey(responseKey)) { return(GetReturnTypeFromResponseByKey(responseKey)); } if (linkKeysWithObjectNames.ContainsKey(key)) { var linkedKey = linkKeysWithObjectNames[key]; if (ResponseHasKey(linkedKey)) { return(GetReturnTypeFromResponseByKey(linkedKey)); } } if (linkKeysWithObjectNames.ContainsKey(responseKey)) { var linkedKey = linkKeysWithObjectNames[responseKey]; if (ResponseHasKey(linkedKey)) { return(GetReturnTypeFromResponseByKey(linkedKey)); } } returnType = DecodeResponseRaml1Type(returnType); return(returnType); }
private void ParseResourceResponsesRecursively(IEnumerable <Resource> resources, string fullUrl) { foreach (var resource in resources) { if (resource.Methods != null) { foreach (var method in resource.Methods.Where(m => m.Responses != null && m.Responses.Any())) { foreach (var response in method.Responses.Where(r => r.Body != null && r.Body.Any())) { foreach (var kv in response.Body.Where(b => b.Value.Schema != null)) { var key = GeneratorServiceHelper.GetKeyForResource(method, resource, fullUrl) + ParserHelpers.GetStatusCode(response.Code) + ResponseContentSuffix; if (schemaResponseObjects.ContainsKey(key)) { continue; } var obj = objectParser.ParseObject(key, kv.Value.Schema, schemaResponseObjects, warnings, enums, schemaRequestObjects, schemaObjects, targetNamespace); AddObjectToObjectCollectionOrLink(obj, key, schemaResponseObjects, schemaObjects); } foreach (var kv in response.Body.Where(b => b.Value.InlineType != null)) { var key = GeneratorServiceHelper.GetKeyForResource(method, resource, fullUrl) + ParserHelpers.GetStatusCode(response.Code) + ResponseContentSuffix; if (schemaResponseObjects.ContainsKey(key)) { continue; } var obj = raml1TypesParser.ParseInline(key, kv.Value.InlineType, schemaResponseObjects); AddObjectToObjectCollectionOrLink(obj, key, schemaResponseObjects, schemaObjects); } } } } if (resource.Resources != null) { ParseResourceResponsesRecursively(resource.Resources, fullUrl + resource.RelativeUri); } } }
private void ParseResourceResponsesRecursively(IDictionary <string, ApiObject> objects, IEnumerable <Resource> resources) { foreach (var resource in resources) { if (resource.Methods != null) { foreach (var method in resource.Methods.Where(m => m.Responses != null && m.Responses.Any())) { foreach (var response in method.Responses.Where(r => r.Body != null && r.Body.Any())) { foreach (var kv in response.Body.Where(b => b.Value.Schema != null)) { var key = GeneratorServiceHelper.GetKeyForResource(method, resource) + ParserHelpers.GetStatusCode(response.Code) + ResponseContentSuffix; if (objects.ContainsKey(key)) { continue; } var obj = objectParser.ParseObject(key, kv.Value.Schema, objects, warnings); // Avoid duplicated names and objects without properties if (obj != null && objects.All(o => o.Value.Name != obj.Name) && obj.Properties.Any()) { objects.Add(key, obj); } } } } } if (resource.Resources != null) { ParseResourceResponsesRecursively(objects, resource.Resources); } } }