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?

o inicia sesi贸n.

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