You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
3.2 KiB
Lua

local type = type
local pairs = pairs
local type = type
local mceil = math.ceil
local mfloor = math.floor
local mrandom = math.random
local mmodf = math.modf
local sgsub = string.gsub
local tinsert = table.insert
local date = require("app.libs.date")
local resty_sha256 = require "resty.sha256"
local str = require "resty.string"
local ngx_quote_sql_str = ngx.quote_sql_str
local _M = {}
function _M.encode(s)
local sha256 = resty_sha256:new()
sha256:update(s)
local digest = sha256:final()
return str.to_hex(digest)
end
function _M.clear_slash(s)
s, _ = sgsub(s, "(/+)", "/")
return s
end
function _M.is_table_empty(t)
if t == nil or _G.next(t) == nil then
return true
else
return false
end
end
function _M.table_is_array(t)
if type(t) ~= "table" then return false end
local i = 0
for _ in pairs(t) do
i = i + 1
if t[i] == nil then return false end
end
return true
end
function _M.mixin(a, b)
if a and b then
for k, v in pairs(b) do
a[k] = b[k]
end
end
return a
end
function _M.random()
return mrandom(0, 1000)
end
function _M.total_page(total_count, page_size)
local total_page = 0
if total_count % page_size == 0 then
total_page = total_count / page_size
else
local tmp, _ = mmodf(total_count/page_size)
total_page = tmp + 1
end
return total_page
end
function _M.days_after_registry(req)
local diff = 0
local diff_days = 0 -- default value, days after registry
if req and req.session then
local user = req.session.get("user")
local create_time = user and user.create_time
if create_time then
local now = date() -- seconds
create_time = date(create_time)
diff = date.diff(now, create_time):spandays()
diff_days = mfloor(diff)
end
end
return diff_days, diff
end
function _M.now()
local n = date()
local result = n:fmt("%Y-%m-%d %H:%M:%S")
return result
end
function _M.secure_str(str)
return ngx_quote_sql_str(str)
end
function _M.string_split(str, delimiter)
if str==nil or str=='' or delimiter==nil then
return nil
end
local result = {}
for match in (str..delimiter):gmatch("(.-)"..delimiter) do
tinsert(result, match)
end
return result
end
return _M
-- local resty_sha256 = require "resty.sha256"
-- local str = require "resty.string"
-- local sha256 = resty_sha256:new()
-- ngx.say(sha256:update("hello"))
-- local digest = sha256:final()
-- ngx.say("sha256: ", str.to_hex(digest))
-- local resty_md5 = require "resty.md5"
-- local md5 = resty_md5:new()
-- if not md5 then
-- ngx.say("failed to create md5 object")
-- return
-- end
-- local ok = md5:update("hel")
-- if not ok then
-- ngx.say("failed to add data")
-- return
-- end
-- ok = md5:update("lo")
-- if not ok then
-- ngx.say("failed to add data")
-- return
-- end
-- local digest = md5:final()
-- local str = require "resty.string"
-- ngx.say("md5: ", str.to_hex(digest))
-- -- yield "md5: 5d41402abc4b2a76b9719d911017c592"