-
-
Notifications
You must be signed in to change notification settings - Fork 90
Expand file tree
/
Copy pathphone_number_controller.ts
More file actions
71 lines (67 loc) · 2.98 KB
/
Copy pathphone_number_controller.ts
File metadata and controls
71 lines (67 loc) · 2.98 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { Request, Response } from 'express'
import { getConfig } from '../services/config'
import { SessionStore } from '../services/session_store'
import logger from '../services/logger'
import { getAuthHeaderToken } from '../services/security'
import { UNOAPI_AUTH_TOKEN } from '../defaults'
export class PhoneNumberController {
private getConfig: getConfig
private sessionStore: SessionStore
constructor(getConfig: getConfig, sessionStore: SessionStore) {
this.getConfig = getConfig
this.sessionStore = sessionStore
}
public async get(req: Request, res: Response) {
logger.debug('phone number get method %s', req.method)
logger.debug('phone number get headers %s', JSON.stringify(req.headers))
logger.debug('phone number get params %s', JSON.stringify(req.params))
logger.debug('phone number get body %s', JSON.stringify(req.body))
logger.debug('phone number get query', JSON.stringify(req.query))
try {
const { phone } = req.params
const config = await this.getConfig(phone)
config.provider = config.provider || 'baileys'
const store = await config.getStore(phone, config)
logger.debug('Session store retrieved!')
const { sessionStore } = store
const templates = await store.dataStore.loadTemplates()
logger.debug('Templates retrieved!')
return res.status(200).json({
display_phone_number: phone.replace('+', ''),
status: await sessionStore.getStatus(phone),
message_templates: { data: templates },
...config,
})
} catch (e) {
return res.status(500).json({ status: 'error', message: e.message })
}
}
public async list(req: Request, res: Response) {
logger.debug('phone number list method %s', req.method)
logger.debug('phone number list headers %s', JSON.stringify(req.headers))
logger.debug('phone number list params %s', JSON.stringify(req.params))
logger.debug('phone number list body %s', JSON.stringify(req.body))
logger.debug('phone number list query', JSON.stringify(req.query))
const token = getAuthHeaderToken(req)
try {
const phones = await this.sessionStore.getPhones()
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const configs: any[] = []
for (let i = 0, j = phones.length; i < j; i++) {
const phone = phones[i]
const config = await this.getConfig(phone)
config.provider = config.provider || 'baileys'
const store = await config.getStore(phone, config)
const { sessionStore } = store
const status = config.provider == 'forwarder' ? 'forwarder' : await sessionStore.getStatus(phone)
if ([UNOAPI_AUTH_TOKEN, config.authToken].includes(token)) {
configs.push({ ...config, display_phone_number: phone.replace('+', ''), status })
}
}
logger.debug('Configs retrieved!')
return res.status(200).json({ data: configs })
} catch (e) {
return res.status(500).json({ status: 'error', message: e.message })
}
}
}