@@ -69,42 +69,46 @@ allowedOrigins =
70endpointV1 :: A.Artifacts -> Snap ()
70endpointV1 :: A.Artifacts -> Snap ()
71endpointV1 artifacts =
71endpointV1 artifacts =
72− endpoint artifacts $ \source outcome ->
72+ endpoint artifacts $
73− case outcome of
73+ RenderTemplates
74− Success name builder ->
75− writeBuilder (Html.sandwich name builder)
74+ { onSuccess = Html.sandwich
78− writeBuilder $ renderV1ProblemReport noMain
75+ , onProblems = renderV1ProblemReport
81− writeBuilder $ renderV1ProblemReport $
82− Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
85endpointV2 :: A.Artifacts -> Snap ()
79endpointV2 :: A.Artifacts -> Snap ()
86endpointV2 artifacts =
80endpointV2 artifacts =
87− endpoint artifacts $ \source outcome ->
81+ endpoint artifacts $
88− case outcome of
82+ RenderTemplates
89− Success name builder ->
90− writeBuilder (renderV2SuccessReport name builder)
83+ { onSuccess = renderV2SuccessReport
84+ , onProblems = renderV2ProblemReport
93− writeBuilder $ renderV2ProblemReport noMain
95− BadInput name err ->
88+data RenderTemplates =
96− writeBuilder $ renderV2ProblemReport $
89+ RenderTemplates
97− Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
90+ { onSuccess :: N.Name -> B.Builder -> B.Builder
91+ , onProblems :: Help.Report -> B.Builder
100−endpoint :: A.Artifacts -> (B.ByteString -> Outcome -> Snap ()) -> Snap ()
95+endpoint :: A.Artifacts -> RenderTemplates -> Snap ()
101−endpoint artifacts respondToOutcome =
96+endpoint artifacts templates =
102 Cors.allow POST allowedOrigins $
97 Cors.allow POST allowedOrigins $
103 do result <- foldMultipart defaultUploadPolicy ignoreFile 0
98 do result <- foldMultipart defaultUploadPolicy ignoreFile 0
104 case result of
99 case result of
105 ([("code",source)], 0) ->
100 ([("code",source)], 0) ->
106 do modifyResponse $ setContentType "text/html; charset=utf-8"
101 do modifyResponse $ setContentType "text/html; charset=utf-8"
107− respondToOutcome source (compile artifacts source)
102+ case compile artifacts source of
103+ Success name builder ->
104+ writeBuilder (onSuccess templates name builder)
107+ writeBuilder $ onProblems templates noMain
109+ BadInput name err ->
110+ writeBuilder $ onProblems templates $
111+ Help.compilerReport "/" (Error.Module name "/try" File.zeroTime source err) []
110 do modifyResponse $ setResponseStatus 400 "Bad Request"
114 do modifyResponse $ setResponseStatus 400 "Bad Request"