示例#1
0
        static KeyValuePair <string, DateTime>[] RequestRecieved(HttpRequest request, TcpClient client)
        {
            List <KeyValuePair <string, DateTime> > timings = new List <KeyValuePair <string, DateTime> >();
            OrganizationRequest requestStruct = new OrganizationRequest();

            requestStruct.requestURI = (request.RequestURI = request.RequestURI.TrimStart('/'));
            RequestType a;

            requestStruct.requestType = (a = GetRequestType(request.RequestURI));
            if (a == RequestType.CDir)
            {
                requestStruct.centralDirectory = true;
            }
            string[] splturi = request.RequestURI.Split('&');
            timings.Add(new KeyValuePair <string, DateTime>("Request Translation", DateTime.Now));
            switch (a)
            {
            case RequestType.Dir:
                if (splturi.Length > 1)
                {
                    if ((requestStruct.selectedDir = CentralDirectory.FindDir(splturi[1])) == null)
                    {
                        SendNotFound(client, timings, true);
                        return(timings.ToArray());
                    }
                }
                else
                {
                    SendNotFound(client, timings, true);
                    return(timings.ToArray());
                }

                break;

            case RequestType.Index:
                break;

            case RequestType.Content:
                if (splturi.Length > 1)
                {
                    if ((requestStruct.selectedThumbnail = CentralDirectory.FindThumbnail(splturi[1])) == null)
                    {
                        SendNotFound(client, timings, false);
                        return(timings.ToArray());
                    }
                }
                else
                {
                    SendNotFound(client, timings, false);
                    return(timings.ToArray());
                }
                break;

            case RequestType.SoftFile:
                if (int.TryParse(splturi[splturi.Length - 1], out int i))
                {
                    requestStruct.selectedFile = CentralDirectory.FirstOrDefault(i);
                    if (requestStruct.selectedFile == null)
                    {
                        SendNotFound(client, timings, true);
                        return(timings.ToArray());
                    }
                }
                else
                {
                    SendNotFound(client, timings, true);
                    return(timings.ToArray());
                }
                break;
            }
            HandleOrganizationRequest(client, requestStruct, timings);
            timings.Add(new KeyValuePair <string, DateTime>("Handle Request", DateTime.Now));
            return(timings.ToArray());
        }