import Masto from "mastodon"; export function randomIntFromInterval(min, max) { // min and max included return Math.floor(Math.random() * (max - min + 1) + min) } export function getRandomElementOfArray(listItems) { return listItems[Math.floor(Math.random() * listItems.length)] } let nowDate = new Date() export let defaultConfigMasto = { author: 'curator', visibility: 'public', language: 'fr', sensitive: false, reallySendPost: false, message: "Hey coucou! on est le" + nowDate, scheduled_at: "" } export function sendPostMastodon(config) { // override defaults with input argument config = { ...defaultConfigMasto, ...config, } // require('dotenv').config(); if (process.env['TOKEN_' + config.author.toUpperCase()]) { let visibility = 'public'; let language = 'fr'; let sensitive = false; let accessToken = process.env['TOKEN_' + config.author.toUpperCase()] const masto = new Masto({ access_token: accessToken, api_url: process.env.INSTANCE_MASTODON + '/api/v1/', }); let params = { status: config.message, visibility, language, sensitive } if (config.cw) { params['spoiler_text'] = config.cw } if (config.scheduled_at && config.scheduled_at_bool) { let dateschedule = new Date(config.scheduled_at) params['scheduled_at'] = dateschedule.toISOString() } console.log(config) /** * envoi sans fichier joint */ if (!config.fichier) { if (config.reallySendPost) { masto.post('statuses', params).then(rep => { // console.log('rep', rep) console.log("posté, yay!") }, err => { console.error(err) }) } } /** * envoi avec fichier, * on doit d'abord faire un upload du fichier, * puis relier son id de media au nouveau post. */ // if (config.fichier) { // // masto.post('statuses', params).then(rep => { // console.log('rep', rep) // }, err => { // console.error(err) // }) // res.render('index', {bodyReq: config}) // } } else { console.error('pas de token pour ' + config.author, process.env.TOKEN_curator) } }