Recibo datos de envío de formularios a través de formularios de Netlify.
Quiero poder crear un archivo md con los mismos datos en github cuando se envía el formulario.
Hasta ahora, en mi función submission-created.js (activada por el envío del cliente), estoy obteniendo los datos de envío del cliente de esta manera:
exports.handler = async function(event, context, callback) { const data = JSON.parse(event.body).payload.data; let date = new Date().toUTCString().replace(/[\s|,|:]/g, "-"); date = date.substring(5, date.length); let courtData = `--- name: Automatic-file-${date} location: lat: ${data?.latitude} lng: ${data?.longitude} email: ${data?.email} byhoopers: ${data?.byhoopers ? data?.byhoopers : false} openUse: ${data?.openUse} openTime: ${data?.openTime ? data?.openTime : "unknown"} social: ${data?.social} image: ${data?.file?.url} formcourt: true --- ${data?.info ? data?.info : ""}     `; return { statusCode: 200, body: JSON.stringify(data), }; };Funciona bien, pero ahora necesito guardar estos datos en un archivo md y enviarlos a github.
Estoy haciendo algo como esto, pero tengo problemas con el siguiente paso:
let githubContent = Buffer.from(courtData).toString('base64'); let courtInfo = JSON.stringify({ message: `new court file ${date}`, content: githubContent, }); let githubPush = { method: "put", url: `https://api.github.com/repos/*****${date}.md`, headers: { Authorization: "*********", "Content-Type": "application/json", }, data: courtInfo, };Axios hizo el trabajo así:
await axios(githubPush) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); return { statusCode: 200, body: JSON.stringify(data), };NOTA ADICIONAL: Además, descubrí que usar Netlify Secrets es una mejor manera de ocultar el token de guthub para aumentar la seguridad.
const API_SECRET = process.env.API_SECRET; Luego cree un archivo .env con API_SECRET = ***** en la raíz, agregue .env a .gitignore y finalmente en la plataforma de Netlify creando las environment variables en ENVIRONMENT en la pestaña Build & Deploy del sitio web.