示例#1
0
        public async Task ListensToStreamAsyncTest()
        {
            ParticleEventManagerMock eventManager = new ParticleEventManagerMock();
            WebEventArgs             lastEvent    = null;
            int count = 0;

            eventManager.Events += (s, e) =>
            {
                lastEvent = e;
                count++;
                eventManager.Stop();
            };

            using (Stream s = new MemoryStream())
            {
                StreamWriter w = new StreamWriter(s, Encoding.UTF8);
                w.Write(":ok\n\nevent: test\ndata: {\"data\":\"25.34\",\"ttl\":\"60\",\"published_at\":\"2015-07-18T00:12:18.174Z\",\"coreid\":\"0123456789abcdef01234567\"}\n\n");
                w.Flush();
                s.Position = 0;                 // go back to the beginning of the stream
                await eventManager.ListensToStreamAsyncMock(s);

                await Task.Delay(500);                 // Delay a little bit so we make sure the other threads has time to execute.


                Assert.IsNotNull(lastEvent);
                Assert.AreEqual("test", lastEvent.Event);
                Assert.IsNotNull(lastEvent.Data);
                Assert.AreEqual(1, lastEvent.Data.Length);
                var data = lastEvent.Data[0];
                Assert.AreEqual("25.34", data.Data);
                Assert.AreEqual(60, data.TimeToLive);
                Assert.AreEqual(DateTime.Parse("2015-07-18T00:12:18.174Z").ToLocalTime(), data.PublishedAt);
                Assert.AreEqual("0123456789abcdef01234567", data.CoreId);
            }
        }
 /// <summary>
 /// 引发 <see cref="HttpClient.RequestSuccess" /> 事件
 /// </summary>
 /// <param name="ea">包含此事件的参数</param>
 public override void OnRequestSuccess(WebEventArgs ea)
 {
     base.OnRequestSuccess(ea);
     if (!RunTime.PreProcessWebMessage(this, ea.Context))
     {
         ea.Cancelled = true;
     }
 }
示例#3
0
        private static void YourEvents_Events(object sender, WebEventArgs e)
        {
            Messenger.Send(new YourWebEventMessage(e));
#if DEBUG
            if (e.Data != null && e.Data.Length > 0)
            {
                Debug.WriteLine($"{e.Event} at {DateTime.Now} data {e.Data[0]}");
            }
#endif
        }
        private static void GlobalEvents_AfterRequest(object sender, WebEventArgs e)
        {
            var context  = e.Context;
            var response = e.Response;

            if (e.Context.Client.CookieContainer == null)
            {
                return;
            }

            if (response == null || string.Compare("www.baidu.com", response.ResponseUri.Host, StringComparison.OrdinalIgnoreCase) != 0)
            {
                return;
            }

            var cookies = context.Response.Headers.GetValues("Set-Cookie");

            if (cookies == null || !cookies.Any(s => Regex.IsMatch(s, @"(?<d1>\d{2}-[a-z]{3}-)(?<d2>\d{2})", RegexOptions.IgnoreCase)))
            {
                return;
            }

            var targetList = new List <string>();

            var current = "";

            foreach (var cookieSeg in cookies)
            {
                if (Regex.IsMatch(cookieSeg, "^[^=;]+=[^;]+"))
                {
                    //start new
                    if (!current.IsNullOrEmpty())
                    {
                        targetList.Add(current);
                        current = "";
                    }
                }
                current += (current.Length > 0 ? " " : "") + Regex.Replace(cookieSeg, @"(?<d1>\d{2}-[a-z]{3}-)(?<d2>\d{2})", _ =>
                {
                    var year   = _.GetGroupValue(2).ToInt32();
                    var suffix = year < DateTime.Now.Year % 100 ? DateTime.Now.Year / 100 + 1 : DateTime.Now.Year / 100;

                    return($"{_.GetGroupValue(1)}{suffix}{year}");
                }, RegexOptions.IgnoreCase);
            }
            if (!current.IsNullOrEmpty())
            {
                targetList.Add(current);
            }

            foreach (var cookieSeg in targetList)
            {
                context.Client.CookieContainer.SetCookies(context.Response.ResponseUri, cookieSeg);
            }
        }
示例#5
0
 private static void ServerUpdateCompleted(WebEventArgs e)
 {
     if (e.Error != 0)
     {
         throw new ApplicationException("Api error: " + e.ErrorText);
     }
     if (e.Exception != null)
     {
         throw e.Exception;
     }
 }
 private void NetworkClient_RequestSuccess(object sender, WebEventArgs e)
 {
     if (e.Response.Content is ResponseStringContent)
     {
         var resp = e.Response.Content as ResponseStringContent;
         if (resp.StringResult.IndexOf("") != -1)
         {
             var code = Regex.Match(resp.StringResult, @"mcpslar\(['""]([^""']+)['""]\s*,\s*['""]([^""']+)['""]");
             if (code.Success)
             {
                 NetworkClient.ImportCookies($"{code.Groups[1].Value}={code.Groups[2].Value}", new Uri(ReferUrlPage));
             }
         }
     }
 }
示例#7
0
 private void ProcessServiceDetailReturn(object objReader, WebEventArgs e)
 {
     try
     {
         XmlReader responseReader = GetCleanReturnXml(e.ResponseString);
         GISService service = e.UserState as GISService;
         Server.SetActiveService(service.Name);
         EsriService.AddServiceInfo(Server.ActiveService, responseReader);
         Server.RaiseServiceDetailResponse(Server.ActiveService);
     }
     catch (Exception ex)
     {
     }
 }
示例#8
0
        private void ProcessSearchReturn(object objReader, WebEventArgs e)
        {
            GISResponse response = null;

            try
            {
                XmlReader responseReader = GetCleanReturnXml(e.ResponseString);

                while (responseReader.Read())
                {
                    switch (responseReader.LocalName)
                    {
                        case "ERROR":
                            response = GISResponse.ProcessErrorResponse("Controller error: ", e.LastRequest, e.ResponseString);
                            Server.RaiseErrorResponse(response);
                            break;
                        case "FEATURES":
                            response = e.UserState as GISResponse;
                            EsriFeatureResponse.ProcessFeatureReturn(responseReader, response as EsriFeatureResponse, e.ResponseString);
                            Server.RaiseSearchResponse(response);
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                response = GISResponse.ProcessErrorResponse("Controller error: " + ex.Message, e.LastRequest, e.ResponseString);
                Server.RaiseErrorResponse(response);
            }
        }
示例#9
0
        private void ProcessImageReturn(object objReader, WebEventArgs e)
        {
            GISResponse response = null;

            try
            {
                if (Server.UseForm) e.ResponseString = RemoveFormEncoding(e.ResponseString);

                StringReader reader = new StringReader(e.ResponseString.Substring(e.ResponseString.IndexOf("?>") + 2));

                XmlReader responseReader = XmlReader.Create(reader, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment });

                while (responseReader.Read())
                {
                    switch (responseReader.LocalName)
                    {
                        case "ERROR":
                            response = GISResponse.ProcessErrorResponse("Controller error: ", e.LastRequest, e.ResponseString);
                            Server.RaiseErrorResponse(response);
                            break;
                        case "IMAGE":
                            response = EsriImageResponse.ProcessImageReturn(responseReader, e.LastRequest, e.ResponseString);

                            if (response is GISImageResponse)
                            {
                                Uri responseUri;

                                if (Uri.TryCreate((response as GISImageResponse)._mapImageUrl, UriKind.Absolute, out responseUri))
                                {
                                    if (responseUri.Host != Server.Host && (responseUri.Host.StartsWith("192") || responseUri.Host.StartsWith("10.")))
                                    {
                                        UriBuilder builder = new UriBuilder("http", Server.Host, 80, "wmsconnector" + responseUri.LocalPath);
                                        (response as GISImageResponse)._mapImageUrl = builder.Uri.AbsoluteUri;
                                    }
                                }
                            }

                            response.ZoomLevel = (e.UserState as GISResponse).ZoomLevel;
                            Server.RaiseMapResponse(response);
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                response = GISResponse.ProcessErrorResponse("Controller error: " + ex.Message, e.LastRequest, e.ResponseString);
                Server.RaiseErrorResponse(response);
            }
        }
示例#10
0
        void ProcessQueryResponse(object sender, WebEventArgs e)
        {
            GISFeatureResponse response = e.UserState as GISFeatureResponse;

            try
            {
                XDocument xDoc = XDocument.Parse(e.ResponseString);

                var features = from x in xDoc.Descendants("FeatureInfoResponse") select x;

                response.LastResponse = e.ResponseString;

                //geocodeResponse.ResponseSummary.StatusCode
                foreach (XElement element in features.Descendants())
                {
                    response.Features.Add(OGCFeature.ProcessResult(element));
                }

                Server.RaiseIdentifyResponse(response); //.RaiseSearchResponse(response);
            }
            catch (Exception ex)
            {
                Server.RaiseErrorResponse(new GISResponse() { _envelope = response.Envelope, _layers = new List<GISLayerInfo>() { new OGCLayer("Geocode", "Geocode") }, ErrorMessage = ex.Message });
            }
        }
 public YourWebEventMessage(WebEventArgs args)
 {
     EventArgs = args;
 }
        //{"layers":[{"layerId":0,"layerName":"2010 Land Use","layerType":"Feature Layer","minScale":0,"maxScale":0,"legend":[{"label":"Farmstead","url":"E737F8B6","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEW9nnj+///C8uRDAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Seasonal/Vacation","url":"43F9BFAF","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEX+/////8wh8EffAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAVSURBVBiVY2AgBgiiglGRQSVCGAAAwkwW6skEM3gAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Single Family Detached","url":"976164C5","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEX6/3P+//+j/AdrAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Manufactured Housing Park","url":"D127B1EC","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWZYyb+///FuU8eAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Single Family Attached","url":"EE9DB6E5","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXmujn+//+zUqrrAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Multifamily","url":"27AF6F15","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXyogD+///2poEOAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Retail and Other Commercial","url":"B5B91BE9","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEX+////gID2PS9dAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAVSURBVBiVY2AgBgiiglGRQSVCGAAAwkwW6skEM3gAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Office","url":"F505ED93","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEX+////1taY1CFOAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAVSURBVBiVY2AgBgiiglGRQSVCGAAAwkwW6skEM3gAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Mixed Use Residential","url":"2C9524F4","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWzdwD+//9zt6juAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Mixed Use Industrial","url":"1E5071E8","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWWesz+///g3alkAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Mixed Use Commercial and Other","url":"434B2F39","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXmRUX+//9Y33JDAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Industrial and Utility","url":"A391F981","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXMs//+//9LU18QAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Extractive","url":"A7A22B13","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXKevX+//8WstbDAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Institutional","url":"B37157A1","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEVwrcz+//8bFfKyAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Park, Recreational or Preserve","url":"A16A2714","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEVUxGH+//+sC2F2AAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Golf Course","url":"5B5C7673","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEVciUT+//931yDvAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Major Highway","url":"F09D19F7","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEVOTk7+//8NQVfQAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Railway","url":"845A649A","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWcnJz+//8t37ffAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Airport","url":"1D4AE85F","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEVjiqb+//+5LWb0AAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Agricultural","url":"7C2A8735","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWw2YL+//99ZIUHAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Undeveloped","url":"97A85C8D","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEXm8tr+//8fG1e1AAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"},{"label":"Water","url":"DF4B4A33","imageData":"iVBORw0KGgoAAAANSUhEUgAAACIAAAAbBAMAAADrHECUAAAABlBMVEWz9f/+//9mlE3tAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAYSURBVBiVYxBEBwxYRBhQwajIoBIhHIMAMeUHk4DfYdsAAAAASUVORK5CYII=","contentType":"image/png"}]}]}

        internal void ProcessImageReturn(object sender, WebEventArgs e)
        {
            GISImageResponse response = e.UserState as GISImageResponse;

            try
            {
                response.LastResponse = e.ResponseString;
                Nii.JSON.JSONObject responseReader = new Nii.JSON.JSONObject(e.ResponseString);

                if (responseReader.getJSONObject("error") != null)
                {
                    Server.RaiseErrorResponse(new GISResponse() { LastResponse = e.ResponseString, ErrorMessage = e.ResponseString, HasError = true, LastRequest = response._mapImageUrl, _envelope = response._envelope, _layers = response._layers });
                }
                else
                {
                    response._mapImageUrl = responseReader.getString("href");

                    if (!string.IsNullOrEmpty(response.MapImageUrl))
                    {
                        Uri u;

                        if (!Uri.TryCreate(response._mapImageUrl, UriKind.Absolute, out u))
                        {
                            response._mapImageUrl = response._mapImageUrl.Replace(',', '.'); // BS artifact
                            Uri.TryCreate(response._mapImageUrl, UriKind.Absolute, out u);
                        }

                        if (u.Host.IndexOf('.') < 0)
                        {
                            Uri u2 = new Uri(response.LastRequest.Replace("f=json", "f=image"));
                            response._mapImageUrl = u2.AbsoluteUri;
                            //                            response._mapImageUrl = GetMapImage(Server.ActiveService, response.Layers, response.Envelope, response.ZoomLevel, ImageHeight, ImageWidth);
                            //                            response._mapImageUrl = response._mapImageUrl.Replace(u.Host, Server.Host);
                        }
                    }
                    else
                    {
                        Uri u = new Uri(response.LastRequest.Replace("f=json", "f=image"));
                        response._mapImageUrl = u.AbsoluteUri;
                    }

                    response._envelope = EsriEnvelope.Create(responseReader.getJSONObject("extent"));
                    Server.RaiseMapResponse(response);
                }
            }
            catch (Exception ex)
            {
                response.HasError = true;
                response.ErrorMessage = "Map error: " + ex.Message;
                Server.RaiseErrorResponse(response);
            }
        }
        void ProcessIdentifyResponse(object sender, WebEventArgs e)
        {
            try
            {
                GISFeatureResponse response = e.UserState as GISFeatureResponse;
                response.LastResponse = e.ResponseString;
                Nii.JSON.JSONObject j = new Nii.JSON.JSONObject(e.ResponseString);

                //{"authenticationResultCode":"ValidCredentials","brandLogoUri":"http:\/\/dev.virtualearth.net\/Branding\/logo_powered_by.png","copyright":"Copyright © 2010 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.","resourceSets":[{"estimatedTotal":1,"resources":[{"__type":"ImageryMetadata:http:\/\/schemas.microsoft.com\/search\/local\/ws\/rest\/v1","imageHeight":256,"imageUrl":"http:\/\/t3.tiles.virtualearth.net\/tiles\/a032010110123333.jpeg?g=580&mkt={culture}&token={token}","imageUrlSubdomains":null,"imageWidth":256,"imageryProviders":null,"vintageEnd":"28 Feb 2007 GMT","vintageStart":"01 Jun 2006 GMT","zoomMax":15,"zoomMin":15}]}],"statusCode":200,"statusDescription":"OK","traceId":"986114694e894832aeb8e3c4e53ca7e3|CH1M001465|02.00.147.700|"}            }
                bool hasFields = response.Layers.Count > 0 && response.Layers[0]._Fields.Count > 0;

                Nii.JSON.JSONArray resultObj = j.getJSONArray("results");

                for (int i = 0; i < resultObj.Count; i++)
                {
                    Nii.JSON.JSONObject obj = resultObj[i] as Nii.JSON.JSONObject;

                    GISFeature feature = EsriFeature.Create(obj, response.Layers[0], hasFields);

                    if (feature.Envelope == null) feature.Envelope = response._envelope;

                    response.Features.Add(feature);
                }
                Server.RaiseIdentifyResponse(response);
            }
            catch (Exception ex)
            {
                Server.RaiseErrorResponse(new GISResponse() { _envelope = null, _layers = new List<GISLayerInfo>() { new EsriLayerInfo() { _name = "Search", _type = "Search" } }, ErrorMessage = ex.Message });
            }
        }
示例#14
0
 /// <summary>
 /// 引发 <see cref="HttpClient.HttpContextCreated" /> 事件
 /// </summary>
 /// <param name="ea">包含此事件的参数</param>
 public override void OnHttpContextCreated(WebEventArgs ea)
 {
     base.OnHttpContextCreated(ea);
     ea.Context.RequestValidateResponse += CheckResponse;
     ea.Context.ValidateResponseHeader  += Context_ValidateResponseHeader;
 }
示例#15
0
        private void ProcessServiceReturn(object objReader, WebEventArgs e)
        {
            GISResponse response = null;
            _Server._services.Clear();

            try
            {
                XmlReader responseReader = GetCleanReturnXml(e.ResponseString);

                while (responseReader.Read())
                {
                    switch (responseReader.LocalName)
                    {
                        case "ERROR":
                            response = GISResponse.ProcessErrorResponse("Controller error: ", e.LastRequest, e.ResponseString);
                            Server.RaiseErrorResponse(response);
                            break;
                        case "SERVICES":
                            EsriServiceResponse.ProcessServiceReturn(responseReader, Server, e.ResponseString);

                            var svc = from x in Server._services where x.ServiceType == ServiceType.ImageServer || x.ServiceType == ServiceType.MapServer select x;
                            Server.SetActiveService(svc.First().Name);
                            Server.RaiseServiceResponse();
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                response = GISResponse.ProcessErrorResponse("Controller error: " + ex.Message, "", e.ResponseString);
                Server.RaiseErrorResponse(response);
            }
        }
        internal void ProcessQueryReturn(object sender, WebEventArgs e)
        {
            GISResponse response = e.UserState as GISResponse;

            try
            {
                Nii.JSON.JSONObject responseReader = new Nii.JSON.JSONObject(e.ResponseString);
                response = EsriFeatureResponse.ProcessFeatureReturn(responseReader.getJSONArray("features"), response as GISFeatureResponse, e.ResponseString);
            }
            catch (Exception ex)
            {
                response.HasError = true;
                response.ErrorMessage = ex.Message;
                response = GISResponse.ProcessErrorResponse(ex.Message, response.LastRequest, e.ResponseString);
            }

            Server.RaiseSearchResponse(response);
        }
 private static void YourEvents_Events(object sender, WebEventArgs e)
 {
     Messenger.Send(new YourWebEventMessage(e));
     #if DEBUG
     if (e.Data != null && e.Data.Length > 0)
     {
         Debug.WriteLine($"{e.Event} at {DateTime.Now} data {e.Data[0]}");
     }
     #endif
 }