Ejemplo n.º 1
0
            public void WillSetResponseFilterIfJustCssProcessingIsDisabledFromConfig()
            {
                var config = new Mock <IRRConfiguration>();

                config.Setup(x => x.SpriteVirtualPath).Returns("/Virtual");
                config.Setup(x => x.CssProcessingDisabled).Returns(true);
                var context = new Mock <HttpContextBase>();

                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Server).Returns(new Mock <HttpServerUtilityBase>().Object);
                context.Setup(x => x.Request.RawUrl).Returns("/NotVirtual/blah");
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                    x.For <IHostingEnvironmentWrapper>().Use(new Mock <IHostingEnvironmentWrapper>().Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                context.VerifySet(x => x.Response.Filter = It.IsAny <Stream>(), Times.Once());
                RRContainer.Current = null;
            }
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            if (filterContext.Result is ViewResult)
            {
                ResponseFilter responseFilter = new ResponseFilter(filterContext.HttpContext.Response.Filter, filterContext.HttpContext);

                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<div>right after the h1</div>",
                //        ResponseInsertMode.InsertAfter, "h1"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<div>something before the end of the body</div>",
                //        ResponseInsertMode.AppendTo, "body"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<div>something after the beginning of the body</div>",
                //        ResponseInsertMode.PrependTo, "body"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<h4>some content after the #page div</h4><div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean quis metus ac dui bibendum fermentum. Vestibulum id nulla non diam scelerisque eleifend. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam nec justo et eros accumsan vestibulum. Sed et nisi libero. Nulla vel cursus sapien. In lorem magna, venenatis eu iaculis a, viverra ut sapien. Donec fringilla lacus ac neque fermentum dapibus. Nulla id auctor erat. Phasellus in ullamcorper mauris. Morbi sed convallis magna. Aenean consectetur arcu eget tellus imperdiet malesuada. Morbi dignissim convallis velit. Sed turpis tellus, sodales luctus volutpat id, feugiat ut nisi. Nunc malesuada egestas neque, quis molestie odio interdum a.</div>",
                //        ResponseInsertMode.InsertAfter, "div#page"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<div class=\"sub\">something before the archives</div>",
                //        ResponseInsertMode.InsertBefore, ".archives"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<a href=\"#\">replaced archive link</a>",
                //        ResponseInsertMode.ReplaceWith, ".archives li a"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert(null,
                //        ResponseInsertMode.Remove, "ul.posts .more"));
                //responseFilter.Inserts.Add(
                //    new ResponseInsert("<span class=\"awesome\">{0}</span>",
                //        ResponseInsertMode.Wrap, "input,textarea"));

                filterContext.HttpContext.Response.Filter = responseFilter;
            }
        }
Ejemplo n.º 3
0
            public void WillDisableOutputCachingIfRRFilterQSIsDisabled()
            {
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.ResourceVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Request.RawUrl).Returns("/NotVirtual/blah");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection {
                    { "RRFilter", "disabled" }
                });
                context.Setup(x => x.Server).Returns(new Mock <HttpServerUtilityBase>().Object);
                var cache = new Mock <HttpCachePolicyBase>();

                context.Setup(x => x.Response.Cache).Returns(cache.Object);
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                cache.Verify(x => x.SetCacheability(HttpCacheability.Private), Times.Once());
                RRContainer.Current = null;
            }
Ejemplo n.º 4
0
            public void WillSetContextKeyIfNotSetBefore()
            {
                RRContainer.Current = null;
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.SpriteVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("type");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Server).Returns(new Mock <HttpServerUtilityBase>().Object);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.RawUrl).Returns("/content/blah");
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <IHostingEnvironmentWrapper>().Use(new Mock <IHostingEnvironmentWrapper>().Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                context.Verify(x => x.Items.Add(ResponseFilter.ContextKey, It.IsAny <Object>()), Times.Once());
                RRContainer.Current = null;
            }
Ejemplo n.º 5
0
        public IActionResult List(CommonFilter <string> commonFilter, DateTime?dateFrom, DateTime?dateTo, bool limitOffset = true, int?categoryId = null, int?subCategoryId = null)
        {
            var response = new ResponseFilter <ItemReportViewResponse>();
            var today    = DateTime.Now;

            dateFrom            = dateFrom ?? new DateTime(today.Year, today.Month, 1);
            dateTo              = dateTo ?? new DateTime(today.Year, today.Month + 1, 1).AddDays(-1);
            commonFilter.Filter = string.IsNullOrEmpty(commonFilter.Filter) ? null : $"%{commonFilter.Filter}%";

            using (var connection = Context.Database.GetDbConnection())
            {
                response.Total = connection.Query <int?>(SqlReportItem.SelectCount, new
                {
                    Search        = commonFilter.Filter,
                    From          = dateFrom,
                    To            = dateTo,
                    CategoryId    = categoryId,
                    SubCategoryId = subCategoryId
                }).FirstOrDefault() ?? 0;

                response.Page     = commonFilter.Page;
                response.PageSize = commonFilter.PageSize;

                response.Data = new ItemReportViewResponse
                {
                    ItemReportViews = connection.Query <ItemReportView>(SqlReportItem.SelectList(limitOffset), new
                    {
                        Search        = commonFilter.Filter,
                        From          = dateFrom,
                        To            = dateTo,
                        Limit         = commonFilter.PageSize,
                        Offset        = (commonFilter.Page - 1) * commonFilter.PageSize,
                        CategoryId    = categoryId,
                        SubCategoryId = subCategoryId
                    }).ToList(),

                    ItemReportViewTotal = connection.Query <ItemReportViewTotal>(SqlReportItem.SelectTotal, new
                    {
                        Search        = commonFilter.Filter,
                        From          = dateFrom,
                        To            = dateTo,
                        CategoryId    = categoryId,
                        SubCategoryId = subCategoryId
                    }).FirstOrDefault()
                };
                if (response.Data.ItemReportViews.Any())
                {
                    var images = connection.Query <KeyValuePair <long, string> >(SqlItem.ImageList(response.Data.ItemReportViews
                                                                                                   .Select(s => s.Id).ToList())).ToList();
                    foreach (var item in response.Data.ItemReportViews)
                    {
                        item.ImageLocation =
                            images.Where(w => w.Key == item.Id).Select(s => s.Value).FirstOrDefault() ??
                            Constants.NoImage;
                    }
                }
            }
            return(Json(response));
        }
Ejemplo n.º 6
0
        public void WriteTo(Stream responseStream)
        {
            if (this.FileInfo != null)
            {
                using (var fs = this.FileInfo.OpenRead())
                {
                    fs.WriteTo(responseStream);
                    responseStream.Flush();
                }
                return;
            }

            if (this.ResponseStream != null)
            {
                this.ResponseStream.WriteTo(responseStream);
                responseStream.Flush();
                DisposeStream();

                return;
            }

            if (this.ResponseText != null)
            {
                var bytes = System.Text.Encoding.UTF8.GetBytes(this.ResponseText);
                responseStream.Write(bytes, 0, bytes.Length);
                responseStream.Flush();
                return;
            }

            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException("ResponseFilter");
            }
            if (this.RequestContext == null)
            {
                throw new ArgumentNullException("RequestContext");
            }

            var bytesResponse = this.Response as byte[];

            if (bytesResponse != null)
            {
                responseStream.Write(bytesResponse, 0, bytesResponse.Length);
                return;
            }

            if (View != null)
            {
                RequestContext.SetItem("View", View);
            }
            if (Template != null)
            {
                RequestContext.SetItem("Template", Template);
            }

            RequestContext.SetItem("HttpResult", this);

            ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream);
        }
Ejemplo n.º 7
0
        public void WriteTo(Stream responseStream)
        {
            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException("ResponseFilter");
            }

            ResponseFilter.SerializeToStream(this.ContentType, this.Response, responseStream);
        }
Ejemplo n.º 8
0
        public void OnResultExecuted(ResultExecutedContext filterContext)
        {
            ResponseFilter responseFilter = filterContext.HttpContext.Response.Filter as ResponseFilter;

            if (responseFilter != null)
            {
                UrlHelper urlHelper = new UrlHelper(filterContext.RequestContext);

                foreach (PluginTemplate pluginTemplate in pluginTemplateRegistry)
                {
                    if (pluginTemplate.ForCurrentRequest(new PluginTemplateContext(filterContext)))
                    {
                        PluginTemplate template = pluginTemplate;

                        switch (pluginTemplate.SelectorType)
                        {
                        case PluginTemplateSelectorType.ReplaceWith:
                            responseFilter.Inserts.Add(new ResponseInsert(i => renderPluginTemplate(template, filterContext, template.ModelTarget, i), ResponseInsertMode.ReplaceWith, pluginTemplate.Selector));
                            break;

                        case PluginTemplateSelectorType.InsertBefore:
                            responseFilter.Inserts.Add(new ResponseInsert(i => renderPluginTemplate(template, filterContext, template.ModelTarget, i), ResponseInsertMode.InsertBefore, pluginTemplate.Selector));
                            break;

                        case PluginTemplateSelectorType.InsertAfter:
                            responseFilter.Inserts.Add(new ResponseInsert(i => renderPluginTemplate(template, filterContext, template.ModelTarget, i), ResponseInsertMode.InsertAfter, pluginTemplate.Selector));
                            break;

                        case PluginTemplateSelectorType.PrependTo:
                            responseFilter.Inserts.Add(new ResponseInsert(i => renderPluginTemplate(template, filterContext, template.ModelTarget, i), ResponseInsertMode.PrependTo, pluginTemplate.Selector));
                            break;

                        case PluginTemplateSelectorType.AppendTo:
                            responseFilter.Inserts.Add(new ResponseInsert(i => renderPluginTemplate(template, filterContext, template.ModelTarget, i), ResponseInsertMode.AppendTo, pluginTemplate.Selector));
                            break;
                        }
                    }
                }

                foreach (PluginStyle style in pluginStyleRegistry)
                {
                    if (style.ForCurrentRequest(new PluginStyleContext(filterContext)))
                    {
                        responseFilter.Inserts.Add(new ResponseInsert(i => string.Format("<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />", urlHelper.PluginStylesPath(style.Plugin, style.Url)), ResponseInsertMode.AppendTo, "head"));
                    }
                }

                foreach (PluginScript script in pluginScriptRegistry)
                {
                    if (script.ForCurrentRequest(new PluginScriptContext(filterContext)))
                    {
                        responseFilter.Inserts.Add(new ResponseInsert(i => string.Format("<script src=\"{0}\" type=\"text/javascript\"></script>", urlHelper.PluginScriptsPath(script.Plugin, script.Url)), ResponseInsertMode.AppendTo, "head"));
                    }
                }
            }
        }
Ejemplo n.º 9
0
        private void ApplyWebResponseFilters(WebResponse webResponse)
        {
            if (!(webResponse is HttpWebResponse))
            {
                return;
            }

            ResponseFilter?.Invoke((HttpWebResponse)webResponse);
            GlobalResponseFilter?.Invoke((HttpWebResponse)webResponse);
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> WorkOrder(int page = 1)
        {
            var result = new ResponseAssignment();

            try {
                var UserSession = HttpContext.Session.Get <UserModel>("UserSesion");
                if (UserSession.UserType == UserType.Technician)
                {
                    throw new Exception();
                }
                var dateTemp = DateTime.Today;
                var dateFrom = new DateTime(dateTemp.Year, dateTemp.Month, 1);
                var dateTo   = new DateTime(dateTemp.Year, dateTemp.Month + 1, 1).AddDays(-1);
                HttpContext.Session.SetString("StartDateFilter", dateFrom.ToString("yyyy-MM-dd"));
                HttpContext.Session.SetString("EndDateFilter", dateTo.ToString("yyyy-MM-dd"));

                var     pageSize = 10;
                Request request  = new Request();

                request = new Request()
                {
                    Assignment = new AssignmentModel {
                        UserId          = UserSession.Id,
                        TypeConsult     = 1,
                        WorkOrderNumber = "",
                        CompanyName     = "",
                        //StartDate = new DateTime(2017, 1, 20),
                        StartDate  = dateFrom,
                        Office     = "",
                        CostCenter = "",
                        //EndDate = new DateTime(2018, 1, 20),
                        EndDate = dateTo,
                    },
                    PageIndex = page,
                    PageSize  = pageSize
                };

                result = await _assignmentService.GetOtsAsync(request);

                dataFilter = await _assignmentService.GetDataForFilterAsync();

                OrderPersonalTechnical(ref result);
                ViewData["Office"]     = AddListItemDataOffices(dataFilter.Offices);
                ViewData["CostCenter"] = AddListItemDataCostsCenter(dataFilter.CostsCenter);
                ViewData["Brand"]      = AddListItemDataBrands(dataFilter.Brands);
                var x = Math.Ceiling(Convert.ToDouble(result.TotalRows / pageSize));
                ViewData["CurrentPage"] = page;
                ViewData["Pages"]       = x;
            } catch (Exception) {
                return(RedirectToAction("Index", "Home"));
            }
            return(View(result.Assignments));
        }
Ejemplo n.º 11
0
        public void WriteTo(Stream responseStream)
        {
            if (this.FileInfo != null)
            {
                using (var fs = this.FileInfo.OpenRead())
                {
                    fs.WriteTo(responseStream);
                    responseStream.Flush();
                }
                return;
            }

            if (this.ResponseStream != null)
            {
                this.ResponseStream.WriteTo(responseStream);
                responseStream.Flush();
                try
                {
                    this.ResponseStream.Dispose();
                }
                catch { /*ignore*/ }

                return;
            }

            if (this.ResponseText != null)
            {
                var bytes = System.Text.Encoding.UTF8.GetBytes(this.ResponseText);
                responseStream.Write(bytes, 0, bytes.Length);
                responseStream.Flush();
                return;
            }

            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException("ResponseFilter");
            }
            if (this.RequestContext == null)
            {
                throw new ArgumentNullException("RequestContext");
            }

            var bytesResponse = this.Response as byte[];

            if (bytesResponse != null)
            {
                responseStream.Write(bytesResponse, 0, bytesResponse.Length);
                return;
            }

            ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream);
        }
Ejemplo n.º 12
0
        public async Task <ResponseFilter> GetDataForFilterAsync()
        {
            ResponseFilter Result = null;

            try {
                var response = await _apiClient.ExecuteGet <ResponseFilter>("users/GetAllFiltersWEB");

                Result = response.Content;
            } catch (Exception e) {
                string m = e.Message;
            }
            return(Result);
        }
Ejemplo n.º 13
0
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            OxiteModelItem <Post> model = filterContext.Controller.ViewData.Model as OxiteModelItem <Post>;

            if (model != null)
            {
                UrlHelper      urlHelper      = new UrlHelper(filterContext.RequestContext);
                string         imgTag         = string.Format("<div style=\"position:absolute;left:-9999px;\"><img src=\"{0}\" width=\"1\" height=\"1\" alt=\"Web View Bug\" /></div>", urlHelper.PostViewBug(model.Item, "Post-Web"));
                ResponseFilter responseFilter = new ResponseFilter(filterContext.HttpContext.Response.Filter, filterContext.HttpContext);

                responseFilter.Inserts.Add(new ResponseInsert(imgTag, ResponseInsertMode.PrependTo, "body"));

                filterContext.HttpContext.Response.Filter = responseFilter;
            }
        }
Ejemplo n.º 14
0
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            //TODO: (erikpo) Check a ViewTrackingEnabled Site setting to add these or not
            object viewTrackingValue = filterContext.RouteData.Values["viewTracking"];
            bool   viewTracking      = viewTrackingValue != null && viewTrackingValue is bool?(bool)viewTrackingValue : true;

            //TODO: (erikpo) some of this logic should probably move into an ActionCriteria class
            if (viewTracking && !filterContext.HttpContext.Request.ApplicationPath.TrimStart('/').StartsWith("Admin") && string.Compare(filterContext.HttpContext.Request.HttpMethod, "POST", true) != 0)
            {
                ResponseFilter responseFilter  = new ResponseFilter(filterContext.HttpContext.Response.Filter);
                UrlHelper      urlHelper       = new UrlHelper(filterContext.RequestContext);
                string         viewTrackingUrl = urlHelper.AbsolutePath(filterContext.HttpContext.Request.Url.AbsolutePath).TrimEnd('/');
                const string   imgTag          = "<img src=\"{0}/_View_\" width=\"1\" height=\"1\" />";

                //TODO: (erikpo) Add a site setting for whether the img should be at the beginning or the end of the inside of the body tag
                if (filterContext.RouteData.Values["dataFormat"] == null || ((string)filterContext.RouteData.Values["dataFormat"]) == "")
                {
                    responseFilter.Inserts.Add(new ResponseInsert(string.Format(imgTag, viewTrackingUrl), ResponseInsertMode.PrependTo, "body"));
                }
                else if (string.Compare((string)filterContext.RouteData.Values["dataFormat"], "RSS", true) == 0)
                {
                    int modelListCount = getModelListCount(filterContext.Controller.ViewData.Model);

                    for (int i = 0; i < modelListCount; i++)
                    {
                        int index = i;

                        responseFilter.Inserts.Add(new ResponseInsert(HttpUtility.HtmlEncode(string.Format(imgTag, viewTrackingUrl)), ResponseInsertMode.AppendTo, doc => findElementsInRss(doc, index), insertValue));
                    }
                }
                else if (string.Compare((string)filterContext.RouteData.Values["dataFormat"], "ATOM", true) == 0)
                {
                    int modelListCount = getModelListCount(filterContext.Controller.ViewData.Model);

                    for (int i = 0; i < modelListCount; i++)
                    {
                        int index = i;

                        responseFilter.Inserts.Add(new ResponseInsert(HttpUtility.HtmlEncode(string.Format(imgTag, viewTrackingUrl)), ResponseInsertMode.AppendTo, doc => findElementsInAtom(doc, index), insertValue));
                    }
                }

                filterContext.HttpContext.Response.Filter = responseFilter;
            }
        }
Ejemplo n.º 15
0
            public void WillSetResponseFilterOnce()
            {
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.SpriteVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(true);
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                context.VerifySet((x => x.Response.Filter = It.IsAny <Stream>()), Times.Never());
                RRContainer.Current = null;
            }
Ejemplo n.º 16
0
        public IActionResult CompanyList(CommonFilter <string> commonFilter, DateTime?dateFrom, DateTime?dateTo, bool limitOffset = true)
        {
            var response = new ResponseFilter <CompanyReportViewResponse>();
            var today    = DateTime.Now;

            dateFrom            = dateFrom ?? new DateTime(today.Year, today.Month, 1);
            dateTo              = dateTo ?? new DateTime(today.Year, today.Month + 1, 1).AddDays(-1);
            commonFilter.Filter = string.IsNullOrEmpty(commonFilter.Filter) ? null : $"%{commonFilter.Filter}%";
            response.Page       = commonFilter.Page;
            response.PageSize   = commonFilter.PageSize;

            using (var connection = Context.Database.GetDbConnection())
            {
                response.Total = connection.Query <int?>(SqlReportCompany.SelectCount, new
                {
                    Search = commonFilter.Filter,
                    From   = dateFrom,
                    To     = dateTo
                }).FirstOrDefault() ?? 0;

                response.Data = new CompanyReportViewResponse
                {
                    CompanyReportViews = connection.Query <CompanyReportView>(SqlReportCompany.SelectList(limitOffset),
                                                                              new
                    {
                        From   = dateFrom,
                        To     = dateTo,
                        Search = commonFilter.Filter,
                        Limit  = commonFilter.PageSize,
                        Offset = (commonFilter.Page - 1) * commonFilter.PageSize
                    }).ToList(),
                    CompanyReportViewTotal = connection.Query <CompanyReportViewTotal>(SqlReportCompany.SelectTotal,
                                                                                       new
                    {
                        From   = dateFrom,
                        To     = dateTo,
                        Search = commonFilter.Filter
                    }).FirstOrDefault()
                };
            }
            return(Json(response));
        }
Ejemplo n.º 17
0
        public virtual uint SendCommand(string command, ResponseFilter filter)
        {
            uint commandId = this._nextId++;

            foreach (string str in filter)
            {
                this.AddFilter(str, commandId);
            }
            if (!this._commandFilters.ContainsKey(commandId))
            {
                this._commandFilters.Add(commandId, filter);
            }
            lock (this)
            {
                this._connection.SendLine(string.Format("{0} {1}", commandId, command));
            }
            this._queues[commandId] = new Queue <string>();
            this.monopolyCommanId   = ((this._mode & EDispatcherMode.Monopoly) == EDispatcherMode.Monopoly) ? commandId : uint.MaxValue;
            return(commandId);
        }
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            OxiteModelList <Post> model = filterContext.Controller.ViewData.Model as OxiteModelList <Post>;

            if (model != null)
            {
                UrlHelper      urlHelper      = new UrlHelper(filterContext.RequestContext);
                ResponseFilter responseFilter = new ResponseFilter(filterContext.HttpContext.Response.Filter, filterContext.HttpContext);

                for (int i = 0; i < model.List.Count; i++)
                {
                    Post   post   = model.List[i];
                    string imgTag = HttpUtility.HtmlEncode(string.Format("<div><img src=\"{0}\" width=\"1\" height=\"1\" alt=\"\" /></div>", urlHelper.AbsolutePath(urlHelper.PostViewBug(post, viewType))));

                    int index = i;

                    responseFilter.Inserts.Add(new ResponseInsert(imgTag, ResponseInsertMode.AppendTo, doc => findElements(doc, index), (elements, mode, value) => insertValue(elements, mode, value)));
                }

                filterContext.HttpContext.Response.Filter = responseFilter;
            }
        }
Ejemplo n.º 19
0
        public void WriteTo(Stream responseStream)
        {
            if (this.FileInfo != null)
            {
                using (var fs = this.FileInfo.OpenRead())
                {
                    fs.WriteTo(responseStream);
                    responseStream.Flush();
                }
                return;
            }

            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException("ResponseFilter");
            }
            if (this.RequestContext == null)
            {
                throw new ArgumentNullException("RequestContext");
            }

            ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream);
        }
Ejemplo n.º 20
0
        //NEW
        public ResponseFilter GetAllFilters()
        {
            var result = new ResponseFilter();

            var offices     = _userRepository.GetAllOffice();
            var brands      = _userRepository.GetAllMachineryBrand();
            var costsCenter = _userRepository.GetAllCostCenter();

            if (offices != null)
            {
                result.Offices = new List <Office>(offices);
            }
            if (brands != null)
            {
                result.Brands = new List <Brand>(brands);
            }
            if (costsCenter != null)
            {
                result.CostsCenter = new List <CostCenter>(costsCenter);
            }

            return(result);
        }
Ejemplo n.º 21
0
            public void WillNotSetPhysicalPathToMappedPathOfVirtualPathIfPhysicalPathIsNotEmpty()
            {
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.SpritePhysicalPath).Returns("physicalPath");
                config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent");
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <IHostingEnvironmentWrapper>().Use(new Mock <IHostingEnvironmentWrapper>().Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.RawUrl).Returns("/content/blah");

                ResponseFilter.InstallFilter(context.Object);

                config.VerifySet(x => x.SpritePhysicalPath = It.IsAny <string>(), Times.Never());
                RRContainer.Current = null;
            }
Ejemplo n.º 22
0
            public void WillNotSetResponseFilterIfPageFilterIgnoresTarget()
            {
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.SpriteVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Request.RawUrl).Returns("/NotVirtual/blah");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Server).Returns(new Mock <HttpServerUtilityBase>().Object);
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });
                Registry.AddFilter(new PageFilter(x => x.HttpRequest.RawUrl.Contains("blah")));

                ResponseFilter.InstallFilter(context.Object);

                context.VerifySet(x => x.Response.Filter = It.IsAny <Stream>(), Times.Never());
                RRContainer.Current = null;
            }
Ejemplo n.º 23
0
            public void WillNotSetResponseFilterIfStatusIs302Or301()
            {
                RRContainer.Current = null;
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();

                config.Setup(x => x.ResourceVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Server).Returns(new Mock <HttpServerUtilityBase>().Object);
                context.Setup(x => x.Request.RawUrl).Returns("/content/blah");
                context.Setup(x => x.Response.IsRequestBeingRedirected).Returns(true);
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                context.VerifySet(x => x.Response.Filter = It.IsAny <Stream>(), Times.Never());
                RRContainer.Current = null;
            }
Ejemplo n.º 24
0
            public void WillSetPhysicalPathToMappedVirtualPath()
            {
                var context = new Mock <HttpContextBase>();
                var config  = new Mock <IRRConfiguration>();
                var hostingEnvironmentWrapper = new Mock <IHostingEnvironmentWrapper>();

                config.Setup(x => x.ResourceVirtualPath).Returns("/Virtual");
                context.Setup(x => x.Items.Contains(ResponseFilter.ContextKey)).Returns(false);
                context.Setup(x => x.Response.ContentType).Returns("text/html");
                hostingEnvironmentWrapper.Setup(x => x.MapPath("/Virtual")).Returns("physical");
                context.Setup(x => x.Request.QueryString).Returns(new NameValueCollection());
                context.Setup(x => x.Request.RawUrl).Returns("/content/blah");
                RRContainer.Current = new Container(x =>
                {
                    x.For <IRRConfiguration>().Use(config.Object);
                    x.For <AbstractFilter>().Use(new Mock <AbstractFilter>().Object);
                    x.For <IHostingEnvironmentWrapper>().Use(hostingEnvironmentWrapper.Object);
                });

                ResponseFilter.InstallFilter(context.Object);

                config.VerifySet(x => x.ResourcePhysicalPath = "physical", Times.Once());
                RRContainer.Current = null;
            }
Ejemplo n.º 25
0
 public void Init()
 {
     instance = new ResponseFilter();
 }
Ejemplo n.º 26
0
 private void ApplyWebResponseFilters(HttpResponseMessage httpRes)
 {
     ResponseFilter?.Invoke(httpRes);
     GlobalResponseFilter?.Invoke(httpRes);
 }
Ejemplo n.º 27
0
    private void UpdateContacts()
    {
      CollisionDomain.Update(_fixedTimeStep);

      IslandManager.ContactSetLinks.Clear();

      // Go through contacts and add contact constraints.
      foreach (ContactSet contactSet in CollisionDomain.ContactSets)
      {
        RigidBody bodyA = contactSet.ObjectA.GeometricObject as RigidBody;
        RigidBody bodyB = contactSet.ObjectB.GeometricObject as RigidBody;
        if (bodyA != null && bodyB != null)
        {
          // Check if a dynamic body is involved and if collision response is enabled.
          bool responseEnabled = (bodyA.MotionType == MotionType.Dynamic || bodyB.MotionType == MotionType.Dynamic)
                                 && bodyA.CollisionResponseEnabled
                                 && bodyB.CollisionResponseEnabled
                                 && (ResponseFilter == null || ResponseFilter.Filter(new Pair<RigidBody>(bodyA, bodyB)));

          if (responseEnabled)
            IslandManager.ContactSetLinks.Add(new Pair<RigidBody>(bodyA, bodyB));

          int numberOfContacts = contactSet.Count;
          for (int i = 0; i < numberOfContacts; i++)
          {
            var contact = contactSet[i];
            ContactConstraint constraint = contact.UserData as ContactConstraint;

            if (constraint != null)
            {
              if (responseEnabled)
              {
                // Contact constraint is still in use. 
                // --> Mark contact constraint as active.
                constraint.Used = true;
              }
              else
              {
                // The response was disabled.
                // --> Remove an old constact constraint. 
                contact.UserData = null;
              }
            }
            else if (responseEnabled)
            {
              // Create a new contact constraint.
              constraint = ContactConstraint.Create(bodyA, bodyB, contact);
              contact.UserData = constraint;
              ContactConstraintsInternal.Add(constraint);
              constraint.Used = true;
            }
          }
        }
      }

      // ----- Recycle old contact constraints.
      int numberOfConstraints = ContactConstraintsInternal.Count;
      int numberOfUsedConstraints = numberOfConstraints;
      for (int i = numberOfConstraints - 1; i >= 0; i--)
      {
        var constraint = ContactConstraintsInternal[i];
        if (constraint.Used)
        {
          // The contact constraint is still in use.
          // Keep constraint and reset flag.
          constraint.Used = false;
        }
        else
        {
          numberOfUsedConstraints--;

          // Recycle contact constraint.
          constraint.Recycle();

          // The contact constraint is no longer in use.
          // Swap a used constraint to this index.
          ContactConstraintsInternal[i] = ContactConstraintsInternal[numberOfUsedConstraints];
          // Not needed because we call List.RemoveRange for the end of the list.
          //ContactConstraintsInternal[numberOfUsedConstraints] = constraint;
        }
      }

      // Remove recycled contacts at end of list.
      int numberOfUnusedConstraints = numberOfConstraints - numberOfUsedConstraints;
      if (numberOfUnusedConstraints > 0)
      {
        ContactConstraintsInternal.RemoveRange(numberOfUsedConstraints, numberOfUnusedConstraints);
      }
    }
Ejemplo n.º 28
0
        private void WriteTo(Stream responseStream, int paddingLength)
        {
            var response = RequestContext?.Response;

            if (this.FileInfo != null)
            {
                response?.SetContentLength(FileInfo.Length + paddingLength);

                using (var fs = this.FileInfo.OpenRead())
                {
                    fs.WriteTo(responseStream);
                    return;
                }
            }

            if (this.ResponseStream != null)
            {
                if (response != null)
                {
                    var ms = ResponseStream as MemoryStream;
                    if (ms != null)
                    {
                        var bytes = ms.ToArray();
                        response.SetContentLength(bytes.Length + paddingLength);

                        responseStream.Write(bytes, 0, bytes.Length);
                        return;
                    }
                }

                this.ResponseStream.WriteTo(responseStream);
                return;
            }

            if (this.ResponseText != null)
            {
                var bytes = Encoding.UTF8.GetBytes(this.ResponseText);
                response?.SetContentLength(bytes.Length + paddingLength);

                responseStream.Write(bytes, 0, bytes.Length);
                return;
            }

            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException("ResponseFilter");
            }
            if (this.RequestContext == null)
            {
                throw new ArgumentNullException("RequestContext");
            }

            var bytesResponse = this.Response as byte[];

            if (bytesResponse != null)
            {
                response?.SetContentLength(bytesResponse.Length + paddingLength);

                responseStream.Write(bytesResponse, 0, bytesResponse.Length);
                return;
            }

            if (View != null)
            {
                RequestContext.SetItem("View", View);
            }
            if (Template != null)
            {
                RequestContext.SetItem("Template", Template);
            }

            RequestContext.SetItem("HttpResult", this);

            ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream);
        }
        public override async Task ProcessRequestAsync(IRequest request, IResponse response, string operationName)
        {
            HostContext.ApplyCustomHandlerRequestFilters(request, response);
            if (response.IsClosed)
            {
                return;
            }

            await response.EndHttpHandlerRequestAsync(afterHeaders : async r =>
            {
                var node    = this.VirtualNode ?? request.GetVirtualNode();
                var file    = node as IVirtualFile;
                var appHost = HostContext.AppHost;
                if (file == null)
                {
                    if (node is IVirtualDirectory dir)
                    {
                        file = dir.GetDefaultDocument(appHost.Config.DefaultDocuments);
                        if (file != null && HostContext.Config.RedirectToDefaultDocuments)
                        {
                            r.Redirect(request.GetPathUrl() + '/' + file.Name);
                            return;
                        }
                    }

                    if (file == null)
                    {
                        var fileName         = request.PathInfo;
                        var originalFileName = fileName;

                        if (Env.IsMono)
                        {
                            //Create a case-insensitive file index of all host files
                            if (allFiles == null)
                            {
                                allFiles = CreateFileIndex(appHost.RootDirectory.RealPath);
                            }
                            if (allDirs == null)
                            {
                                allDirs = CreateDirIndex(appHost.RootDirectory.RealPath);
                            }

                            if (allFiles.TryGetValue(fileName.ToLower(), out fileName))
                            {
                                file = appHost.VirtualFileSources.GetFile(fileName);
                            }
                        }

                        if (file == null)
                        {
                            var msg = ErrorMessages.FileNotExistsFmt.Fmt(request.PathInfo.SafeInput());
                            log.Warn($"{msg} in path: {originalFileName}");
                            response.StatusCode        = 404;
                            response.StatusDescription = msg;
                            return;
                        }
                    }
                }

                file.Refresh(); //refresh FileInfo, DateModified, Length

                if (r.ContentType != null && appHost.Config.AddMaxAgeForStaticMimeTypes.TryGetValue(r.ContentType, out var maxAge))
                {
                    r.AddHeader(HttpHeaders.CacheControl, "max-age=" + maxAge.TotalSeconds);
                }

                if (request.HasNotModifiedSince(file.LastModified))
                {
                    r.ContentType       = MimeTypes.GetMimeType(file.Name);
                    r.StatusCode        = (int)HttpStatusCode.NotModified;
                    r.StatusDescription = HttpStatusCode.NotModified.ToString();

                    ResponseFilter?.Invoke(request, r, file);
                    return;
                }

                try
                {
                    var encoding       = request.GetCompressionType();
                    var shouldCompress = encoding != null && appHost.ShouldCompressFile(file);
                    r.AddHeaderLastModified(file.LastModified);
                    r.ContentType = MimeTypes.GetMimeType(file.Name);

                    if (ResponseFilter != null)
                    {
                        ResponseFilter(request, r, file);

                        if (r.IsClosed)
                        {
                            return;
                        }
                    }

                    if (!HostContext.DebugMode && file.VirtualPath.EqualsIgnoreCase(DefaultFilePath))
                    {
                        if (file.LastModified > DefaultFileModified)
                        {
                            SetDefaultFile(DefaultFilePath, file.ReadAllBytes(), file.LastModified); //reload
                        }
                        if (!shouldCompress)
                        {
                            await r.OutputStream.WriteAsync(DefaultFileContents);
                            await r.OutputStream.FlushAsync();
                        }
                        else
                        {
                            byte[] zipBytes = null;
                            if (encoding == CompressionTypes.GZip)
                            {
                                zipBytes = DefaultFileContentsGzip ??= DefaultFileContents.CompressBytes(encoding);
                            }
                            else if (encoding == CompressionTypes.Deflate)
                            {
                                zipBytes = DefaultFileContentsDeflate ??= DefaultFileContents.CompressBytes(encoding);
                            }
                            else
                            {
                                zipBytes = DefaultFileContents.CompressBytes(encoding);
                            }

                            r.AddHeader(HttpHeaders.ContentEncoding, encoding);
                            r.SetContentLength(zipBytes.Length);
                            await r.OutputStream.WriteAsync(zipBytes);
                            await r.OutputStream.FlushAsync();
                        }

                        r.Close();
                        return;
                    }

                    if (appHost.Config.AllowPartialResponses)
                    {
                        r.AddHeader(HttpHeaders.AcceptRanges, "bytes");
                    }
                    long contentLength = file.Length;
                    long rangeStart, rangeEnd;
                    var rangeHeader = request.Headers[HttpHeaders.Range];
                    if (appHost.Config.AllowPartialResponses && rangeHeader != null)
                    {
                        rangeHeader.ExtractHttpRanges(contentLength, out rangeStart, out rangeEnd);

                        if (rangeEnd > contentLength - 1)
                        {
                            rangeEnd = contentLength - 1;
                        }

                        r.AddHttpRangeResponseHeaders(rangeStart: rangeStart, rangeEnd: rangeEnd,
                                                      contentLength: contentLength);
                    }
                    else
                    {
                        rangeStart = 0;
                        rangeEnd   = contentLength - 1;
                    }

                    var outputStream = r.OutputStream;
                    using (var fs = file.OpenRead())
                    {
                        if (rangeStart != 0 || rangeEnd != file.Length - 1)
                        {
                            await fs.WritePartialToAsync(outputStream, rangeStart, rangeEnd);
                        }
                        else
                        {
                            if (!shouldCompress)
                            {
                                r.SetContentLength(contentLength);
                                await fs.CopyToAsync(outputStream, BufferSize);
                                await outputStream.FlushAsync();
                            }
                            else
                            {
                                r.AddHeader(HttpHeaders.ContentEncoding, encoding);
                                outputStream = outputStream.CompressStream(encoding);
                                await fs.CopyToAsync(outputStream);
                                await outputStream.FlushAsync();
                                outputStream.Close();
                            }
                        }
                    }
                }
#if !NETSTANDARD2_0
                catch (System.Net.HttpListenerException ex)
                {
                    if (ex.ErrorCode == 1229)
                    {
                        return;
                    }
                    //Error: 1229 is "An operation was attempted on a nonexistent network connection"
                    //This exception occurs when http stream is terminated by web browser because user
                    //seek video forward and new http request will be sent by browser
                    //with attribute in header "Range: bytes=newSeekPosition-"
                    throw;
                }
#endif
                catch (Exception ex)
                {
                    if (ex is IHttpError httpError)
                    {
                        r.StatusCode        = (int)httpError.StatusCode;
                        r.StatusDescription = httpError.Message ?? httpError.ErrorCode;
                        return;
                    }

                    log.ErrorFormat($"Static file {request.PathInfo} forbidden: {ex.Message}");
                    throw new HttpException(403, "Forbidden.");
                }
            });
        }
Ejemplo n.º 30
0
        private async Task WriteToAsync(Stream responseStream, int paddingLength, CancellationToken token)
        {
            var response = RequestContext?.Response;

            if (this.FileInfo != null)
            {
                response?.SetContentLength(FileInfo.Length + paddingLength);

                using (var fs = this.FileInfo.OpenRead())
                {
                    await fs.CopyToAsync(responseStream, token);

                    return;
                }
            }

            if (this.ResponseStream != null)
            {
                try
                {
                    if (response != null)
                    {
                        if (ResponseStream is MemoryStream ms)
                        {
                            var bytes = ms.ToArray();
                            response.SetContentLength(bytes.Length + paddingLength);

                            await responseStream.WriteAsync(bytes, 0, bytes.Length, token); //Write Sync to MemoryStream

                            return;
                        }
                    }

                    await ResponseStream.CopyToAsync(responseStream, token);
                }
                finally
                {
                    DisposeStream();
                }
                return;
            }

            if (this.ResponseText != null)
            {
                var bytes = Encoding.UTF8.GetBytes(this.ResponseText);
                response?.SetContentLength(bytes.Length + paddingLength);

                await responseStream.WriteAsync(bytes, token);

                return;
            }

            if (this.ResponseFilter == null)
            {
                throw new ArgumentNullException(nameof(ResponseFilter));
            }
            if (this.RequestContext == null)
            {
                throw new ArgumentNullException(nameof(RequestContext));
            }

            if (this.Response is byte[] bytesResponse)
            {
                response?.SetContentLength(bytesResponse.Length + paddingLength);

                await responseStream.WriteAsync(bytesResponse, token);

                return;
            }

            if (View != null)
            {
                RequestContext.SetItem("View", View);
            }
            if (Template != null)
            {
                RequestContext.SetItem("Template", Template);
            }

            RequestContext.SetItem("HttpResult", this);

            if (Response != null)
            {
                ResponseFilter.SerializeToStream(this.RequestContext, this.Response, responseStream);
            }
        }
Ejemplo n.º 31
0
 /// <summary>
 /// Adds new filter to the chain.
 /// </summary>
 /// <param name="filter">Filter to add.</param>
 public void Add(ResponseFilter filter)
 {
     if (filter != null && !Contains(filter))
     {
         filter.AddToChain(this);
         Filters.Add(filter);
     }
 }
Ejemplo n.º 32
0
 /// <summary>
 /// Determines whether chain contains the given filter.
 /// </summary>
 /// <param name="filter">Filter to search for.</param>
 /// <returns>Value indicating whether chain contains the given filter.</returns>
 public bool Contains(ResponseFilter filter)
 {
     return Filters.Contains(filter);
 }
Ejemplo n.º 33
0
        /// <summary>
        /// Removes existing filter from the chain.
        /// </summary>
        /// <param name="filter">Filter to remove.</param>
        public void Remove(ResponseFilter filter)
        {
            int index = 0;

            if (filter != null && Contains(filter))
            {
                index = Filters.FindIndex(f => f.CompareTo(filter) == 0);
                if (index >= 0 && index < Filters.Count)
                {
                    Filters[index].RemoveFromChain();
                    Filters.Remove(filter);
                }
            }
        }