示例#1
0
 public static SessionHandlerResponse SessionHandler(SessionHandlerRequest request)
 {
     return(SessionCore.SessionHandler(request));
 }
示例#2
0
        public static SessionHandlerResponse SessionHandler(SessionHandlerRequest request)
        {
            var socket   = request.Head.Socket;
            var socketid = socket.ConnectionInfo.Id;
            var name     = request.EventName.ToString();
            var id       = name + "_" + socketid;

            //var hasHandlerEvent = FiddlerHelper.EventHandlers.Keys.ToList().Exists(key => key.StartsWith(name));
            if (request.EventType == EventType.Add) //&& !hasHandlerEvent)
            {
                SessionStateHandler handler = session => SendSessionStateHandler(name, request.EventName, socket, session);
                switch (request.EventName)
                {
                case EventName.BeforeRequest:
                    FiddlerApplication.BeforeRequest += handler;
                    break;

                case EventName.BeforeResponse:
                    FiddlerApplication.BeforeResponse += handler;
                    break;

                case EventName.AfterSessionComplete:
                    FiddlerApplication.AfterSessionComplete += handler;
                    break;

                case EventName.BeforeReturningError:
                    FiddlerApplication.BeforeReturningError += handler;
                    break;

                case EventName.RequestHeadersAvailable:
                    FiddlerApplication.RequestHeadersAvailable += handler;
                    break;

                case EventName.ResponseHeadersAvailable:
                    FiddlerApplication.ResponseHeadersAvailable += handler;
                    break;

                default:
                    return(null);
                }
                FiddlerHelper.EventHandlers.Add(id, handler);
            }
            else if (request.EventType == EventType.Remove && FiddlerHelper.EventHandlers.ContainsKey(id))
            {
                var handler = FiddlerHelper.EventHandlers[id];
                switch (request.EventName)
                {
                case EventName.BeforeRequest:
                    FiddlerApplication.BeforeRequest -= handler;
                    break;

                case EventName.BeforeResponse:
                    FiddlerApplication.BeforeResponse -= handler;
                    break;

                case EventName.AfterSessionComplete:
                    FiddlerApplication.AfterSessionComplete -= handler;
                    break;

                case EventName.BeforeReturningError:
                    FiddlerApplication.BeforeReturningError -= handler;
                    break;

                case EventName.RequestHeadersAvailable:
                    FiddlerApplication.RequestHeadersAvailable -= handler;
                    break;

                case EventName.ResponseHeadersAvailable:
                    FiddlerApplication.ResponseHeadersAvailable -= handler;
                    break;

                default:
                    return(null);
                }
                FiddlerHelper.EventHandlers.Remove(id);
            }
            return(null);
        }