@@ -1,7 +1,8 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}
2{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}
3module Endpoint.Compile
3module Endpoint.Compile
4− ( endpoint
4+ ( endpointV1
5 , loadErrorJS
6 , loadErrorJS
@@ -66,23 +67,49 @@ allowedOrigins =
66-- ENDPOINT
67-- ENDPOINT
70+endpointV1 :: A.Artifacts -> Snap ()
71+endpointV1 artifacts =
72+ endpoint artifacts $ \source outcome ->
73+ do modifyResponse $ setContentType "text/html; charset=utf-8"
79+ writeBuilder $ renderHtmlReport noMain
82+ writeBuilder $ renderHtmlReport $
83+ Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
69−endpoint :: A.Artifacts -> Snap ()
86+endpointV2 :: A.Artifacts -> Snap ()
87+endpointV2 artifacts =
70−endpoint artifacts =
88+ endpoint artifacts $ \source outcome ->
91+ do modifyResponse $ setContentType "text/html; charset=utf-8"
95+ do modifyResponse $ setResponseStatus 400 "Bad Request"
96+ modifyResponse $ setContentType "text/json; charset=utf-8"
97+ writeBuilder $ renderJsonReport noMain
100+ do modifyResponse $ setResponseStatus 400 "Bad Request"
101+ modifyResponse $ setContentType "text/json; charset=utf-8"
102+ writeBuilder $ renderJsonReport $
103+ Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
106+endpoint :: A.Artifacts -> (B.ByteString -> Outcome -> Snap ()) -> Snap ()
107+endpoint artifacts respondToOutcome =
71 Cors.allow POST allowedOrigins $
108 Cors.allow POST allowedOrigins $
72 do result <- foldMultipart defaultUploadPolicy ignoreFile 0
109 do result <- foldMultipart defaultUploadPolicy ignoreFile 0
73 case result of
110 case result of
74 ([("code",source)], 0) ->
111 ([("code",source)], 0) ->
75− do modifyResponse $ setContentType "text/html; charset=utf-8"
76− case compile artifacts source of
112+ respondToOutcome source (compile artifacts source)
81− writeBuilder $ renderReport noMain
84− writeBuilder $ renderReport $
85− Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
88 do modifyResponse $ setResponseStatus 400 "Bad Request"
115 do modifyResponse $ setResponseStatus 400 "Bad Request"
@@ -166,8 +193,13 @@ checkImports interfaces imports =
166-- RENDER REPORT
193-- RENDER REPORT
169−renderReport :: Help.Report -> B.Builder
196+renderJsonReport :: Help.Report -> B.Builder
170−renderReport report =
197+renderJsonReport report =
198+ Encode.encodeUgly (Exit.toJson report)
201+renderHtmlReport :: Help.Report -> B.Builder
202+renderHtmlReport report =
171 [r|<!DOCTYPE HTML>
203 [r|<!DOCTYPE HTML>