public HttpResponseMessage Get(string name) { //TODO: Define a special route for this as '/api/serviceproxies/serviceName' ? var controllerInfo = DynamicApiControllerManager.FindServiceController(name.ToPascalCase()); if (controllerInfo == null) { throw new HttpException(404, "There is no such a service: " + name); //TODO: What to do if can not find? } //TODO: Caching script generation! var script = new DynamicScriptGenerator().GenerateFor(controllerInfo); HttpResponseMessage response = Request.CreateResponse(System.Net.HttpStatusCode.OK, script, new PlainTextFormatter()); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-javascript"); return(response); }
/// <summary> /// This method is called by Web API system to select the controller for this request. /// </summary> /// <param name="request">Request object</param> /// <returns>The controller to be used</returns> public override HttpControllerDescriptor SelectController(HttpRequestMessage request) { if (request != null) { var routeData = request.GetRouteData(); //routeData.Route. if (routeData != null) { string serviceName; if (routeData.Values.TryGetValue("serviceName", out serviceName)) { var controllerInfo = DynamicApiControllerManager.FindServiceController(serviceName.ToPascalCase()); if (controllerInfo != null) { var desc = new HttpControllerDescriptor(_configuration, controllerInfo.Name, controllerInfo.Type); desc.Properties["AbpDynamicApiControllerInfo"] = controllerInfo; return(desc); } } } } return(base.SelectController(request)); }