Initial commit

This commit is contained in:
talksik
2021-12-31 04:01:41 -08:00
commit 36092e8af7
10 changed files with 2851 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
module.exports = {
root: true,
env: {
es6: true,
node: true,
},
extends: [
"eslint:recommended",
"google",
],
rules: {
quotes: ["error", "double"],
},
};
+1
View File
@@ -0,0 +1 @@
node_modules/
+37
View File
@@ -0,0 +1,37 @@
const {
RtcTokenBuilder,
RtmTokenBuilder,
RtcRole,
RtmRole,
} = require('agora-access-token');
function getAgoraToken(channelName) {
// Rtc Examples
const appID = 'c8dfd65deb5c4741bd564085627139d0';
const appCertificate = 'aa57b809934b4efcb407cf30089d9f25';
const uid = 0; // no need to use this as we have authenticated this user
const role = RtcRole.PUBLISHER;
const expirationTimeInSeconds = 3600;
const currentTimestamp = Math.floor(Date.now() / 1000);
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
// IMPORTANT! Build token with either the uid or with the user account. Comment out the option you do not want to use below.
// Build token with uid
const tokenA = RtcTokenBuilder.buildTokenWithUid(
appID,
appCertificate,
channelName,
uid,
role,
privilegeExpiredTs
);
console.log('Token With Integer Number Uid: ' + tokenA);
return tokenA;
}
module.exports = { getAgoraToken };
+23
View File
@@ -0,0 +1,23 @@
const functions = require('firebase-functions');
const admin = require('firebase-admin');
var express = require('express');
const app = express();
admin.initializeApp();
app.get('/', (req, res) => res.send('Hello World!'));
exports.helloworld = functions.https.onRequest(app);
const agora = require('./agora');
exports.agoraToken = functions.https.onCall((data, context) => {
console.log(data);
console.log("user's id: " + context.auth.uid);
const channelName = data.channelName;
let token = agora.getAgoraToken(channelName);
return { token };
});
+2670
View File
File diff suppressed because it is too large Load Diff
+28
View File
@@ -0,0 +1,28 @@
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "16"
},
"main": "index.js",
"dependencies": {
"agora-access-token": "^2.0.4",
"express": "^4.17.2",
"firebase-admin": "^9.8.0",
"firebase-functions": "^3.14.1"
},
"devDependencies": {
"eslint": "^7.6.0",
"eslint-config-google": "^0.14.0",
"firebase-functions-test": "^0.2.0"
},
"private": true
}