public bool ProcessMarkdownPage(IHttpRequest httpReq, MarkdownPage markdownPage, object dto, IHttpResponse httpRes) { httpRes.AddHeaderLastModified(markdownPage.GetLastModified()); var renderInTemplate = true; var renderHtml = true; string format; if (httpReq != null && (format = httpReq.QueryString["format"]) != null) { renderHtml = !(format.StartsWithIgnoreCase("markdown") || format.StartsWithIgnoreCase("text") || format.StartsWithIgnoreCase("plain")); renderInTemplate = !httpReq.GetFormatModifier().StartsWithIgnoreCase("bare"); } if (!renderHtml) { httpRes.ContentType = ContentType.PlainText; } var markup = RenderDynamicPage(markdownPage, markdownPage.Name, dto, renderHtml, renderInTemplate); var markupBytes = markup.ToUtf8Bytes(); httpRes.OutputStream.Write(markupBytes, 0, markupBytes.Length); return(true); }
public bool ProcessRazorPage(IHttpRequest httpReq, RazorPage razorPage, object dto, IHttpResponse httpRes) { httpRes.AddHeaderLastModified(razorPage.GetLastModified()); var templatePath = razorPage.TemplatePath; if (httpReq != null && httpReq.QueryString["format"] != null) { if (!httpReq.GetFormatModifier().StartsWithIgnoreCase("bare")) { templatePath = null; } } var template = ExecuteTemplate(dto, razorPage.PageName, templatePath, httpRes); var html = template.Result; var htmlBytes = html.ToUtf8Bytes(); httpRes.OutputStream.Write(htmlBytes, 0, htmlBytes.Length); return(true); }
public bool ProcessMarkdownPage(IHttpRequest httpReq, MarkdownPage markdownPage, object dto, IHttpResponse httpRes) { httpRes.AddHeaderLastModified(markdownPage.GetLastModified()); var renderInTemplate = true; var renderHtml = true; string format; if (httpReq != null && (format = httpReq.QueryString["format"]) != null) { renderHtml = !(format.StartsWithIgnoreCase("markdown") || format.StartsWithIgnoreCase("text") || format.StartsWithIgnoreCase("plain")); renderInTemplate = !httpReq.GetFormatModifier().StartsWithIgnoreCase("bare"); } if (!renderHtml) { httpRes.ContentType = ContentType.PlainText; } var template = httpReq.GetTemplate(); var markup = RenderDynamicPage(markdownPage, markdownPage.Name, dto, renderHtml, renderInTemplate, template); var markupBytes = markup.ToUtf8Bytes(); httpRes.OutputStream.Write(markupBytes, 0, markupBytes.Length); return true; }
public void ProcessRequest(IHttpRequest request, IHttpResponse response, string operationName) { var fileName = request.GetPhysicalPath(); var fi = new FileInfo(fileName); if (!fi.Exists) { if ((fi.Attributes & FileAttributes.Directory) != 0) { foreach (var defaultDoc in EndpointHost.Config.DefaultDocuments) { var defaultFileName = Path.Combine(fi.FullName, defaultDoc); if (!File.Exists(defaultFileName)) { continue; } response.Redirect(request.GetPathUrl() + '/' + defaultDoc); return; } } if (!fi.Exists) { throw new HttpException(404, "File '" + request.PathInfo + "' not found."); } } TimeSpan maxAge; if (response.ContentType != null && EndpointHost.Config.AddMaxAgeForStaticMimeTypes.TryGetValue(response.ContentType, out maxAge)) { response.AddHeader(HttpHeaders.CacheControl, "max-age=" + maxAge.TotalSeconds); } if (request.HasNotModifiedSince(fi.LastWriteTime)) { response.ContentType = MimeTypes.GetMimeType(fileName); response.StatusCode = 304; return; } try { response.AddHeaderLastModified(fi.LastWriteTime); response.ContentType = MimeTypes.GetMimeType(fileName); if (fileName.EqualsIgnoreCase(this.DefaultFilePath)) { if (fi.LastWriteTime > this.DefaultFileModified) { SetDefaultFile(this.DefaultFilePath); //reload } response.OutputStream.Write(this.DefaultFileContents, 0, this.DefaultFileContents.Length); response.Close(); return; } if (!Env.IsMono) { response.TransmitFile(fileName); } else { response.WriteFile(fileName); } } catch (Exception) { throw new HttpException(403, "Forbidden."); } }
public void ProcessRequest(IHttpRequest request, IHttpResponse response, string operationName) { var fileName = request.GetPhysicalPath(); var fi = new FileInfo(fileName); if (!fi.Exists) { if ((fi.Attributes & FileAttributes.Directory) != 0) { foreach (var defaultDoc in EndpointHost.Config.DefaultDocuments) { var defaultFileName = Path.Combine(fi.FullName, defaultDoc); var defaultFileInfo = new FileInfo(defaultFileName); if (!defaultFileInfo.Exists) continue; response.Redirect(request.GetPathUrl() + '/' + defaultDoc); return; } } if (!fi.Exists) throw new HttpException(404, "File '" + request.PathInfo + "' not found."); } if (request.HasNotModifiedSince(fi.LastWriteTime)) { response.ContentType = MimeTypes.GetMimeType(fileName); response.StatusCode = 304; return; } try { response.AddHeaderLastModified(fi.LastWriteTime); response.ContentType = MimeTypes.GetMimeType(fileName); if (!Env.IsMono) { response.TransmitFile(fileName); } else { response.WriteFile(fileName); } } catch (Exception) { throw new HttpException(403, "Forbidden."); } }
public void ProcessRequest(IHttpRequest request, IHttpResponse response, string operationName) { ServiceStack.WebHost.Endpoints.EndpointHost.AddGlobalResponseHeaders(response); var fileName = request.GetPhysicalPath(); var fi = new FileInfo(fileName); if (!fi.Exists) { if ((fi.Attributes & FileAttributes.Directory) != 0) { foreach (var defaultDoc in EndpointHost.Config.DefaultDocuments) { var defaultFileName = Path.Combine(fi.FullName, defaultDoc); if (!File.Exists(defaultFileName)) continue; response.Redirect(request.GetPathUrl() + '/' + defaultDoc); return; } } if (!fi.Exists) throw new HttpException(404, "File '" + request.PathInfo + "' not found."); } TimeSpan maxAge; if (response.ContentType != null && EndpointHost.Config.AddMaxAgeForStaticMimeTypes.TryGetValue(response.ContentType, out maxAge)) { response.AddHeader(HttpHeaders.CacheControl, "max-age=" + maxAge.TotalSeconds); } if (request.HasNotModifiedSince(fi.LastWriteTime)) { response.ContentType = MimeTypes.GetMimeType(fileName); response.StatusCode = 304; return; } try { response.AddHeaderLastModified(fi.LastWriteTime); response.ContentType = MimeTypes.GetMimeType(fileName); if (fileName.EqualsIgnoreCase(this.DefaultFilePath)) { if (fi.LastWriteTime > this.DefaultFileModified) SetDefaultFile(this.DefaultFilePath); //reload response.OutputStream.Write(this.DefaultFileContents, 0, this.DefaultFileContents.Length); response.Close(); return; } if (!Env.IsMono) { response.TransmitFile(fileName); } else { response.WriteFile(fileName); } } catch (Exception) { throw new HttpException(403, "Forbidden."); } }