public System.IO.Stream AxlPost(System.IO.Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } string user, pwd; var request = Request(out user, out pwd); NameValueCollection queryString = KeysToLower(request.UriTemplateMatch.QueryParameters); //DateTime td = DateTime.Now; //Console.WriteLine("Start AXL Request " + td.ToLongTimeString() + "." + td.Millisecond + " (" + queryString["servicename"] + ")"); string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; if (queryString["cmd"] != null) { context.ContentType = "text/plain; charset=UTF-8"; switch (queryString["cmd"].ToLower()) { case "ping": //return new MemoryStream(Encoding.UTF8.GetBytes("IMS v4.0.1\n")); return(new MemoryStream(Encoding.UTF8.GetBytes("IMS v10.0.0\n"))); case "getversion": //return new MemoryStream(Encoding.UTF8.GetBytes("Version:4.0.1\nBuild_Number:630.1700\n")); return(new MemoryStream(Encoding.UTF8.GetBytes("Version=10.0.0\nBuild_Number=183.2159\n"))); } } if (queryString["servicename"] == null) { return(WriteException("Parameter SERVICENAME is requiered!")); } context.ContentType = "text/xml; charset=UTF-8"; int instanceNr = GetRandom(_serverConfig.Instances.Length /*MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection connection = new InstanceConnection("localhost:" + config.Port); string response = connection.Send( Functions.OgcOnlineResource(_serverConfig), queryString["servicename"], input, "BB294D9C-A184-4129-9555-398AA70284BC", user, pwd).Trim(); //Console.WriteLine("Finished AXL Request: " + (DateTime.Now - td).TotalMilliseconds + "ms (" + queryString["servicename"] + ")"); return(new MemoryStream(Encoding.UTF8.GetBytes(response))); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public Stream TileWmts(string name, string cacheType, string origin, string epsg, string style, string level, string row, string col) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } if (IfMatch()) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.StatusCode = HttpStatusCode.NotModified; return(null); } string user, pwd; var request = Request(out user, out pwd); int instanceNr = GetRandom(_serverConfig.Instances.Length /* MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); IServiceRequestInterpreter requestInterpreter = GetInterpreter("wmts"); string ret = conn.Send(String.Empty, name, cacheType + "/" + origin + "/" + epsg + "/" + style + "/~" + level + "/" + row + "/" + col, PlugInManager.PlugInID(requestInterpreter).ToString(), user, pwd); if (ret.StartsWith("image:")) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = "image/png"; ret = ret.Substring(6, ret.Length - 6); return(WriteFile(ret)); } if (ret.StartsWith("{")) { try { var mapServerResponse = gView.Framework.system.MapServerResponse.FromString(ret); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = mapServerResponse.ContentType; if (mapServerResponse.Expires != null) { AppendEtag((DateTime)mapServerResponse.Expires); } return(WriteBytes(mapServerResponse.Data)); } catch { } } return(WriteValue(ret)); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public Stream MapRequestPost(string interpreter, string name, Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } if (IfMatch()) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.StatusCode = HttpStatusCode.NotModified; return(null); } //DateTime td = DateTime.Now; //Console.WriteLine("Start Map Request " + td.ToLongTimeString() + "." + td.Millisecond + " (" + name + ")"); //System.Threading.Thread.Sleep(10000); string user, pwd; var request = Request(out user, out pwd); NameValueCollection queryString = KeysToLower(request.UriTemplateMatch.QueryParameters); string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); if (String.IsNullOrEmpty(input)) { StringBuilder parameters = new StringBuilder(); foreach (string key in queryString.Keys) { if (parameters.Length > 0) { parameters.Append("&"); } parameters.Append(key.ToUpper() + "=" + queryString[key]); } input = parameters.ToString(); } int instanceNr = GetRandom(_serverConfig.Instances.Length /* MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); string onlineResource = _serverConfig.OnlineResource + "/MapRequest/" + interpreter + "/" + name; IServiceRequestInterpreter requestInterpreter = GetInterpreter(interpreter); string ret = conn.Send(onlineResource, name, input, PlugInManager.PlugInID(requestInterpreter).ToString(), user, pwd, input.Contains("tile:render") ? 3600 : 0); //Console.WriteLine("Finished map Request: " + (DateTime.Now - td).TotalMilliseconds + "ms (" + name + ")"); if (ret.StartsWith("image:")) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = "image/png"; ret = ret.Substring(6, ret.Length - 6); return(WriteFile(ret)); } if (ret.StartsWith("{")) { try { var mapServerResponse = gView.Framework.system.MapServerResponse.FromString(ret); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = mapServerResponse.ContentType; if (mapServerResponse.Expires != null) { AppendEtag((DateTime)mapServerResponse.Expires); } return(WriteBytes(mapServerResponse.Data)); } catch { } } return(WriteValue(ret)); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }