Midnightar commited on
Commit
d390f23
Β·
verified Β·
1 Parent(s): 8eb5f0d

Create app.js

Browse files
Files changed (1) hide show
  1. app.js +63 -0
app.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // app.js
2
+ import express from "express";
3
+ import crypto from "crypto";
4
+ import { RtcRole, RtcTokenBuilder } from "agora-access-token";
5
+
6
+ const app = express();
7
+ app.use(express.json());
8
+
9
+ const AGORA_APP_ID = process.env.AGORA_APP_ID;
10
+ const AGORA_APP_CERTIFICATE = process.env.AGORA_APP_CERTIFICATE;
11
+
12
+ // Root route
13
+ app.get("/", (req, res) => {
14
+ res.send("βœ… Agora Token API is running on Hugging Face!");
15
+ });
16
+
17
+ // Token generation route
18
+ app.post("/generate-token", (req, res) => {
19
+ try {
20
+ const { channelName, firebaseUid, role } = req.body;
21
+
22
+ if (!channelName || !firebaseUid) {
23
+ return res.status(400).json({
24
+ error: "channelName and firebaseUid are required.",
25
+ });
26
+ }
27
+
28
+ const agoraRole = role === "subscriber" ? RtcRole.SUBSCRIBER : RtcRole.PUBLISHER;
29
+
30
+ // Convert Firebase UID β†’ deterministic Agora UID
31
+ const agoraUid = parseInt(
32
+ crypto.createHash("md5").update(firebaseUid).digest("hex").slice(0, 6),
33
+ 16
34
+ );
35
+
36
+ // Token expiry (1 hour)
37
+ const expireTime = 3600;
38
+ const now = Math.floor(Date.now() / 1000);
39
+ const privilegeExpiredTs = now + expireTime;
40
+
41
+ // Build token
42
+ const token = RtcTokenBuilder.buildTokenWithUid(
43
+ AGORA_APP_ID,
44
+ AGORA_APP_CERTIFICATE,
45
+ channelName,
46
+ agoraUid,
47
+ agoraRole,
48
+ privilegeExpiredTs
49
+ );
50
+
51
+ return res.status(200).json({
52
+ token,
53
+ appId: AGORA_APP_ID,
54
+ agoraUid,
55
+ expireTime,
56
+ });
57
+ } catch (err) {
58
+ console.error("Error generating token:", err);
59
+ return res.status(500).json({ error: err.message });
60
+ }
61
+ });
62
+
63
+ app.listen(7860, "0.0.0.0", () => console.log("πŸš€ Server started on port 7860"));