Mercurial Hosting > luan
comparison http/src/luan/modules/http/Http.luan @ 572:f1601a4ce1aa
fix stack when calling meta-methods
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 12 Jul 2015 21:34:23 -0600 |
parents | aa17ad66a370 |
children | 1e69d9c21461 |
comparison
equal
deleted
inserted
replaced
571:cd944b010f25 | 572:f1601a4ce1aa |
---|---|
1 java() | 1 java() |
2 local Luan = require "luan:Luan" | 2 local Luan = require "luan:Luan" |
3 local ipairs = Luan.ipairs | |
4 local pairs = Luan.pairs | |
5 local error = Luan.error | 3 local error = Luan.error |
6 local set_metatable = Luan.set_metatable | 4 local ipairs = Luan.ipairs or error() |
5 local pairs = Luan.pairs or error() | |
6 local set_metatable = Luan.set_metatable or error() | |
7 local Io = require "luan:Io" | 7 local Io = require "luan:Io" |
8 local Html = require "luan:Html" | 8 local Html = require "luan:Html" |
9 local url_encode = Html.url_encode | 9 local url_encode = Html.url_encode or error() |
10 local HttpServicer = require "java:luan.modules.http.HttpServicer" | 10 local HttpServicer = require "java:luan.modules.http.HttpServicer" |
11 local IoLuan = require "java:luan.modules.IoLuan" | 11 local IoLuan = require "java:luan.modules.IoLuan" |
12 | 12 |
13 local M = {} | 13 local M = {} |
14 | 14 |
28 return function() | 28 return function() |
29 local key, value = iter() | 29 local key, value = iter() |
30 return key, value and value[1] | 30 return key, value and value[1] |
31 end | 31 end |
32 end | 32 end |
33 | |
34 local function sent_error() | |
35 error "headers are not accessible after you start writing content" | |
36 end | |
37 | |
38 M.sent_error_metatable = { __index=sent_error, __new_index=sent_error } | |
39 | |
33 | 40 |
34 | 41 |
35 local function new_common(this) | 42 local function new_common(this) |
36 this = this or {} | 43 this = this or {} |
37 this.headers = {} | 44 this.headers = {} |
102 HttpServicer.removeCookie(M.request.java,this.java,name,domain) | 109 HttpServicer.removeCookie(M.request.java,this.java,name,domain) |
103 end | 110 end |
104 | 111 |
105 function this.set() | 112 function this.set() |
106 HttpServicer.setResponse(this,this.java) | 113 HttpServicer.setResponse(this,this.java) |
114 set_metatable(this.headers,M.sent_error_metatable) | |
107 end | 115 end |
108 | 116 |
109 function this.text_writer() | 117 function this.text_writer() |
110 this.set() | 118 this.set() |
111 return IoLuan.textWriter(this.java.getWriter()) | 119 return IoLuan.textWriter(this.java.getWriter()) |