Update SERVER_JS_DEFINE_REGEX

This commit is contained in:
Mads Marquart
2020-06-07 11:58:40 +02:00
parent b1e438dae1
commit 6141cc5a41
2 changed files with 18 additions and 2 deletions

View File

@@ -15,7 +15,9 @@ from . import _graphql, _util, _exception
from typing import Optional, Mapping, Callable, Any from typing import Optional, Mapping, Callable, Any
SERVER_JS_DEFINE_REGEX = re.compile(r'require\("ServerJSDefine"\)\)?\.handleDefines\(') SERVER_JS_DEFINE_REGEX = re.compile(
r'require(?:\("ServerJS"\).{,100}\.handle\({.*"define":)|(?:\("ServerJSDefine"\)\)?\.handleDefines\()'
)
SERVER_JS_DEFINE_JSON_DECODER = json.JSONDecoder() SERVER_JS_DEFINE_JSON_DECODER = json.JSONDecoder()

View File

@@ -13,7 +13,7 @@ from fbchat._session import (
) )
def test_parse_server_js_define(): def test_parse_server_js_define_old():
html = """ html = """
some data;require("TimeSliceImpl").guard(function(){(require("ServerJSDefine")).handleDefines([["DTSGInitialData",[],{"token":"123"},100]]) some data;require("TimeSliceImpl").guard(function(){(require("ServerJSDefine")).handleDefines([["DTSGInitialData",[],{"token":"123"},100]])
@@ -29,6 +29,20 @@ def test_parse_server_js_define():
} }
def test_parse_server_js_define_new():
html = """
some data;require("TimeSliceImpl").guard(function(){new (require("ServerJS"))().handle({"define":[["DTSGInitialData",[],{"token":""},100]],"require":[...]});}, "ServerJS define", {"root":true})();
more data
<script><script>require("TimeSliceImpl").guard(function(){var s=new (require("ServerJS"))();s.handle({"define":[["DTSGInitData",[],{"token":"","async_get_token":""},3333]],"require":[...]});require("Run").onAfterLoad(function(){s.cleanup(require("TimeSliceImpl"))});}, "ServerJS define", {"root":true})();</script>
other irrelevant data
"""
define = parse_server_js_define(html)
assert define == {
"DTSGInitialData": {"token": ""},
"DTSGInitData": {"async_get_token": "", "token": ""},
}
def test_parse_server_js_define_error(): def test_parse_server_js_define_error():
with pytest.raises(ParseError, match="Could not find any"): with pytest.raises(ParseError, match="Could not find any"):
parse_server_js_define("") parse_server_js_define("")