Mercurial > prosody-modules
view mod_report_affiliations/traits.lib.lua @ 6280:6ea80b73d8f2
mod_http_oauth2: Only require redirect URIs when using grant types that need it
In the Device flow, no redirect URI is used because the client instead
receives responses by polling. It is therefore unnecessary to enforce a
requirement that these include redirect URI(s).
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 03 Jul 2025 15:42:42 +0200 |
| parents | e905ef16efb7 |
| children |
line wrap: on
line source
local known_traits = {}; local function trait_added(event) local trait = event.item; local name = trait.name; if known_traits[name] then return; end known_traits[name] = trait.probabilities; end local function trait_removed(event) local trait = event.item; known_traits[trait.name] = nil; end module:handle_items("account-trait", trait_added, trait_removed); local function bayes_probability(prior, prob_given_true, prob_given_false) local numerator = prob_given_true * prior; local denominator = numerator + prob_given_false * (1 - prior); return numerator / denominator; end local function prob_is_bad(traits, prior) prior = prior or 0.50; for trait, state in pairs(traits) do local probabilities = known_traits[trait]; if probabilities then if state then prior = bayes_probability( prior, probabilities.prob_bad_true, probabilities.prob_bad_false ); else prior = bayes_probability( prior, 1 - probabilities.prob_bad_true, 1 - probabilities.prob_bad_false ); end end end return prior; end local function get_probability_bad(username, prior) local user_traits = {}; module:fire_event("get-account-traits", { username = username, host = module.host, traits = user_traits }); local result = prob_is_bad(user_traits, prior); return result; end return { get_probability_bad = get_probability_bad; };
