summaryrefslogtreecommitdiff
path: root/app/Web/Response.hs
diff options
context:
space:
mode:
Diffstat (limited to 'app/Web/Response.hs')
-rw-r--r--app/Web/Response.hs30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/Web/Response.hs b/app/Web/Response.hs
new file mode 100644
index 0000000..3c393ad
--- /dev/null
+++ b/app/Web/Response.hs
@@ -0,0 +1,30 @@
+module Web.Response where
+
+import qualified Data.Text as T
+import Data.Text (Text)
+
+import Web.Utils
+
+data Response
+ = HtmlResponse Int Text -- Код возврата, содержимое HTML
+ | TextResponse Int Text Text -- Код возврата, Content-Type, содержимое HTML
+ deriving Show
+
+notFoundResponse = HtmlResponse 404 (T.pack "<strong>404 Not Found</strong>")
+
+getStatusCode (HtmlResponse code _) = code
+getStatusCode (TextResponse code _ _) = code
+
+getContentType (HtmlResponse _ _) = (T.pack "text/html")
+getContentType (TextResponse _ contentType _) = contentType
+
+getContent (HtmlResponse _ content) = content
+getContent (TextResponse _ _ content) = content
+
+formResponse :: Response -> Text
+formResponse (HtmlResponse code html) =
+ T.strip $ T.unlines
+ $ map T.pack [ "HTTP/1.1 " ++ getStatus code
+ , "Content-Type: text/html; charset=utf-8"
+ , "Connection: close"
+ , "" ] ++ [html]