diff --git a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.hx b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.hx index fded09f2..f01d48c8 100644 --- a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.hx +++ b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.hx @@ -4,6 +4,7 @@ import kiss.Prelude; import kiss.List; import nat.System; import haxe.Json; +import haxe.ds.Option; /** * Base System that processes Entries using the HTTP API for any wiki built with MediaWiki diff --git a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss index 7bb386d2..12fb74ed 100644 --- a/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss +++ b/projects/nat-archive-tool/src/nat/systems/MediaWikiSystem.kiss @@ -12,7 +12,7 @@ // TODO make this an externMethod -- // 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] +(method :Option query [:Map> params] (let [data (Json.parse (#extern String python @@ -39,23 +39,27 @@ (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)) + (if data.query + (Some data.query) + None))) (method :Array queryImageTitles [:Array pageTitles] - (flatten - (for =>_id page (the haxe.DynamicAccess .pages (query [=>"titles" pageTitles =>"prop" ["images"]])) - (if page.images - (page.images.map ->image image.title) - [])))) + (ifLet [(Some queryResult) (query [=>"titles" pageTitles =>"prop" ["images"]])] + (flatten + (for =>_id page (the haxe.DynamicAccess queryResult.pages) + (if page.images + (page.images.map ->image image.title) + []))) + [])) (method :Array queryImageUrls [:Array imageTitles] - (flatten - (for =>_id image - (the haxe.DynamicAccess - .pages (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]])) - (if image.imageinfo - (image.imageinfo.map ->image image.url) - [])))) + (ifLet [(Some queryResult) (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]])] + (flatten + (for =>_id image + (the haxe.DynamicAccess queryResult.pages) + (if image.imageinfo + (image.imageinfo.map ->image image.url) + []))) + [])) (var headers [=>"User-Agent" "NatArchiveTool/0.0.0 (https://github.com/NQNStudios/kisslang/tree/main/projects/nat-archive-tool; natquaylenelson@gmail.com) Requests/2.26.0"]) \ No newline at end of file