logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 0734e1fe33c5c7c837655ccd43161d8b08d68cf7
parent: 44cb08297c4fd992f3438b8cac99e1364edd4847
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Sat, 27 May 2017 00:53:48 +0200

Language filtering in streaming API (#3339)


Diffstat:

Mstreaming/index.js8+++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/streaming/index.js b/streaming/index.js @@ -168,7 +168,7 @@ if (cluster.isMaster) { return; } - client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 LIMIT 1', [token], (err, result) => { + client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.filtered_languages FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 LIMIT 1', [token], (err, result) => { done(); if (err) { @@ -185,6 +185,7 @@ if (cluster.isMaster) { } req.accountId = result.rows[0].account_id; + req.filteredLanguages = result.rows[0].filtered_languages; next(); }); @@ -248,6 +249,11 @@ if (cluster.isMaster) { const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id)).concat(unpackedPayload.reblog ? [unpackedPayload.reblog.account.id] : []); const accountDomain = unpackedPayload.account.acct.split('@')[1]; + if (req.filteredLanguages.indexOf(unpackedPayload.language) !== -1) { + log.silly(req.requestId, `Message ${unpackedPayload.id} filtered by language (${unpackedPayload.language})`); + return; + } + const queries = [ client.query(`SELECT 1 FROM blocks WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)}) UNION SELECT 1 FROM mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 1)})`, [req.accountId].concat(targetAccountIds)), ];