Exemplo n.º 1
0
        private ClientGeneratorMethod BuildClassMethod(string url, Method method, Resource resource)
        {
            var parentUrl = UrlGeneratorHelper.GetParentUri(url, resource.RelativeUri);

            var generatedMethod = new ClientGeneratorMethod
            {
                Name        = NetNamingMapper.GetMethodName(method.Verb ?? "Get" + resource.RelativeUri),
                ReturnType  = GetReturnType(GeneratorServiceHelper.GetKeyForResource(method, resource, parentUrl), method, resource, url),
                Parameter   = GetParameter(GeneratorServiceHelper.GetKeyForResource(method, resource, parentUrl), method, resource, url),
                Comment     = GetComment(resource, method, url),
                Url         = url,
                Verb        = NetNamingMapper.Capitalize(method.Verb),
                Parent      = null,
                UseSecurity =
                    raml.SecuredBy != null && raml.SecuredBy.Any() ||
                    resource.Methods.Any(m => m.Verb == method.Verb && m.SecuredBy != null && m.SecuredBy.Any()),
                RequestContentTypes  = method.Body.Keys.ToArray(),
                ResponseContentTypes = method.Responses != null?method.Responses.Where(r => r.Body != null).SelectMany(r => r.Body.Keys).ToArray() : new string[0]
            };

            // look in traits

            // look in resource types

            return(generatedMethod);
        }
        private void GetRequestObjects()
        {
            if (raml.WebApi == null)
            {
                return;
            }

            foreach (var endpoint in raml.WebApi.EndPoints)
            {
                foreach (var operation in endpoint.Operations.Where(o => o.Request != null && o.Request.Payloads.Any()))
                {
                    var payloads = operation.Request.Payloads; //.Where(p => p.MediaType.Contains("json"));
                    foreach (var payload in payloads)
                    {
                        var id          = Guid.NewGuid();
                        var newElements = new ObjectParser().ParseObject(id, GeneratorServiceHelper.GetKeyForResource(operation, endpoint), payload.Schema,
                                                                         schemaObjects, warnings, enums);

                        foreach (var el in newElements.Item1)
                        {
                            AddElement(el, schemaRequestObjects);
                        }

                        AddNewEnums(newElements.Item2);
                    }
                }
            }
        }
Exemplo n.º 3
0
        private ClientGeneratorMethod BuildClassMethod(string url, Operation operation, RAML.Parser.Model.EndPoint resource, string modelsNamespace)
        {
            var parentUrl = UrlGeneratorHelper.GetParentUri(url, resource.Path);

            //TODO: check
            var responseContentTypes = operation.Responses != null?
                                       operation.Responses.Where(r => r.Payloads != null).SelectMany(r => r.Payloads).Select(p => p.MediaType).ToArray()
                                           : new string[0];

            var generatedMethod = new ClientGeneratorMethod
            {
                ModelsNamespace      = modelsNamespace,
                Name                 = NetNamingMapper.GetMethodName(operation.Method ?? "Get" + resource.Path),
                ReturnType           = GetReturnType(operation, resource, url),
                Parameter            = GetParameter(GeneratorServiceHelper.GetKeyForResource(operation, resource), operation, resource, url),
                Comment              = GetComment(resource, operation, url),
                Url                  = url,
                Verb                 = NetNamingMapper.Capitalize(operation.Method),
                Parent               = null,
                UseSecurity          = resource.Operations.Any(m => m.Method == operation.Method && m.Security != null && m.Security.Any()),
                RequestContentTypes  = operation.ContentType,
                ResponseContentTypes = responseContentTypes
            };

            // look in traits

            // look in resource types

            return(generatedMethod);
        }
        private IDictionary <string, ApiObject> GetRequestObjects()
        {
            var objects = new Dictionary <string, ApiObject>();

            foreach (var endpoint in raml.WebApi.EndPoints)
            {
                foreach (var operation in endpoint.Operations)
                {
                    var key = GeneratorServiceHelper.GetKeyForResource(operation, endpoint);
                    if (operation.Request != null && operation.Request.Payloads != null)
                    {
                        GetShapes(key, objects, operation.Request.Payloads);
                    }
                }
            }
            return(objects);
        }
Exemplo n.º 5
0
        private ClientGeneratorMethod BuildClassMethod(string url, Method method, Resource resource, IDictionary <string, ApiObject> schemaRequestObjects, IDictionary <string, ApiObject> schemaResponseObjects)
        {
            var generatedMethod = new ClientGeneratorMethod
            {
                Name        = NetNamingMapper.GetMethodName(method.Verb ?? "Get" + resource.RelativeUri),
                ReturnType  = GetReturnType(GeneratorServiceHelper.GetKeyForResource(method, resource), method, resource, schemaResponseObjects),
                Parameter   = GetParameter(GeneratorServiceHelper.GetKeyForResource(method, resource), method, resource, schemaRequestObjects),
                Comment     = GetComment(resource, method),
                Url         = url,
                Verb        = NetNamingMapper.Capitalize(method.Verb),
                Parent      = null,
                UseSecurity =
                    raml.SecuredBy != null && raml.SecuredBy.Any() ||
                    resource.Methods.Any(m => m.Verb == method.Verb && m.SecuredBy != null && m.SecuredBy.Any())
            };

            return(generatedMethod);
        }