-
Notifications
You must be signed in to change notification settings - Fork 64
/
contact-raw-payload-parser.ts
75 lines (69 loc) · 1.86 KB
/
contact-raw-payload-parser.ts
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
72
73
74
75
import {
ContactPayload,
ContactType,
} from 'wechaty-puppet'
import {
PadplusContactPayload,
} from '../schemas'
import {
isContactOfficialId,
isRoomId,
} from './is-type'
export function contactRawPayloadParser (
rawPayload: PadplusContactPayload,
): ContactPayload {
if (!rawPayload.userName) {
/**
* { big_head: '',
* city: '',
* country: '',
* intro: '',
* label: '',
* message: '',
* nick_name: '',
* provincia: '',
* py_initial: '',
* quan_pin: '',
* remark: '',
* remark_py_initial: '',
* remark_quan_pin: '',
* sex: 0,
* signature: '',
* small_head: '',
* status: 0,
* stranger: '',
* ticket: '',
* user_name: '' }
*/
// console.log(rawPayload)
throw Error('cannot get user_name from raw payload: ' + JSON.stringify(rawPayload))
}
if (isRoomId(rawPayload.userName)) {
throw Error('Room Object instead of Contact!')
}
let contactType = ContactType.Unknown
if (isContactOfficialId(rawPayload.userName) || rawPayload.verifyFlag !== 0) {
contactType = ContactType.Official
} else {
contactType = ContactType.Individual
}
let friend = false
if (rawPayload.contactFlag && rawPayload.contactFlag !== 0 && rawPayload.verifyFlag === 0) {
friend = true
}
const payload: ContactPayload = {
alias : rawPayload.remark,
avatar : rawPayload.bigHeadUrl,
city : rawPayload.city,
friend,
gender : rawPayload.sex,
id : rawPayload.userName,
name : rawPayload.nickName,
phone : [],
province : rawPayload.province,
signature : (rawPayload.signature).replace('+', ' '), // Stay+Foolish
type : contactType,
weixin : rawPayload.alias,
}
return payload
}