/// <summary> /// Create a new FiftyOneJsProvider /// </summary> public FiftyOneJsProvider() { var pipeline = WebPipeline.GetInstance().Pipeline; var headersAffectingJavaScript = new List <string>(); // Get evidence filters for all elements that have // JavaScript properties. var filters = pipeline.FlowElements .Where(e => e.Properties.Any(p => p.Type != null && p.Type == typeof(JavaScript))) .Select(e => e.EvidenceKeyFilter); foreach (var filter in filters) { // If the filter is a white list or derived type then // get all HTTP header evidence keys from white list // and add them to the headers that could affect the // generated JavaScript. var whitelist = filter as EvidenceKeyFilterWhitelist; if (whitelist != null) { var headerPrefix = Core.Constants.EVIDENCE_HTTPHEADER_PREFIX + Core.Constants.EVIDENCE_SEPERATOR; headersAffectingJavaScript.AddRange(whitelist.Whitelist .Where(entry => entry.Key.StartsWith( headerPrefix, StringComparison.OrdinalIgnoreCase)) .Select(entry => entry.Key.Substring( entry.Key.IndexOf(Core.Constants.EVIDENCE_SEPERATOR, StringComparison.OrdinalIgnoreCase) + 1))); } } _headersAffectingJavaScript = new StringValues(headersAffectingJavaScript.ToArray()); }
/// <summary> /// Create a new FiftyOneJsProvider /// </summary> public FiftyOneJsProvider() { using (var loggerFactory = new LoggerFactory()) { var logger = loggerFactory.CreateLogger <ClientsidePropertyService>(); _clientsidePropertyService = new ClientsidePropertyService( WebPipeline.GetInstance().Pipeline, logger); } }
/// <summary> /// Gets the <see cref="HttpBrowserCapabilities"/> object for the /// specified <see cref="HttpRequest"/>. /// </summary> /// <param name="request"> /// The <see cref="HttpRequest"/> to get the browser capabilities for. /// </param> /// <returns> /// The browser capabilities for the specified /// <see cref="HttpRequest"/>. /// </returns> public override HttpBrowserCapabilities GetBrowserCapabilities( HttpRequest request) { HttpBrowserCapabilities caps; var baseCaps = base.GetBrowserCapabilities(request); var flowData = WebPipeline.Process(request); if (flowData != null) { // A provider is present so 51Degrees can be used to override // some of the returned values. caps = new PipelineCapabilities( baseCaps, request, flowData); // Copy the adapters from the original. var adapters = baseCaps.Adapters.GetEnumerator(); while (adapters.MoveNext()) { caps.Adapters.Add(adapters.Key, adapters.Value); } // Copy the browsers from the original to prevent the Browsers // property returning null. if (baseCaps.Browsers != null) { foreach (string browser in baseCaps.Browsers) { caps.AddBrowser(browser); } } } else { // No 51Degrees flow data is present so we have to use // the base capabilities only. caps = baseCaps; } return(caps); }
/// <summary> /// Constructor /// </summary> public SetHeadersProvider() { var pipeline = WebPipeline.GetInstance().Pipeline; _setHeadersElement = pipeline.GetElement <ISetHeadersElement>(); }