Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }