nitrestful: intercept at `prepare_respond_and_close` instead
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 14 Oct 2016 17:50:40 +0000 (13:50 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Fri, 3 Feb 2017 22:45:03 +0000 (17:45 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/nitrestful.nit

index d5a2c92..2b118a3 100644 (file)
@@ -210,12 +210,15 @@ for mclass in phase.restful_classes do
 
        t.add """
 redef class {{{mclass}}}
-       redef fun answer(request, truncated_uri)
+       redef fun prepare_respond_and_close(request, truncated_uri, http_server)
        do
                var resources = truncated_uri.split("/")
                if resources.not_empty and resources.first.is_empty then resources.shift
 
-               if resources.length != 1 then return super
+               if resources.length != 1 then
+                       super
+                       return
+               end
                var resource = resources.first
 
 """
@@ -273,7 +276,10 @@ redef class {{{mclass}}}
                if args.not_empty then sig = "({args.join(", ")})"
 
                t.add """
-                       return {{{method.name}}}{{{sig}}}
+                               var response = {{{method.name}}}{{{sig}}}
+                               http_server.respond response
+                               http_server.close
+                               return
 """
 
                if isas.not_empty then t.add """
@@ -285,7 +291,7 @@ redef class {{{mclass}}}
        end
 
        t.add """
-               return super
+               super
        end
 end"""
 end