-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathportals.driver.ts
More file actions
47 lines (36 loc) · 1.14 KB
/
portals.driver.ts
File metadata and controls
47 lines (36 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import axios from 'axios'
import jwt from 'jsonwebtoken'
import Room from '../models/room'
import log from '../utils/log.utils'
const url = `${process.env.PORTALS_API_URL}/`, key = process.env.PORTALS_API_KEY
const generateRoomToken = (room: Room) => jwt.sign({ roomId: room.id }, key),
generateHeaders = async (room: Room) => ({
Authorization: `Valve ${generateRoomToken(room)}`
})
export const createPortal = (room: Room) => new Promise(async (resolve, reject) => {
try {
const headers = await generateHeaders(room)
log(`Sending request to ${url}create with room id: ${room.id}`, [{ content: 'portals', color: 'MAGENTA' }])
await axios.post(`${url}create`, { roomId: room.id }, { headers })
.catch(reason => {
console.log(`AXIOS POST FAILED: ${reason}`)
throw reason
}
)
resolve()
} catch (error) {
reject(error)
}
})
export const destroyPortal = (room: Room) => new Promise(async (resolve, reject) => {
try {
const headers = await generateHeaders(room),
{ portal } = room
if (!portal.id)
reject()
await axios.delete(`${url}${portal.id}`, { headers })
resolve()
} catch (error) {
reject(error)
}
})