Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
 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);
        }
Exemplo n.º 6
0
        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);
                }
            }
        }