Bienvenida e Introducción

1

Qué aprenderás sobre las firebase cloud functions

2

Qué es firebase y las cloud functions

Consola web de administración

3

Consola de administración y documentación

4

Creación del proyecto de Cloud Functions

Extendiendo la Gestión de Usuarios con Cloud Functions.

5

Creación de las cloud functions de autenticación

6

Probando y desplegando las Cloud Functions de autenticación

Extendiendo Firestore con Cloud Functions.

7

Creación de las cloud functions de Firestore

8

Probando y desplegando las cloud functions de Firestore

Extendiendo el Almacenamiento con Cloud Functions.

9

Creación de las cloud functions para el storage

10

Terminando de crear cloud functions para el storage y probando su funcionamiento

11

Probando y desplegando las cloud functions de almacenamiento con Firestore

Creando Cloud Functions HTTPS

12

Creación de la cloud function HTTPS

13

Bonus: Construyendo un controlador para la función HTTP

14

Probando y desplegando las cloud function HTTPS

Extendiendo el Hosting con Cloud Functions.

15

Usando las firebase cloud functions desde el hosting

Extendiendo crashlytics con Cloud Functions.

16

Creación de las cloud functions de Crashlytics

17

Probando y desplegando la cloud function de Crashlytics

Extendiendo Analytics con Cloud Functions.

18

Creación de las cloud functions cuando se registra un evento en las analíticas de Firebase

19

Probando y desplegando la cloud function de analíticas

Creación de pruebas unitarias a las Cloud Functions.

20

Creando pruebas unitarias en Firebase Cloud Functions

Optimizando las Cloud Functions.

21

Buenas practicas para las cloud functions

Cierre

22

Conclusiones finales y cierre

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Firebase 5: Cloud Functions

Curso de Firebase 5: Cloud Functions

Juan Guillermo Gómez Torres

Juan Guillermo Gómez Torres

Terminando de crear cloud functions para el storage y probando su funcionamiento

10/22
Recursos

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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```