-
Notifications
You must be signed in to change notification settings - Fork 0
/
encoding.lua
64 lines (56 loc) · 1.58 KB
/
encoding.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
--[[
Coronium LS - encoding/decoding module
Copyright 2016 C.Byerley
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
local json_safe = require('cjson.safe')
local function json_encode( content )
if type(content) == 'userdata' then
return nil, "Cannot convert userdata."
end
if type(content) == 'table' then
local res, err = json_safe.encode( content )
if not res then
return nil, err
end
return res, nil
else
return tostring( content ), nil
end
end
local function json_decode( str )
if type( str ) == 'string' then
local res, err = json_safe.decode( str )
if not res then
return nil, err
end
return res, nil
else
return tostring( str )
end
end
local _exports =
{
decode = {
uri = ngx.unescape_uri,--encoded
qstr = ngx.decode_args, -- str
b64 = ngx.decode_base64, -- b64 str
json = json_decode
},
encode = {
uri = ngx.escape_uri, --plain
qstr = ngx.encode_args, --tbl
b64 = ngx.encode_base64, --str
json = json_encode
}
}
return _exports