Software /
code /
prosody
Comparison
core/moduleapi.lua @ 13204:c9ef35fab0b1
core.moduleapi: Add :get_option_period for parsing time intervals
E.g. for use in mod_mam and others that take an amount of time before
some (usually cleanup) action is taken.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 16 Jul 2023 19:49:12 +0200 |
parent | 13203:aa6c2692a4be |
child | 13205:0ccd82b965d5 |
comparison
equal
deleted
inserted
replaced
13203:aa6c2692a4be | 13204:c9ef35fab0b1 |
---|---|
19 local time_now = require "prosody.util.time".now; | 19 local time_now = require "prosody.util.time".now; |
20 local format = require "prosody.util.format".format; | 20 local format = require "prosody.util.format".format; |
21 local jid_node = require "prosody.util.jid".node; | 21 local jid_node = require "prosody.util.jid".node; |
22 local jid_split = require "prosody.util.jid".split; | 22 local jid_split = require "prosody.util.jid".split; |
23 local jid_resource = require "prosody.util.jid".resource; | 23 local jid_resource = require "prosody.util.jid".resource; |
24 local human_io = require "prosody.util.human.io"; | |
24 | 25 |
25 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat; | 26 local t_insert, t_remove, t_concat = table.insert, table.remove, table.concat; |
26 local error, setmetatable, type = error, setmetatable, type; | 27 local error, setmetatable, type = error, setmetatable, type; |
27 local ipairs, pairs, select = ipairs, pairs, select; | 28 local ipairs, pairs, select = ipairs, pairs, select; |
28 local tonumber, tostring = tonumber, tostring; | 29 local tonumber, tostring = tonumber, tostring; |
247 return min; | 248 return min; |
248 end | 249 end |
249 if max and ret > max then | 250 if max and ret > max then |
250 self:log("warn", "Config option '%s' out of bounds %g > %g", name, ret, max); | 251 self:log("warn", "Config option '%s' out of bounds %g > %g", name, ret, max); |
251 return max; | 252 return max; |
253 end | |
254 return ret; | |
255 end | |
256 | |
257 function api:get_option_period(name, default_value) | |
258 local value = self:get_option_scalar(name, default_value); | |
259 local num = tonumber(value); | |
260 if num then | |
261 -- assume seconds | |
262 return num; | |
263 end | |
264 local ret = human_io.parse_duration(value); | |
265 if value ~= nil and ret == nil then | |
266 self:log("error", "Config option '%s' not understood, expecting a period", name); | |
252 end | 267 end |
253 return ret; | 268 return ret; |
254 end | 269 end |
255 | 270 |
256 function api:get_option_boolean(name, ...) | 271 function api:get_option_boolean(name, ...) |