/// <summary> /// Parse the given HTTP request and return the roaming network /// for the given HTTP hostname and HTTP query parameter /// or an HTTP error response. /// </summary> /// <param name="HTTPRequest">A HTTP request.</param> /// <param name="HTTPServer">A HTTP server.</param> /// <param name="RoamingNetwork">The roaming network.</param> /// <param name="HTTPResponse">A HTTP error response.</param> /// <returns>True, when roaming network was found; false else.</returns> public static Boolean ParseRoamingNetwork(this HTTPRequest HTTPRequest, HTTPServer <RoamingNetworks, RoamingNetwork> HTTPServer, out RoamingNetwork RoamingNetwork, out HTTPResponse HTTPResponse) { if (HTTPServer == null) { Console.WriteLine("HTTPServer == null!"); } #region Initial checks if (HTTPRequest == null) { throw new ArgumentNullException("HTTPRequest", "The given HTTP request must not be null!"); } if (HTTPServer == null) { throw new ArgumentNullException("HTTPServer", "The given HTTP server must not be null!"); } #endregion RoamingNetwork_Id RoamingNetworkId; RoamingNetwork = null; HTTPResponse = null; if (HTTPRequest.ParsedURLParameters.Length < 1) { HTTPResponse = new HTTPResponse.Builder(HTTPRequest) { HTTPStatusCode = HTTPStatusCode.BadRequest, Server = HTTPServer.DefaultServerName, Date = DateTime.Now, }; return(false); } if (!RoamingNetwork_Id.TryParse(HTTPRequest.ParsedURLParameters[0], out RoamingNetworkId)) { HTTPResponse = new HTTPResponse.Builder(HTTPRequest) { HTTPStatusCode = HTTPStatusCode.BadRequest, Server = HTTPServer.DefaultServerName, Date = DateTime.Now, ContentType = HTTPContentType.JSON_UTF8, Content = @"{ ""description"": ""Invalid RoamingNetworkId!"" }".ToUTF8Bytes() }; return(false); } RoamingNetwork = HTTPServer. GetAllTenants(HTTPRequest.Host). FirstOrDefault(roamingnetwork => roamingnetwork.Id == RoamingNetworkId); if (RoamingNetwork == null) { HTTPResponse = new HTTPResponse.Builder(HTTPRequest) { HTTPStatusCode = HTTPStatusCode.NotFound, Server = HTTPServer.DefaultServerName, Date = DateTime.Now, ContentType = HTTPContentType.JSON_UTF8, Content = @"{ ""description"": ""Unknown RoamingNetworkId!"" }".ToUTF8Bytes() }; return(false); } return(true); }