try to throw specific error for bad MediaWiki query
This commit is contained in:
@@ -13,35 +13,38 @@
|
|||||||
// 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 :Dynamic query [:Map<String,Array<String>> params]
|
||||||
(Json.parse
|
(let [data
|
||||||
(#extern String python
|
(Json.parse
|
||||||
(object
|
(#extern String python
|
||||||
hxmlFile "extern-files/python/args.hxml"
|
(object
|
||||||
importHxFile "extern-files/python/import.hx"
|
hxmlFile "extern-files/python/args.hxml"
|
||||||
langProjectFile "extern-files/python/requirements.txt")
|
importHxFile "extern-files/python/import.hx"
|
||||||
[:Map<String,Array<String>> params _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map<String,String> headers _]
|
langProjectFile "extern-files/python/requirements.txt")
|
||||||
|
[:Map<String,Array<String>> params _ :String mediaWikiUrl _ :String maxLag (if maxLag (Std.string maxLag) "1") :Map<String,String> headers _]
|
||||||
(print "extern query call $params")
|
|
||||||
(let [response
|
(print "extern query call $params")
|
||||||
(Requests.get mediaWikiUrl
|
(let [response
|
||||||
(let [innerParams
|
(Requests.get mediaWikiUrl
|
||||||
[
|
(let [innerParams
|
||||||
=>"action" "query"
|
[
|
||||||
=>"maxlag" maxLag
|
=>"action" "query"
|
||||||
=>"format" "json"
|
=>"maxlag" maxLag
|
||||||
]]
|
=>"format" "json"
|
||||||
(doFor =>param paramValues params (dictSet innerParams param (paramValues.join "|")))
|
]]
|
||||||
innerParams)
|
(doFor =>param paramValues params (dictSet innerParams param (paramValues.join "|")))
|
||||||
(object
|
innerParams)
|
||||||
headers headers
|
(object
|
||||||
timeout 2))]
|
headers headers
|
||||||
(assert response.ok)
|
timeout 2))]
|
||||||
(print "call finished: ${response.text}")
|
(assert response.ok "MediaWiki query failed")
|
||||||
response.text))))
|
(print "call finished: ${response.text}")
|
||||||
|
response.text)))]
|
||||||
|
(assert data.query "MediaWiki response data doesn't contain a query field: $data")
|
||||||
|
data.query))
|
||||||
|
|
||||||
(method :Array<String> queryImageTitles [:Array<String> pageTitles]
|
(method :Array<String> queryImageTitles [:Array<String> pageTitles]
|
||||||
(flatten
|
(flatten
|
||||||
(for =>_id page (the haxe.DynamicAccess<Dynamic> .pages .query (query [=>"titles" pageTitles =>"prop" ["images"]]))
|
(for =>_id page (the haxe.DynamicAccess<Dynamic> .pages (query [=>"titles" pageTitles =>"prop" ["images"]]))
|
||||||
(if page.images
|
(if page.images
|
||||||
(page.images.map ->image image.title)
|
(page.images.map ->image image.title)
|
||||||
[]))))
|
[]))))
|
||||||
@@ -50,7 +53,7 @@
|
|||||||
(flatten
|
(flatten
|
||||||
(for =>_id image
|
(for =>_id image
|
||||||
(the haxe.DynamicAccess<Dynamic>
|
(the haxe.DynamicAccess<Dynamic>
|
||||||
.pages .query (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]]))
|
.pages (query [=>"titles" imageTitles =>"prop" ["imageinfo"] =>"iiprop" ["url"]]))
|
||||||
(if image.imageinfo
|
(if image.imageinfo
|
||||||
(image.imageinfo.map ->image image.url)
|
(image.imageinfo.map ->image image.url)
|
||||||
[]))))
|
[]))))
|
||||||
|
@@ -33,7 +33,6 @@
|
|||||||
(let [wikipedia (new MediaWikiSystem "https://en.wikipedia.org/w/api.php" null null 1)]
|
(let [wikipedia (new MediaWikiSystem "https://en.wikipedia.org/w/api.php" null null 1)]
|
||||||
~(wikipedia.queryImageUrls (wikipedia.queryImageTitles ["Phoenix Wright"])))
|
~(wikipedia.queryImageUrls (wikipedia.queryImageTitles ["Phoenix Wright"])))
|
||||||
|
|
||||||
// TODO make a dummy UI for this, instead of passing null
|
|
||||||
(let [controller (new ArchiveController archive (new DummyUI))]
|
(let [controller (new ArchiveController archive (new DummyUI))]
|
||||||
// TODO test controller
|
// TODO test controller
|
||||||
0))
|
0))
|
||||||
|
Reference in New Issue
Block a user