1- const { cert, initializeApp } = require ( 'firebase-admin/app' ) ;
2- const { getFirestore } = require ( 'firebase-admin/firestore' ) ;
3- initializeApp ( { credential : cert ( JSON . parse ( process . env . GOOGLE_CREDENTIALS ) ) } ) ;
4-
5- const db = getFirestore ( ) ;
6- exports . db = db ;
7-
81const express = require ( 'express' ) ;
9- const compression = require ( 'compression' ) ;
10-
11- const pinRouter = require ( './routes/pin' ) ;
12- const providerRouter = require ( './routes/provider' ) ;
13- const callbackRouter = require ( './routes/callback' ) ;
14- const tokenRouter = require ( './routes/token' ) ;
15-
162let app = express ( ) ;
173
18- app . use ( compression ( ) ) ;
194app . use ( express . json ( ) ) ;
205app . use ( express . urlencoded ( { extended : false } ) ) ;
216app . use ( express . static ( __dirname + '/public' ) ) ;
227
23- const authMiddleware = ( req , res , next ) => {
24- if ( req . body . client_secret === process . env . AUTHENTICATOR_CLIENT_SECRET ) {
25- return next ( ) ;
26- }
27-
28- res . send ( { success : false , msg : 'request_unauthenticated' } ) ;
8+ let _db ;
9+ function getDb ( ) {
10+ if ( _db ) return _db ;
11+ const { cert, initializeApp } = require ( 'firebase-admin/app' ) ;
12+ const { getFirestore } = require ( 'firebase-admin/firestore' ) ;
13+ initializeApp ( { credential : cert ( JSON . parse ( process . env . GOOGLE_CREDENTIALS ) ) } ) ;
14+ _db = getFirestore ( ) ;
15+ return _db ;
2916}
17+ exports . getDb = getDb ;
3018
31- app . use ( '/pin' , authMiddleware , pinRouter ) ;
32- app . use ( '/provider' , providerRouter ) ;
33- app . use ( '/callback' , callbackRouter ) ;
34- app . use ( '/token' , authMiddleware , tokenRouter ) ;
35-
36- const pages = {
37- "/" : "index.html" ,
38- "/privacy-policy" : "privacy-policy.html" ,
39- "/about" : "about.html"
19+ const authMiddleware = ( req , res , next ) => {
20+ if ( req . body . client_secret === process . env . AUTHENTICATOR_CLIENT_SECRET ) return next ( ) ;
21+ res . send ( { success : false , msg : 'request_unauthenticated' } ) ;
4022} ;
4123
42- app . get ( Object . keys ( pages ) , ( req , res ) => {
43- res . sendFile ( `${ __dirname } /views/${ pages [ req . path ] } ` ) ;
44- } ) ;
24+ app . use ( '/pin' , authMiddleware , ( req , res , next ) => require ( './routes/pin' ) ( req , res , next ) ) ;
25+ app . use ( '/provider' , ( req , res , next ) => require ( './routes/provider' ) ( req , res , next ) ) ;
26+ app . use ( '/callback' , ( req , res , next ) => require ( './routes/callback' ) ( req , res , next ) ) ;
27+ app . use ( '/token' , authMiddleware , ( req , res , next ) => require ( './routes/token' ) ( req , res , next ) ) ;
28+
29+ const pages = { "/" : "index.html" , "/privacy-policy" : "privacy-policy.html" , "/about" : "about.html" } ;
30+ app . get ( Object . keys ( pages ) , ( req , res ) => res . sendFile ( `${ __dirname } /views/${ pages [ req . path ] } ` ) ) ;
4531
4632app . get ( '/:user_code' , async function ( req , res ) {
33+ const db = getDb ( ) ;
4734 let docRef = await db . collection ( 'pins' ) . doc ( req . params . user_code . toUpperCase ( ) ) . get ( ) ;
4835
4936 if ( ! docRef . exists ) {
@@ -53,13 +40,13 @@ app.get('/:user_code', async function (req, res) {
5340 }
5441} )
5542
56- app . listen ( process . env . PORT , ( ) => {
57- console . log ( "App listening" ) ;
58- } )
59-
60- setInterval ( async ( ) => {
61- let pinsRef = db . collection ( "pins" ) ;
62- let allInvalidRefs = await pinsRef . where ( "timestamp" , "<" , Date . now ( ) - 300000 ) . get ( ) ;
43+ app . listen ( process . env . PORT , ( ) => console . log ( "App listening" ) ) ;
6344
64- if ( ! allInvalidRefs . empty ) allInvalidRefs . forEach ( doc => doc . ref . delete ( ) ) ;
65- } , 150000 ) ;
45+ setTimeout ( ( ) => {
46+ setInterval ( async ( ) => {
47+ if ( ! _db ) return ; // skip if firebase hasn't been touched yet
48+ const allInvalidRefs = await _db . collection ( "pins" )
49+ . where ( "timestamp" , "<" , Date . now ( ) - 300000 ) . get ( ) ;
50+ if ( ! allInvalidRefs . empty ) allInvalidRefs . forEach ( doc => doc . ref . delete ( ) ) ;
51+ } , 150000 ) ;
52+ } , 20000 ) ;
0 commit comments