79 lines
2.6 KiB
Go
79 lines
2.6 KiB
Go
|
package token
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
var SingleByteTokens = [...]string{"", "", "", "200", "400", "404", "500", "501", "502", "action", "add",
|
||
|
"after", "archive", "author", "available", "battery", "before", "body",
|
||
|
"broadcast", "chat", "clear", "code", "composing", "contacts", "count",
|
||
|
"create", "debug", "delete", "demote", "duplicate", "encoding", "error",
|
||
|
"false", "filehash", "from", "g.us", "group", "groups_v2", "height", "id",
|
||
|
"image", "in", "index", "invis", "item", "jid", "kind", "last", "leave",
|
||
|
"live", "log", "media", "message", "mimetype", "missing", "modify", "name",
|
||
|
"notification", "notify", "out", "owner", "participant", "paused",
|
||
|
"picture", "played", "presence", "preview", "promote", "query", "raw",
|
||
|
"read", "receipt", "received", "recipient", "recording", "relay",
|
||
|
"remove", "response", "resume", "retry", "s.whatsapp.net", "seconds",
|
||
|
"set", "size", "status", "subject", "subscribe", "t", "text", "to", "true",
|
||
|
"type", "unarchive", "unavailable", "url", "user", "value", "web", "width",
|
||
|
"mute", "read_only", "admin", "creator", "short", "update", "powersave",
|
||
|
"checksum", "epoch", "block", "previous", "409", "replaced", "reason",
|
||
|
"spam", "modify_tag", "message_info", "delivery", "emoji", "title",
|
||
|
"description", "canonical-url", "matched-text", "star", "unstar",
|
||
|
"media_key", "filename", "identity", "unread", "page", "page_count",
|
||
|
"search", "media_message", "security", "call_log", "profile", "ciphertext",
|
||
|
"invite", "gif", "vcard", "frequent", "privacy", "blacklist", "whitelist",
|
||
|
"verify", "location", "document", "elapsed", "revoke_invite", "expiration",
|
||
|
"unsubscribe", "disable", "vname", "old_jid", "new_jid", "announcement",
|
||
|
"locked", "prop", "label", "color", "call", "offer", "call-id"}
|
||
|
|
||
|
var doubleByteTokens = [...]string{}
|
||
|
|
||
|
func GetSingleToken(i int) (string, error) {
|
||
|
if i < 3 || i >= len(SingleByteTokens) {
|
||
|
return "", fmt.Errorf("index out of single byte token bounds %d", i)
|
||
|
}
|
||
|
|
||
|
return SingleByteTokens[i], nil
|
||
|
}
|
||
|
|
||
|
func GetDoubleToken(index1 int, index2 int) (string, error) {
|
||
|
n := 256*index1 + index2
|
||
|
if n < 0 || n >= len(doubleByteTokens) {
|
||
|
return "", fmt.Errorf("index out of double byte token bounds %d", n)
|
||
|
}
|
||
|
|
||
|
return doubleByteTokens[n], nil
|
||
|
}
|
||
|
|
||
|
func IndexOfSingleToken(token string) int {
|
||
|
for i, t := range SingleByteTokens {
|
||
|
if t == token {
|
||
|
return i
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return -1
|
||
|
}
|
||
|
|
||
|
const (
|
||
|
LIST_EMPTY = 0
|
||
|
STREAM_END = 2
|
||
|
DICTIONARY_0 = 236
|
||
|
DICTIONARY_1 = 237
|
||
|
DICTIONARY_2 = 238
|
||
|
DICTIONARY_3 = 239
|
||
|
LIST_8 = 248
|
||
|
LIST_16 = 249
|
||
|
JID_PAIR = 250
|
||
|
HEX_8 = 251
|
||
|
BINARY_8 = 252
|
||
|
BINARY_20 = 253
|
||
|
BINARY_32 = 254
|
||
|
NIBBLE_8 = 255
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
PACKED_MAX = 254
|
||
|
SINGLE_BYTE_MAX = 256
|
||
|
)
|