Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
ducch
executable file 508 lines (503 sloc) 10.299 kb
<?php
class TokenMap
{
private static $primaryStrings = array(
"",
"",
"",
"account",
"ack",
"action",
"active",
"add",
"after",
"all",
"allow",
"apple",
"auth",
"author",
"available",
"bad-protocol",
"bad-request",
"before",
"body",
"broadcast",
"cancel",
"category",
"challenge",
"chat",
"clean",
"code",
"composing",
"config",
"contacts",
"count",
"create",
"creation",
"debug",
"default",
"delete",
"delivery",
"delta",
"deny",
"digest",
"dirty",
"duplicate",
"elapsed",
"enable",
"encoding",
"error",
"event",
"expiration",
"expired",
"fail",
"failure",
"false",
"favorites",
"feature",
"features",
"feature-not-implemented",
"field",
"first",
"free",
"from",
"g.us",
"get",
"google",
"group",
"groups",
"groups_v2",
"http://etherx.jabber.org/streams",
"http://jabber.org/protocol/chatstates",
"ib",
"id",
"image",
"img",
"index",
"internal-server-error",
"ip",
"iq",
"item-not-found",
"item",
"jabber:iq:last",
"jabber:iq:privacy",
"jabber:x:event",
"jid",
"kind",
"last",
"leave",
"list",
"max",
"mechanism",
"media",
"message_acks",
"message",
"method",
"microsoft",
"missing",
"modify",
"mute",
"name",
"nokia",
"none",
"not-acceptable",
"not-allowed",
"not-authorized",
"notification",
"notify",
"off",
"offline",
"order",
"owner",
"owning",
"p_o",
"p_t",
"paid",
"participant",
"participants",
"participating",
"paused",
"picture",
"pin",
"ping",
"platform",
"port",
"presence",
"preview",
"probe",
"prop",
"props",
"query",
"raw",
"read",
"readreceipts",
"reason",
"receipt",
"relay",
"remote-server-timeout",
"remove",
"request",
"required",
"resource-constraint",
"resource",
"response",
"result",
"retry",
"rim",
"s_o",
"s_t",
"s.us",
"s.whatsapp.net",
"seconds",
"server-error",
"server",
"service-unavailable",
"set",
"show",
"silent",
"stat",
"status",
"stream:error",
"stream:features",
"subject",
"subscribe",
"success",
"sync",
"t",
"text",
"timeout",
"timestamp",
"to",
"true",
"type",
"unavailable",
"unsubscribe",
"uri",
"url",
"urn:ietf:params:xml:ns:xmpp-sasl",
"urn:ietf:params:xml:ns:xmpp-stanzas",
"urn:ietf:params:xml:ns:xmpp-streams",
"urn:xmpp:ping",
"urn:xmpp:whatsapp:account",
"urn:xmpp:whatsapp:dirty",
"urn:xmpp:whatsapp:mms",
"urn:xmpp:whatsapp:push",
"urn:xmpp:whatsapp",
"user",
"user-not-found",
"value",
"version",
"w:g",
"w:p:r",
"w:p",
"w:profile:picture",
"w",
"wait",
"WAUTH-2",
"xmlns:stream",
"xmlns",
"1",
"chatstate",
"crypto",
"phash",
"enc",
"class",
"off_cnt",
"w:g2",
"promote",
"demote",
"creator",
"Bell.caf",
"Boing.caf",
"Glass.caf",
"Harp.caf",
"TimePassing.caf",
"Tri-tone.caf",
"Xylophone.caf",
"background",
"backoff",
"chunked",
"context",
"full",
"in",
"interactive",
"out",
"registration",
"sid",
"urn:xmpp:whatsapp:sync",
"flt",
"s16",
"u8",
"adpcm",
"amrnb",
"amrwb",
"mp3",
"pcm",
"qcelp",
"wma",
"h263",
"h264",
"jpeg"
);
private static $secondaryStrings = array(
"mpeg4",
"wmv",
"audio/3gpp",
"audio/aac",
"audio/amr",
"audio/mp4",
"audio/mpeg",
"audio/ogg",
"audio/qcelp",
"audio/wav",
"audio/webm",
"audio/x-caf",
"audio/x-ms-wma",
"image/gif",
"image/jpeg",
"image/png",
"video/3gpp",
"video/avi",
"video/mp4",
"video/mpeg",
"video/quicktime",
"video/x-flv",
"video/x-ms-asf",
"302",
"400",
"401",
"402",
"403",
"404",
"405",
"406",
"407",
"409",
"410",
"500",
"501",
"503",
"504",
"abitrate",
"acodec",
"app_uptime",
"asampfmt",
"asampfreq",
"audio",
"clear",
"conflict",
"conn_no_nna",
"cost",
"currency",
"duration",
"extend",
"file",
"fps",
"g_notify",
"g_sound",
"gcm",
"gone",
"google_play",
"hash",
"height",
"invalid",
"jid-malformed",
"latitude",
"lc",
"lg",
"live",
"location",
"log",
"longitude",
"max_groups",
"max_participants",
"max_subject",
"mimetype",
"mode",
"napi_version",
"normalize",
"orighash",
"origin",
"passive",
"password",
"played",
"policy-violation",
"pop_mean_time",
"pop_plus_minus",
"price",
"pricing",
"redeem",
"Replaced by new connection",
"resume",
"signature",
"size",
"sound",
"source",
"system-shutdown",
"username",
"vbitrate",
"vcard",
"vcodec",
"video",
"width",
"xml-not-well-formed",
"checkmarks",
"image_max_edge",
"image_max_kbytes",
"image_quality",
"ka",
"ka_grow",
"ka_shrink",
"newmedia",
"library",
"caption",
"forward",
"c0",
"c1",
"c2",
"c3",
"clock_skew",
"cts",
"k0",
"k1",
"login_rtt",
"m_id",
"nna_msg_rtt",
"nna_no_off_count",
"nna_offline_ratio",
"nna_push_rtt",
"no_nna_con_count",
"off_msg_rtt",
"on_msg_rtt",
"stat_name",
"sts",
"suspect_conn",
"lists",
"self",
"qr",
"web",
"w:b",
"recipient",
"w:stats",
"forbidden",
"aurora.m4r",
"bamboo.m4r",
"chord.m4r",
"circles.m4r",
"complete.m4r",
"hello.m4r",
"input.m4r",
"keys.m4r",
"note.m4r",
"popcorn.m4r",
"pulse.m4r",
"synth.m4r",
"filehash",
"max_list_recipients",
"en-AU",
"en-GB",
"es-MX",
"pt-PT",
"zh-Hans",
"zh-Hant",
"relayelection",
"relaylatency",
"interruption",
"Apex.m4r",
"Beacon.m4r",
"Bulletin.m4r",
"By The Seaside.m4r",
"Chimes.m4r",
"Circuit.m4r",
"Constellation.m4r",
"Cosmic.m4r",
"Crystals.m4r",
"Hillside.m4r",
"Illuminate.m4r",
"Night Owl.m4r",
"Opening.m4r",
"Playtime.m4r",
"Presto.m4r",
"Radar.m4r",
"Radiate.m4r",
"Ripples.m4r",
"Sencha.m4r",
"Signal.m4r",
"Silk.m4r",
"Slow Rise.m4r",
"Stargaze.m4r",
"Summit.m4r",
"Twinkle.m4r",
"Uplift.m4r",
"Waves.m4r",
"voip",
"eligible",
"upgrade",
"planned",
"current",
"future",
"disable",
"expire",
"start",
"stop",
"accuracy",
"speed",
"bearing",
"recording",
"encrypt",
"key",
"identity",
"w:gp2",
"admin",
"locked",
"unlocked",
"new",
"battery",
"archive",
"adm",
"plaintext_size",
"compressed_size",
"delivered",
"msg",
"pkmsg",
"everyone",
"v",
"transport",
"call-id"
);
public static function TryGetToken($string, &$subdict, &$token)
{
$foo = array_search($string, self::$primaryStrings);
if ($foo) {
$token = $foo;
return true;
}
$foo = array_search($string, self::$secondaryStrings);
if ($foo) {
$subdict = true;
$token = $foo;
return true;
}
return false;
}
public static function GetToken($token, &$subdict, &$string)
{
//override subdict
if (!$subdict && $token >= 236 && $token < (236 + count(self::$secondaryStrings))) {
$subdict = true;
}
$tokenMap = array();
if ($subdict) {
$tokenMap = self::$secondaryStrings;
} else {
$tokenMap = self::$primaryStrings;
}
if ($token < 0 || $token > count($tokenMap)) {
return;//fail
}
$string = $tokenMap[$token];
if (!$string) {
throw new Exception("Invalid token/length in GetToken");
}
}
}
Jump to Line
Something went wrong with that request. Please try again.