public WebApiGeneratorModel BuildModel() { classesNames = new Collection <string>(); warnings = new Dictionary <string, string>(); enums = new Dictionary <string, ApiEnum>(); //new RamlTypeParser(raml.Shapes, schemaObjects, ns, enums, warnings).Parse(); ParseSchemas(); GetRequestObjects(); schemaResponseObjects = GetResponseObjects(); //CleanProperties(schemaObjects); //CleanProperties(schemaRequestObjects); //CleanProperties(schemaResponseObjects); HandleScalarTypes(); if (raml.WebApi == null) { return(new WebApiGeneratorModel { ControllersNamespace = controllersNamespace, ModelsNamespace = modelsNamespace, SchemaObjects = schemaObjects, RequestObjects = schemaRequestObjects, ResponseObjects = schemaResponseObjects, Warnings = warnings, Enums = Enums }); } webApiMethodsGenerator = new WebApiMethodsGenerator(raml, schemaResponseObjects, schemaRequestObjects, linkKeysWithObjectNames, schemaObjects, enums); var controllers = GetControllers().ToArray(); apiObjectsCleaner = new ApiObjectsCleaner(schemaRequestObjects, schemaResponseObjects, schemaObjects); uriParametersGenerator = new UriParametersGenerator(schemaObjects); CleanNotUsedObjects(controllers); return(new WebApiGeneratorModel { ControllersNamespace = controllersNamespace, ModelsNamespace = modelsNamespace, Controllers = controllers, SchemaObjects = schemaObjects, RequestObjects = schemaRequestObjects, ResponseObjects = schemaResponseObjects, Warnings = warnings, Enums = Enums, ApiVersion = raml.WebApi.Version }); }
public void Should_Build_Uri_Parameters_When_Custom_Scalars() { var uriParameters = new Dictionary <string, Parameter> { { "id", new Parameter { DisplayName = "id", Type = "CustomInt" } } }; var methods = new List <Method> { new Method { Verb = "get" } }; var resource = new Resource { RelativeUri = "/abc{id}", Methods = methods, UriParameters = uriParameters }; var schemaObjects = new Dictionary <string, ApiObject>(); schemaObjects.Add("CustomInt", new ApiObject { Type = "CustomInt", Name = "CustomInt", Properties = new[] { new Property { Name = "value", Type = "int" } } }); var generator = new UriParametersGenerator(schemaObjects); var uriParameterObjects = new Dictionary <string, ApiObject>(); var generatorMethod = new ClientGeneratorMethod { Name = "MethodOne" }; generator.Generate(resource, "/movies/abc{id}", generatorMethod, uriParameterObjects, new Dictionary <string, Parameter>()); Assert.AreEqual("CustomInt", generatorMethod.UriParameters.First().Type); }
public void Should_Build_Uri_Parameters() { var uriParameters = new Dictionary <string, Parameter> { { "code", new Parameter { DisplayName = "code", Type = "integer" } } }; var methods = new List <Method> { new Method { Verb = "get" } }; var resource = new Resource { RelativeUri = "/abc{token}{code}", Methods = methods, UriParameters = uriParameters }; var generator = new UriParametersGenerator(); var uriParameterObjects = new Dictionary <string, ApiObject>(); var generatorMethod = new ClientGeneratorMethod { Name = "MethodOne" }; generator.Generate(resource, "/movies/{bucket}/abc{token}{code}", generatorMethod, uriParameterObjects, new Dictionary <string, Parameter>()); Assert.AreEqual(1, uriParameterObjects.Count); Assert.AreEqual(3, generatorMethod.UriParameters.Count()); Assert.AreEqual(uriParameterObjects.First().Value.Name, generatorMethod.UriParametersType); }
public void Should_Build_Uri_Parameters() { var uriParameters = new Dictionary<string, Parameter> { { "code", new Parameter { DisplayName = "code", Type = "integer" } } }; var methods = new List<Method> { new Method { Verb = "get" } }; var resource = new Resource { RelativeUri = "/abc{token}{code}", Methods = methods, UriParameters = uriParameters }; var generator = new UriParametersGenerator(); var uriParameterObjects = new Dictionary<string, ApiObject>(); var generatorMethod = new ClientGeneratorMethod { Name = "MethodOne"}; generator.Generate(resource, "/movies/{bucket}/abc{token}{code}", generatorMethod, uriParameterObjects); Assert.AreEqual(1, uriParameterObjects.Count); Assert.AreEqual(3, generatorMethod.UriParameters.Count()); Assert.AreEqual(uriParameterObjects.First().Value.Name, generatorMethod.UriParametersType); }
public ClientGeneratorModel BuildModel() { warnings = new Dictionary <string, string>(); classesNames = new Collection <string>(); classes = new Collection <ClassObject>(); classesObjectsRegistry = new Dictionary <string, ClassObject>(); uriParameterObjects = new Dictionary <string, ApiObject>(); enums = new Dictionary <string, ApiEnum>(); //new RamlTypeParser(raml.Shapes, schemaObjects, ns, enums, warnings).Parse(); ParseSchemas(); schemaRequestObjects = GetRequestObjects(); schemaResponseObjects = GetResponseObjects(); FixEnumNamesClashing(); //FixTypes(schemaObjects.Values); //FixTypes(schemaRequestObjects.Values); //FixTypes(schemaResponseObjects.Values); ReconstructInheritance(); CleanProperties(schemaObjects); CleanProperties(schemaRequestObjects); CleanProperties(schemaResponseObjects); HandleScalarTypes(); clientMethodsGenerator = new ClientMethodsGenerator(raml, schemaResponseObjects, uriParameterObjects, queryObjects, headerObjects, responseHeadersObjects, schemaRequestObjects, linkKeysWithObjectNames, schemaObjects, enums); var parentClass = new ClassObject { Name = rootClassName, Description = "Main class for grouping root resources. Nested resources are defined as properties. The constructor can optionally receive an URL and HttpClient instance to override the default ones." }; classesNames.Add(parentClass.Name); classes.Add(parentClass); classesObjectsRegistry.Add(rootClassName, parentClass); var classObjects = GetClasses(raml.WebApi.EndPoints, null, parentClass, null, new Dictionary <string, Parameter>()); SetClassesProperties(classesObjectsRegistry[rootClassName]); var apiRequestObjects = apiRequestGenerator.Generate(classObjects); var apiResponseObjects = apiResponseGenerator.Generate(classObjects); //apiObjectsCleaner = new ApiObjectsCleaner(schemaRequestObjects, schemaResponseObjects, schemaObjects); uriParametersGenerator = new UriParametersGenerator(schemaObjects); //CleanNotUsedObjects(classObjects); return(new ClientGeneratorModel { BaseNamespace = baseNamespace, ModelsNamespace = modelsNamespace, SchemaObjects = schemaObjects, RequestObjects = schemaRequestObjects, ResponseObjects = schemaResponseObjects, QueryObjects = queryObjects, HeaderObjects = headerObjects, ApiRequestObjects = apiRequestObjects.ToArray(), ApiResponseObjects = apiResponseObjects.ToArray(), ResponseHeaderObjects = responseHeadersObjects, BaseUriParameters = ParametersMapper.Map(raml.WebApi.BaseUriParameters).ToArray(), BaseUri = raml.WebApi.Servers.Any() ? raml.WebApi.Servers.First() : null, Security = SecurityParser.GetSecurity(raml.WebApi), Version = raml.WebApi.Version, Warnings = warnings, Classes = classObjects.Where(c => c.Name != rootClassName).ToArray(), Root = classObjects.First(c => c.Name == rootClassName), UriParameterObjects = uriParameterObjects, Enums = Enums.ToArray() }); }