no olvidar instalar la libreria de Vision
npm install --save @google-cloud/vision
Bienvenida e Introducción
Qué aprenderás sobre las firebase cloud functions
Qué es firebase y las cloud functions
Consola web de administración
Consola de administración y documentación
Creación del proyecto de Cloud Functions
Extendiendo la Gestión de Usuarios con Cloud Functions.
Creación de las cloud functions de autenticación
Probando y desplegando las Cloud Functions de autenticación
Extendiendo Firestore con Cloud Functions.
Creación de las cloud functions de Firestore
Probando y desplegando las cloud functions de Firestore
Extendiendo el Almacenamiento con Cloud Functions.
Creación de las cloud functions para el storage
Terminando de crear cloud functions para el storage y probando su funcionamiento
Probando y desplegando las cloud functions de almacenamiento con Firestore
Creando Cloud Functions HTTPS
Creación de la cloud function HTTPS
Bonus: Construyendo un controlador para la función HTTP
Probando y desplegando las cloud function HTTPS
Extendiendo el Hosting con Cloud Functions.
Usando las firebase cloud functions desde el hosting
Extendiendo crashlytics con Cloud Functions.
Creación de las cloud functions de Crashlytics
Probando y desplegando la cloud function de Crashlytics
Extendiendo Analytics con Cloud Functions.
Creación de las cloud functions cuando se registra un evento en las analíticas de Firebase
Probando y desplegando la cloud function de analíticas
Creación de pruebas unitarias a las Cloud Functions.
Creando pruebas unitarias en Firebase Cloud Functions
Optimizando las Cloud Functions.
Buenas practicas para las cloud functions
Cierre
Conclusiones finales y cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan Guillermo Gómez Torres
Aportes 4
Preguntas 1
no olvidar instalar la libreria de Vision
npm install --save @google-cloud/vision
safeSerachDetection -> Google aplica machine learning para que este en formato seguro
Interesante!
Codigo de Post.js
const admin = require('firebase-admin')
const functions = require('firebase-functions')
const path = require('path')
const os = require('os')
const fs = require('fs')
const vision = require('@google-cloud/vision')
const { Email } = require('./../utilidad/EmailHelper.js')
const plantillas = require('./../utilidad/PlantillasEmail.js')
const { Notificaciones } = require('./../notificaciones/Notificaciones.js')
class Posts {
registrarAuditoria (idPost, nuevoPost, viejoPost) {
// Reto
}
validarImagenPost (archivo) {
const rutaArchivo = archivo.name
const nombreArchivo = path.basename(rutaArchivo)
const idPost = path.basename(rutaArchivo).split('.')[0]
const bucket = admin.storage().bucket()
const tmpRutaArchivo = path.join(os.tmpdir(), nombreArchivo)
const cliente = new vision.ImageAnnotatorClient()
return bucket
.file(rutaArchivo)
.download({
destination : tmpRutaArchivo
})
.then(() => {
return cliente.safeSearchDetection(tmpRutaArchivo)
})
.then(resultado => {
const adulto = resultado[0].safeSearchAnnotation.adult
const violence = resultado[0].safeSearchAnnotation.violence
const medical = resultado[0].safeSearchAnnotation.medical
return (
this.esAdecuada(adulto) &&
this.esAdecuada(medical) &&
this.esAdecuada(violence)
)
})
.then(resp => {
if(resp){
this.actualizarEstadoPost(idPost, true)
return resp
}
return this.enviarNotRespImagenInapropiada(idPost)
})
}
esAdecuada (resultado) {
return (
resultado !== 'POSSIBLE' &&
resultado !== 'LIKELY' &&
resultado !== 'VERY_LIKELY'
)
}
actualizarEstadoPost (idPost, estado) {
const refAuditoria = admin
.firestore()
.collection('posts')
.doc(idPost)
return refAuditoria.update({
publicado: estado
})
}
enviarNotRespImagenInapropiada (idPost) {
console.log(`Consultar Token idPost => ${idPost}`)
return admin
.firestore()
.collection('posts')
.doc(idPost)
.get()
.then(post => {
console.log(post)
if (post.data().token !== null && post.data().token !== undefined) {
console.log(`idPost token => ${post.data().token}`)
const notificaciones = new Notificaciones()
notificaciones.enviarNotificacionAToken(
'Posts con imagen no permitida',
'Tu post no se puede mostrar ya que la imagen no es permitida',
'notvalidacionimagen',
post.data().token
)
}
return post
})
}
enviarPostSemana (topicoNotificacion) {}
}
exports.Posts = Posts```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?