Mercurial Hosting > luan
comparison src/luan/modules/http/Http.luan @ 1259:e8020216dee7
add Luan.to_luan and fix multipart/form-data
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 23 Sep 2018 17:58:40 -0600 |
parents | e38f5869e9df |
children | 4b5b84853f6f |
comparison
equal
deleted
inserted
replaced
1258:e4d7a3114fa8 | 1259:e8020216dee7 |
---|---|
2 local Luan = require "luan:Luan.luan" | 2 local Luan = require "luan:Luan.luan" |
3 local error = Luan.error | 3 local error = Luan.error |
4 local ipairs = Luan.ipairs or error() | 4 local ipairs = Luan.ipairs or error() |
5 local pairs = Luan.pairs or error() | 5 local pairs = Luan.pairs or error() |
6 local type = Luan.type or error() | 6 local type = Luan.type or error() |
7 local to_luan = Luan.to_luan or error() | |
7 local Io = require "luan:Io.luan" | 8 local Io = require "luan:Io.luan" |
8 local Html = require "luan:Html.luan" | 9 local Html = require "luan:Html.luan" |
9 local Table = require "luan:Table.luan" | 10 local Table = require "luan:Table.luan" |
10 local clear = Table.clear or error() | 11 local clear = Table.clear or error() |
11 local Package = require "luan:Package.luan" | 12 local Package = require "luan:Package.luan" |
12 local String = require "luan:String.luan" | 13 local String = require "luan:String.luan" |
13 local lower = String.lower or error() | 14 local lower = String.lower or error() |
14 local matches = String.matches or error() | 15 local matches = String.matches or error() |
15 local IoLuan = require "java:luan.modules.IoLuan" | 16 local IoLuan = require "java:luan.modules.IoLuan" |
16 local JavaLuan = require "java:luan.Luan" | 17 local LuanJava = require "java:luan.Luan" |
18 local Request = require "java:luan.webserver.Request" | |
17 local Response = require "java:luan.webserver.Response" | 19 local Response = require "java:luan.webserver.Response" |
18 local ResponseOutputStream = require "java:luan.webserver.ResponseOutputStream" | 20 local ResponseOutputStream = require "java:luan.webserver.ResponseOutputStream" |
19 local Status = require "java:luan.webserver.Status" | 21 local Status = require "java:luan.webserver.Status" |
20 local OutputStreamWriter = require "java:java.io.OutputStreamWriter" | 22 local OutputStreamWriter = require "java:java.io.OutputStreamWriter" |
21 local HashMap = require "java:java.util.HashMap" | 23 local HashMap = require "java:java.util.HashMap" |
22 | 24 |
23 | 25 |
24 local Http = {} | 26 local Http = {} |
27 | |
28 local old_java_to_luan = Luan.java_to_luan or error() | |
29 | |
30 local function java_to_luan(obj) | |
31 obj = old_java_to_luan(obj) | |
32 if type(obj)=="java" and obj.instanceof(Request.MultipartFile) then | |
33 return { | |
34 filename = obj.filename | |
35 content_type = obj.contentType | |
36 content = obj.content | |
37 } | |
38 end | |
39 return obj | |
40 end | |
25 | 41 |
26 function Http.new_request(java) | 42 function Http.new_request(java) |
27 local this = {} | 43 local this = {} |
28 Http.request = this | 44 Http.request = this |
29 if java == nil then | 45 if java == nil then |
38 this.method = java.method or error() | 54 this.method = java.method or error() |
39 this.raw_path = java.rawPath or error() | 55 this.raw_path = java.rawPath or error() |
40 this.path = java.path or error() | 56 this.path = java.path or error() |
41 this.protocol = java.protocol or error() | 57 this.protocol = java.protocol or error() |
42 this.scheme = java.scheme or error() | 58 this.scheme = java.scheme or error() |
43 this.headers = JavaLuan.toLuan(java.headers) | 59 this.headers = to_luan(java.headers) |
44 this.parameters = JavaLuan.toLuan(java.parameters) | 60 this.parameters = to_luan(java.parameters,java_to_luan) |
45 this.cookies = JavaLuan.toLuan(java.cookies) | 61 this.cookies = to_luan(java.cookies) |
46 end | 62 end |
47 | 63 |
48 function this.url() | 64 function this.url() |
49 return this.scheme.."://"..this.headers["host"]..this.raw_path | 65 return this.scheme.."://"..this.headers["host"]..this.raw_path |
50 end | 66 end |
133 local java = response.java or error() | 149 local java = response.java or error() |
134 java.status = Status.getStatus(response.status) | 150 java.status = Status.getStatus(response.status) |
135 for name, value in pairs(response.headers) do | 151 for name, value in pairs(response.headers) do |
136 type(name)=="string" or "header name must be string" | 152 type(name)=="string" or "header name must be string" |
137 name = lower(name) | 153 name = lower(name) |
138 value = JavaLuan.toJava(value) | 154 value = LuanJava.toJava(value) |
139 java.headers.put(name,value) | 155 java.headers.put(name,value) |
140 end | 156 end |
141 response.writer and response.writer.close() | 157 response.writer and response.writer.close() |
142 return java | 158 return java |
143 end | 159 end |