diff --git a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss index d66c4c1d..7bb386d2 100644 --- a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss +++ b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss @@ -13,35 +13,38 @@ // but mediaWikiUrl, headers, and maxLag will still have to be specified, not as args // unless all vars and props are passed to externmethods by default (method :Dynamic query [:Map> params] - (Json.parse - (#extern String python - (object - hxmlFile "extern-files/python/args.hxml" - importHxFile "extern-files/python/import.hx" - langProjectFile "extern-files/python/requirements.txt") - [:Map> params _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map headers _] - - (print "extern query call $params") - (let [response - (Requests.get mediaWikiUrl - (let [innerParams - [ - =>"action" "query" - =>"maxlag" maxLag - =>"format" "json" - ]] - (doFor =>param paramValues params (dictSet innerParams param (paramValues.join "|"))) - innerParams) - (object - headers headers - timeout 2))] - (assert response.ok) - (print "call finished: ${response.text}") - response.text)))) + (let [data + (Json.parse + (#extern String python + (object + hxmlFile "extern-files/python/args.hxml" + importHxFile "extern-files/python/import.hx" + langProjectFile "extern-files/python/requirements.txt") + [:Map> params _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map headers _] + + (print "extern query call $params") + (let [response + (Requests.get mediaWikiUrl + (let [innerParams + [ + =>"action" "query" + =>"maxlag" maxLag + =>"format" "json" + ]] + (doFor =>param paramValues params (dictSet innerParams param (paramValues.join "|"))) + innerParams) + (object + headers headers + timeout 2))] + (assert response.ok "MediaWiki query failed") + (print "call finished: ${response.text}") + response.text)))] + (assert data.query "MediaWiki response data doesn't contain a query field: $data") + data.query)) (method :Array queryImageTitles [:Array pageTitles] (flatten - (for =>_id page (the haxe.DynamicAccess .pages .query (query [=>"titles" pageTitles =>"prop" ["images"]])) + (for =>_id page (the haxe.DynamicAccess .pages (query [=>"titles" pageTitles =>"prop" ["images"]])) (if page.images (page.images.map ->image image.title) [])))) @@ -50,7 +53,7 @@ (flatten (for =>_id image (the haxe.DynamicAccess - .pages .query (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]])) + .pages (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]])) (if image.imageinfo (image.imageinfo.map ->image image.url) [])))) diff --git a/projects/nat-archive-tool/src/test/TestMain.kiss b/projects/nat-archive-tool/src/test/TestMain.kiss index 13e08b13..9eef7cdb 100644 --- a/projects/nat-archive-tool/src/test/TestMain.kiss +++ b/projects/nat-archive-tool/src/test/TestMain.kiss @@ -33,7 +33,6 @@ (let [wikipedia (new MediaWikiSystem "https://en.wikipedia.org/w/api.php" null null 1)] ~(wikipedia.queryImageUrls (wikipedia.queryImageTitles ["Phoenix Wright"]))) - // TODO make a dummy UI for this, instead of passing null (let [controller (new ArchiveController archive (new DummyUI))] // TODO test controller 0))