private void GetMethodsFromChildResources(EndPoint resource, string url, ControllerObject parentController, IDictionary <string, Parameter> parentUriParameters) { if (resource == null) { return; } var fullUrl = resource.Path; var methods = webApiMethodsGenerator.GetMethods(resource, fullUrl, parentController, parentController.Name, parentUriParameters, modelsNamespace); foreach (var method in methods) { parentController.Methods.Add(method); } GetInheritedUriParams(parentUriParameters, resource); //GetMethodsFromChildResources(resource.Resources, fullUrl, parentController, parentUriParameters); }
private ControllerObject CreateControllerAndAddMethods(IList <ControllerObject> classes, ICollection <string> classesNames, IDictionary <string, ControllerObject> classesObjectsRegistry, EndPoint resource, string fullUrl, IDictionary <string, Parameter> parentUriParameters) { var controller = new ControllerObject { Name = GetUniqueObjectName(resource, null), PrefixUri = UrlGeneratorHelper.FixControllerRoutePrefix(fullUrl), Description = resource.Description, }; var methods = webApiMethodsGenerator.GetMethods(resource, fullUrl, controller, controller.Name, parentUriParameters, modelsNamespace); foreach (var method in methods) { controller.Methods.Add(method); } classesNames.Add(controller.Name); classes.Add(controller); classesObjectsRegistry.Add(CalculateClassKey(fullUrl), controller); return(controller); }
private void GetControllers(IList <ControllerObject> classes, ICollection <string> classesNames, IDictionary <string, ControllerObject> classesObjectsRegistry, IDictionary <string, Parameter> parentUriParameters) { var rootController = new ControllerObject { Name = "Home", PrefixUri = "/" }; foreach (var resource in raml.WebApi.EndPoints) { if (resource == null) { continue; } var fullUrl = resource.Path; var isParentController = fullUrl.Count(u => u == '/') == 1; if (isParentController) { CreateControllerAndAddMethods(classes, classesNames, classesObjectsRegistry, resource, fullUrl, parentUriParameters); } else { var parentController = classes.FirstOrDefault(c => c.PrefixUri.StartsWith("/") ? resource.Path.StartsWith(c.PrefixUri) : resource.Path.StartsWith("/" + c.PrefixUri)); if (parentController != null) { GetMethodsFromChildResources(resource, fullUrl, parentController, parentUriParameters); } else { CreateControllerAndAddMethods(classes, classesNames, classesObjectsRegistry, resource, fullUrl, parentUriParameters); } } } }
private void AddMethodsToRootController(IList <ControllerObject> classes, ICollection <string> classesNames, IDictionary <string, ControllerObject> classesObjectsRegistry, EndPoint resource, string fullUrl, ControllerObject rootController, IDictionary <string, Parameter> parentUriParameters) { var generatedMethods = webApiMethodsGenerator.GetMethods(resource, fullUrl, rootController, rootController.Name, parentUriParameters, modelsNamespace); foreach (var method in generatedMethods) { rootController.Methods.Add(method); } classesNames.Add(rootController.Name); classesObjectsRegistry.Add(CalculateClassKey("/"), rootController); classes.Add(rootController); }