コード例 #1
0
        public HttpResponse processRequest(HttpRequest request)
        {

            String requestUri = request.RequestUri;

            if (requestUri.EndsWith("/"))
            {
                requestUri = requestUri + "index.html";
            }

            { // some validation
                validateRequestUri(requestUri);
                validateMimeTypeForRequestUri(requestUri);
            }

			FileInfo absoluteFileInfo = toAbsoluteFileInfo(requestUri);


			String eTag = getETag(absoluteFileInfo);

			HttpResponse answer;

			String ifNoneMatch = request.getHttpHeader("if-none-match");
			if (null != ifNoneMatch && ifNoneMatch.Equals(eTag))
			{
				answer = new HttpResponse(HttpStatus.NOT_MODIFIED_304);
			}
			else {

				Entity body = readFile(absoluteFileInfo);
				answer = new HttpResponse(HttpStatus.OK_200, body);
				String contentType = MimeTypes.getMimeTypeForPath(requestUri);
				answer.setContentType(contentType);

			}

			if (null != _cacheControl)
			{
				answer.putHeader(_cacheControl.getName(), _cacheControl.getValue());
			}
				

			{
				answer.putHeader("Date", DateTime.UtcNow.ToString("R"));
			}

			{
				var lastModified = absoluteFileInfo.LastWriteTimeUtc;
				answer.putHeader("Last-Modified", lastModified.ToString("R"));
			}


			answer.putHeader("ETag", eTag);
			return answer;

        }