safer MediaWiki functions
This commit is contained in:
@@ -4,6 +4,7 @@ import kiss.Prelude;
|
|||||||
import kiss.List;
|
import kiss.List;
|
||||||
import nat.System;
|
import nat.System;
|
||||||
import haxe.Json;
|
import haxe.Json;
|
||||||
|
import haxe.ds.Option;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base System that processes Entries using the HTTP API for any wiki built with MediaWiki
|
* Base System that processes Entries using the HTTP API for any wiki built with MediaWiki
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
// TODO make this an externMethod --
|
// TODO make this an externMethod --
|
||||||
// but mediaWikiUrl, headers, and maxLag will still have to be specified, not as args
|
// 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
|
// unless all vars and props are passed to externmethods by default
|
||||||
(method :Dynamic query [:Map<String,Array<String>> params]
|
(method :Option<Dynamic> query [:Map<String,Array<String>> params]
|
||||||
(let [data
|
(let [data
|
||||||
(Json.parse
|
(Json.parse
|
||||||
(#extern String python
|
(#extern String python
|
||||||
@@ -39,23 +39,27 @@
|
|||||||
(assert response.ok "MediaWiki query failed")
|
(assert response.ok "MediaWiki query failed")
|
||||||
(print "call finished: ${response.text}")
|
(print "call finished: ${response.text}")
|
||||||
response.text)))]
|
response.text)))]
|
||||||
(assert data.query "MediaWiki response data doesn't contain a query field: $data")
|
(if data.query
|
||||||
data.query))
|
(Some data.query)
|
||||||
|
None)))
|
||||||
|
|
||||||
(method :Array<String> queryImageTitles [:Array<String> pageTitles]
|
(method :Array<String> queryImageTitles [:Array<String> pageTitles]
|
||||||
(flatten
|
(ifLet [(Some queryResult) (query [=>"titles" pageTitles =>"prop" ["images"]])]
|
||||||
(for =>_id page (the haxe.DynamicAccess<Dynamic> .pages (query [=>"titles" pageTitles =>"prop" ["images"]]))
|
(flatten
|
||||||
(if page.images
|
(for =>_id page (the haxe.DynamicAccess<Dynamic> queryResult.pages)
|
||||||
(page.images.map ->image image.title)
|
(if page.images
|
||||||
[]))))
|
(page.images.map ->image image.title)
|
||||||
|
[])))
|
||||||
|
[]))
|
||||||
|
|
||||||
(method :Array<String> queryImageUrls [:Array<String> imageTitles]
|
(method :Array<String> queryImageUrls [:Array<String> imageTitles]
|
||||||
(flatten
|
(ifLet [(Some queryResult) (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]])]
|
||||||
(for =>_id image
|
(flatten
|
||||||
(the haxe.DynamicAccess<Dynamic>
|
(for =>_id image
|
||||||
.pages (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]]))
|
(the haxe.DynamicAccess<Dynamic> queryResult.pages)
|
||||||
(if image.imageinfo
|
(if image.imageinfo
|
||||||
(image.imageinfo.map ->image image.url)
|
(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"])
|
(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"])
|
||||||
Reference in New Issue
Block a user