/// <summary>
        /// Creates a new AuditPipelineModule using the fluent configuration API.
        /// </summary>
        /// <param name="builder">Module configuration as a fluent API</param>
        public static AuditPipelineModule Create(Action <IPipelineBuilder> builder)
        {
            var config = new PipelineBuilder();

            builder.Invoke(config);
            var filters = config._filters as PipelineBuilderFilters ?? new PipelineBuilderFilters();
            var module  = new AuditPipelineModule()
            {
                AuditDataProvider      = config._dataProvider,
                AuditDisabled          = config._auditDisabled,
                CreationPolicy         = config._creationPolicy,
                AuditEventType         = config._eventType,
                IncludeHeaders         = config._includeHeaders,
                IncludeQueryString     = config._includeQueryString,
                ConnectEventsFilter    = filters._connectEventsFilter,
                ReconnectEventsFilter  = filters._reconnectEventsFilter,
                DisconnectEventsFilter = filters._disconnectEventsFilter,
                ErrorEventsFilter      = filters._errorEventsFilter,
                IncomingEventsFilter   = filters._incomingEventsFilter,
                OutgoingEventsFilter   = filters._outgoingEventsFilter
            };

            return(module);
        }
 /// <summary>
 /// Adds an Audit Module to the hub pipeline. This must be called the before any methods on the Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker are invoked.
 /// </summary>
 /// <param name="pipeline">The hub pipeline</param>
 /// <param name="config">The audit module configuration</param>
 /// <returns></returns>
 public static IHubPipeline AddAuditModule(this IHubPipeline pipeline, Action <IPipelineBuilder> config)
 {
     GlobalHost.HubPipeline.AddModule(AuditPipelineModule.Create(config));
     return(pipeline);
 }