Skip to content

onHttpsCall, onHttpsRequest

Franklin Chieze edited this page Oct 15, 2020 · 2 revisions
onHttpsCall()

The onHttpsCall decorator specifies that a function should be callable directly from a Firebase app.


onHttpsRequest(path: string = '/', options?: RequestOptions)

The onHttpsRequest decorator specifies that a function should handle an HTTP request.

parameters

  • path
    This is a string parameter that represents an Express-style route path, like /users/:id.

  • options
    This is an optional RequestOptions parameter for passing in extra data to the decorator.

class RequestOptions {
    method?: RequestMethodType;
    middleware?: typeof RequestMiddleware[];
}

class RequestMiddleware {
    middleware(req, res, next) {}
}

type RequestMethodType = "delete" | "get" | "options" | "post" | "put"

example

import { func, onHttpsRequest } from 'firefuncs';

export class Records {
    @func()
    @onHttpsRequest()
    public async hello(req, res) {
        res.send('Hello World!');
    }

    @func()
    @onHttpsRequest('/', {
        method: 'post',
        middleware: [InitMiddleware, AuthMiddleware]
    })
    public async save(req, res) {
        try {
            const db = req.firestore.db;
            await db.collection('records').add({ ...req.body });
            res.send('Added records successfully');
        } catch (error) {
            res.send({ error })
        }
    }
}

class AuthClientMiddleware {
    async middleware(req, res, next) {
        console.log('Authenticate the request here');
    }
}

class InitMiddleware {
    async middleware(req, res, next) {
        console.log('Initialize the Firebase app here');
    }
}

Note: A middleware is any class that has a method named middleware with the same signature as an Express middleware.