protected void SendCsProxyCode(IRequest request, IResponse response) { string appName = AppConf.AppNameFromUri(request.Url, BamConf.AppConfigs); string defaultBaseAddress = ServiceProxySystem.GetBaseAddress(request.Url); string nameSpace = request.QueryString["namespace"] ?? "ServiceProxyClients"; string contractNameSpace = "{0}.Contracts"._Format(nameSpace); Incubator combined = new Incubator(); combined.CopyFrom(CommonServiceProvider); if (AppServiceProviders.ContainsKey(appName)) { Incubator appProviders = AppServiceProviders[appName]; combined.CopyFrom(appProviders, true); } string[] classNames = request.QueryString["classes"] == null ? combined.ClassNames : request.QueryString["classes"].DelimitSplit(",", ";"); StringBuilder csharpCode = ServiceProxySystem.GenerateCSharpProxyCode(defaultBaseAddress, classNames, nameSpace, contractNameSpace, combined, Logger, request.UserHostAddress.StartsWith("127.0.0.1")); response.Headers.Add("Content-Disposition", "attachment;filename=" + nameSpace + ".cs"); response.Headers.Add("Content-Type", "text/plain"); byte[] data = Encoding.UTF8.GetBytes(csharpCode.ToString()); response.OutputStream.Write(data, 0, data.Length); }
public override bool TryRespond(IHttpContext context) { try { RequestWrapper request = context.Request as RequestWrapper; ResponseWrapper response = context.Response as ResponseWrapper; string appName = AppConf.AppNameFromUri(request.Url, BamConf.AppConfigs); bool responded = false; if (request != null && response != null) { string path = request.Url.AbsolutePath.ToLowerInvariant(); if (path.StartsWith("/{0}"._Format(ResponderSignificantName.ToLowerInvariant()))) { if (path.StartsWith(MethodFormPrefixFormat._Format(ResponderSignificantName).ToLowerInvariant())) { responded = SendMethodForm(context, appName); } else { responded = SendProxyCode(request, response, path); } } else { ExecutionRequest execRequest = CreateExecutionRequest(context, appName); responded = execRequest.Execute(); if (responded) { RenderResult(appName, path, execRequest); } } } if (responded) { OnResponded(context); } else { OnNotResponded(context); } return(responded); } catch (Exception ex) { Logger.AddEntry("An error occurred in {0}.{1}: {2}", ex, this.GetType().Name, MethodBase.GetCurrentMethod().Name, ex.Message); OnNotResponded(context); return(false); } }
protected void SendJsProxyScript(IRequest request, IResponse response) { string appName = AppConf.AppNameFromUri(request.Url, BamConf.AppConfigs); bool includeLocalMethods = request.UserHostAddress.StartsWith("127.0.0.1"); StringBuilder script = ServiceProxySystem.GenerateJsProxyScript(CommonServiceProvider, CommonServiceProvider.ClassNames, includeLocalMethods); if (AppServiceProviders.ContainsKey(appName)) { Incubator appProviders = AppServiceProviders[appName]; script.AppendLine(ServiceProxySystem.GenerateJsProxyScript(appProviders, appProviders.ClassNames, includeLocalMethods).ToString()); } response.ContentType = "application/javascript"; byte[] data = Encoding.UTF8.GetBytes(script.ToString()); response.OutputStream.Write(data, 0, data.Length); }
public override bool TryRespond(IHttpContext context) { if (!this.IsInitialized) { Initialize(); } IRequest request = context.Request; IResponse response = context.Response; bool handled = false; string path = request.Url.AbsolutePath; string appName = AppConf.AppNameFromUri(request.Url, BamConf.AppConfigs); string[] chunks = path.DelimitSplit("/"); HttpArgs queryString = new HttpArgs(request.Url.Query); bool min = !string.IsNullOrEmpty(queryString["min"]); if (chunks[0].ToLowerInvariant().Equals("dao") && chunks.Length > 1) { string method = chunks[1]; if (_dynamicResponders.ContainsKey(method)) { response.ContentType = GetContentTypeForExtension(".js"); string script = _dynamicResponders[method](appName, min); SendResponse(response, script); handled = true; OnResponded(context); } else { handled = TryExecuteCrudRequest(chunks, context, handled, appName); OnNotResponded(context); } } return(handled); }
public override bool TryRespond(IHttpContext context) { if (!IsInitialized) { Initialize(); } IRequest request = context.Request; IResponse response = context.Response; Session.Init(context); SecureSession.Init(context); bool handled = false; string path = request.Url.AbsolutePath; string commonPath = Path.Combine("/common", path.TruncateFront(1)); byte[] content = new byte[] { }; string appName = AppConf.AppNameFromUri(request.Url, BamConf.AppConfigs); string[] checkedPaths = new string[] { }; if (AppContentResponders.ContainsKey(appName)) { handled = AppContentResponders[appName].TryRespond(context, out checkedPaths); } if (!handled && !ShouldIgnore(path)) { string readFileFromPath; bool exists; exists = ServerRoot.FileExists(path, out readFileFromPath); if (!exists) { exists = ServerRoot.FileExists(commonPath, out readFileFromPath); } if (exists) { string ext = Path.GetExtension(readFileFromPath); if (FileCachesByExtension.ContainsKey(ext)) { FileCache cache = FileCachesByExtension[ext]; if (ShouldZip(request)) { SetGzipContentEncodingHeader(response); content = cache.GetZippedContent(readFileFromPath); } else { content = cache.GetContent(readFileFromPath); } handled = true; } } if (handled) { SetContentType(response, path); SendResponse(response, content); OnResponded(context); } else { LogContentNotFound(path, appName, checkedPaths); OnNotResponded(context); } } return(handled); }