EthicApp-Development / ethicapp-main

EthicApp's main repository containing backend and frontend applications
MIT License
1 stars 1 forks source link

[ethicapp-v2] DRY/Centralización de URLs de endpoints de APIs externas #124

Open claudio-alvarez opened 1 year ago

claudio-alvarez commented 1 year ago

Descripción general

Cada servicio externo es invocado desde el código de EthicApp sin que exista una tabla con las URLs de los servicios usados. Esto causa problemas al caer las APIs externas en obsolescencia, o incluso, en casos en que las URLs en el código son modificadas por accidente.

Para solucionar lo anterior, sería conveniente tener un archivo de configuración, p.ej., external_apis.js, en el directorio config, en el que conste una tabla (objeto JSON), en la cual se mantengan las URLs de endpoints de APIs externas de Google Cloud, AWS, etc., utilizadas en la aplicación. Este archivo debiese ser ingresado a .gitignore, y distribuirse a los desarrolladores igual que el/los archivos de secretos.

Ejemplo de objeto de configuración:

{ "reCAPTCHA_version" : "URL", "AWS_SES_send_email' : "URL" }

Así, el objeto tiene una llave por cada servicio utilizado, y cada llave queda asociada con la URL del endpoint a utilizar. Si se necesitaran varios datos por API, entonces cada llave debiera estar asociada a un objeto que contenga la información necesaria.

Debe agregarse a la documentación el formato del archivo external_apis.js, de manera que cualquier interesado pueda generarlo, contando con sus propias cuentas de servicios externos. Para esto, un archivo external_apis.js.template con placeholders para mantener esta información sería útil.

¿Por qué es necesario?

Permite gestionar en forma centralizada la dependencia con APIs externas.

claudio-alvarez commented 1 year ago

Necesitamos que esta funcionalidad esté disponible en backend para publicar el código de EthicApp.

jigracia commented 1 year ago

En el archivo "users.js" se presentan numerosas veces texto de mails con URLs dirigidas a localhost. Asumo que estas no funcionaran del todo cuando se haga el deployment.

image

También en el archivo "users.js" se presentan emails a nivel de código. Podría quizás ser optimo dejar estos en un archivo de configuración mas que escritos en el controlador mismo.

image

En el archivo "passport-setup.js" se presentan URLs escritas directamente en el código haciendo referencia a localhost:8080. No estoy del todo seguro si al momento del deployment estos URL aun conservan la funcionalidad prevista para ellos.

image

Estas son consultas con respecto a ciertas líneas de código que me resultaron curiosas con respecto al objetivo de este issue. El resto del código no presenta nada que salga de lo común o parezca ser un error.