mediawiktory 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dokaz +1 -0
- data/.rubocop_todo.yml +16 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +10 -4
- data/CONTRIBUTING.md +6 -9
- data/README.md +153 -72
- data/bin/mediawiktory-gen +35 -0
- data/lib/media_wiktory.rb +2 -0
- data/lib/mediawiktory.rb +13 -14
- data/lib/mediawiktory/generator.rb +107 -0
- data/lib/mediawiktory/generator/api.rb +75 -0
- data/lib/mediawiktory/generator/module.rb +105 -0
- data/lib/mediawiktory/generator/param.rb +271 -0
- data/lib/mediawiktory/generator/renderable.rb +59 -0
- data/lib/mediawiktory/generator/templates/_action_method.erb +20 -0
- data/lib/mediawiktory/generator/templates/_module_in_param_docs.erb +2 -0
- data/lib/mediawiktory/generator/templates/_param_impl_boolean.erb +1 -0
- data/lib/mediawiktory/generator/templates/_param_impl_enum.erb +1 -0
- data/lib/mediawiktory/generator/templates/_param_impl_enum_of_modules.erb +1 -0
- data/lib/mediawiktory/generator/templates/_param_impl_string.erb +1 -0
- data/lib/mediawiktory/generator/templates/_param_impl_timestamp.erb +1 -0
- data/lib/mediawiktory/generator/templates/_param_method.erb +14 -0
- data/lib/mediawiktory/generator/templates/action.rb.erb +204 -0
- data/lib/mediawiktory/generator/templates/action_class.rb.erb +30 -0
- data/lib/mediawiktory/generator/templates/actions.rb.erb +31 -0
- data/lib/mediawiktory/generator/templates/api.rb.erb +65 -0
- data/lib/mediawiktory/{client.rb → generator/templates/client.rb.erb} +24 -10
- data/lib/mediawiktory/generator/templates/module_class.rb.erb +22 -0
- data/lib/mediawiktory/generator/templates/response.rb.erb +122 -0
- data/lib/mediawiktory/version.rb +4 -2
- data/lib/mediawiktory/wikipedia/actions.rb +2296 -0
- data/lib/mediawiktory/wikipedia/actions/abusefiltercheckmatch.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/abusefilterchecksyntax.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/abusefilterevalexpression.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/abusefilterunblockautopromote.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/addstudents.rb +52 -0
- data/lib/mediawiktory/wikipedia/actions/antispoof.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/base.rb +351 -0
- data/lib/mediawiktory/wikipedia/actions/block.rb +132 -0
- data/lib/mediawiktory/wikipedia/actions/bouncehandler.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/categorytree.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/centralauthtoken.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/centralnoticechoicedata.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/centralnoticequerycampaign.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/changeauthenticationdata.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/checktoken.rb +52 -0
- data/lib/mediawiktory/wikipedia/actions/cirrus-config-dump.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/cirrus-mapping-dump.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/cirrus-settings-dump.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/clearhasmsg.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/clientlogin.rb +86 -0
- data/lib/mediawiktory/wikipedia/actions/compare.rb +71 -0
- data/lib/mediawiktory/wikipedia/actions/createaccount.rb +86 -0
- data/lib/mediawiktory/wikipedia/actions/cspreport.rb +38 -0
- data/lib/mediawiktory/wikipedia/actions/cxconfiguration.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/cxdelete.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/cxpublish.rb +95 -0
- data/lib/mediawiktory/wikipedia/actions/cxsave.rb +87 -0
- data/lib/mediawiktory/wikipedia/actions/cxsuggestionlist.rb +81 -0
- data/lib/mediawiktory/wikipedia/actions/cxtoken.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/delete.rb +103 -0
- data/lib/mediawiktory/wikipedia/actions/deleteeducation.rb +65 -0
- data/lib/mediawiktory/wikipedia/actions/deleteglobalaccount.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/echomarkread.rb +77 -0
- data/lib/mediawiktory/wikipedia/actions/echomarkseen.rb +57 -0
- data/lib/mediawiktory/wikipedia/actions/edit.rb +266 -0
- data/lib/mediawiktory/wikipedia/actions/editmassmessagelist.rb +65 -0
- data/lib/mediawiktory/wikipedia/actions/emailuser.rb +62 -0
- data/lib/mediawiktory/wikipedia/actions/enlist.rb +89 -0
- data/lib/mediawiktory/wikipedia/actions/expandtemplates.rb +129 -0
- data/lib/mediawiktory/wikipedia/actions/fancycaptchareload.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/featuredfeed.rb +57 -0
- data/lib/mediawiktory/wikipedia/actions/feedcontributions.rb +121 -0
- data/lib/mediawiktory/wikipedia/actions/feedrecentchanges.rb +159 -0
- data/lib/mediawiktory/wikipedia/actions/feedwatchlist.rb +108 -0
- data/lib/mediawiktory/wikipedia/actions/filerevert.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/flagconfig.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/globalblock.rb +76 -0
- data/lib/mediawiktory/wikipedia/actions/globaluserrights.rb +94 -0
- data/lib/mediawiktory/wikipedia/actions/graph.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/help.rb +64 -0
- data/lib/mediawiktory/wikipedia/actions/imagerotate.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/import.rb +116 -0
- data/lib/mediawiktory/wikipedia/actions/jsonconfig.rb +60 -0
- data/lib/mediawiktory/wikipedia/actions/jsondata.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/languagesearch.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/linkaccount.rb +79 -0
- data/lib/mediawiktory/wikipedia/actions/liststudents.rb +63 -0
- data/lib/mediawiktory/wikipedia/actions/login.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/logout.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/managetags.rb +80 -0
- data/lib/mediawiktory/wikipedia/actions/massmessage.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/mergehistory.rb +79 -0
- data/lib/mediawiktory/wikipedia/actions/mobileview.rb +170 -0
- data/lib/mediawiktory/wikipedia/actions/move.rb +131 -0
- data/lib/mediawiktory/wikipedia/actions/oathvalidate.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/opensearch.rb +105 -0
- data/lib/mediawiktory/wikipedia/actions/options.rb +80 -0
- data/lib/mediawiktory/wikipedia/actions/pagetriageaction.rb +67 -0
- data/lib/mediawiktory/wikipedia/actions/pagetriagelist.rb +142 -0
- data/lib/mediawiktory/wikipedia/actions/pagetriagestats.rb +59 -0
- data/lib/mediawiktory/wikipedia/actions/pagetriagetagging.rb +83 -0
- data/lib/mediawiktory/wikipedia/actions/pagetriagetemplate.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/paraminfo.rb +91 -0
- data/lib/mediawiktory/wikipedia/actions/parse.rb +286 -0
- data/lib/mediawiktory/wikipedia/actions/parsoid-batch.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/patrol.rb +60 -0
- data/lib/mediawiktory/wikipedia/actions/protect.rb +121 -0
- data/lib/mediawiktory/wikipedia/actions/purge.rb +155 -0
- data/lib/mediawiktory/wikipedia/actions/query.rb +325 -0
- data/lib/mediawiktory/wikipedia/actions/refresheducation.rb +57 -0
- data/lib/mediawiktory/wikipedia/actions/removeauthenticationdata.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/resetpassword.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/review.rb +54 -0
- data/lib/mediawiktory/wikipedia/actions/reviewactivity.rb +60 -0
- data/lib/mediawiktory/wikipedia/actions/revisiondelete.rb +125 -0
- data/lib/mediawiktory/wikipedia/actions/rollback.rb +96 -0
- data/lib/mediawiktory/wikipedia/actions/rsd.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/sanitize-mapdata.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/scribunto-console.rb +62 -0
- data/lib/mediawiktory/wikipedia/actions/setglobalaccountstatus.rb +81 -0
- data/lib/mediawiktory/wikipedia/actions/setnotificationtimestamp.rb +180 -0
- data/lib/mediawiktory/wikipedia/actions/setpagelanguage.rb +81 -0
- data/lib/mediawiktory/wikipedia/actions/shortenurl.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/sitematrix.rb +91 -0
- data/lib/mediawiktory/wikipedia/actions/spamblacklist.rb +36 -0
- data/lib/mediawiktory/wikipedia/actions/stabilize.rb +76 -0
- data/lib/mediawiktory/wikipedia/actions/stashedit.rb +113 -0
- data/lib/mediawiktory/wikipedia/actions/strikevote.rb +60 -0
- data/lib/mediawiktory/wikipedia/actions/tag.rb +117 -0
- data/lib/mediawiktory/wikipedia/actions/templatedata.rb +148 -0
- data/lib/mediawiktory/wikipedia/actions/thank.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/titleblacklist.rb +51 -0
- data/lib/mediawiktory/wikipedia/actions/tokens.rb +36 -0
- data/lib/mediawiktory/wikipedia/actions/transcodereset.rb +47 -0
- data/lib/mediawiktory/wikipedia/actions/ulslocalization.rb +31 -0
- data/lib/mediawiktory/wikipedia/actions/unblock.rb +76 -0
- data/lib/mediawiktory/wikipedia/actions/undelete.rb +99 -0
- data/lib/mediawiktory/wikipedia/actions/unlinkaccount.rb +39 -0
- data/lib/mediawiktory/wikipedia/actions/upload.rb +172 -0
- data/lib/mediawiktory/wikipedia/actions/userrights.rb +107 -0
- data/lib/mediawiktory/wikipedia/actions/validatepassword.rb +55 -0
- data/lib/mediawiktory/wikipedia/actions/visualeditor.rb +96 -0
- data/lib/mediawiktory/wikipedia/actions/visualeditoredit.rb +164 -0
- data/lib/mediawiktory/wikipedia/actions/watch.rb +164 -0
- data/lib/mediawiktory/wikipedia/actions/webapp-manifest.rb +25 -0
- data/lib/mediawiktory/wikipedia/actions/wikilove.rb +79 -0
- data/lib/mediawiktory/wikipedia/actions/zeroconfig.rb +44 -0
- data/lib/mediawiktory/wikipedia/api.rb +80 -0
- data/lib/mediawiktory/wikipedia/client.rb +61 -0
- data/lib/mediawiktory/wikipedia/modules/abusefilters.rb +85 -0
- data/lib/mediawiktory/wikipedia/modules/abuselog.rb +101 -0
- data/lib/mediawiktory/wikipedia/modules/allcategories.rb +104 -0
- data/lib/mediawiktory/wikipedia/modules/alldeletedrevisions.rb +213 -0
- data/lib/mediawiktory/wikipedia/modules/allfileusages.rb +95 -0
- data/lib/mediawiktory/wikipedia/modules/allimages.rb +183 -0
- data/lib/mediawiktory/wikipedia/modules/alllinks.rb +108 -0
- data/lib/mediawiktory/wikipedia/modules/allmessages.rb +143 -0
- data/lib/mediawiktory/wikipedia/modules/allpages.rb +182 -0
- data/lib/mediawiktory/wikipedia/modules/allredirects.rb +108 -0
- data/lib/mediawiktory/wikipedia/modules/allrevisions.rb +181 -0
- data/lib/mediawiktory/wikipedia/modules/alltransclusions.rb +108 -0
- data/lib/mediawiktory/wikipedia/modules/allusers.rb +141 -0
- data/lib/mediawiktory/wikipedia/modules/authmanagerinfo.rb +63 -0
- data/lib/mediawiktory/wikipedia/modules/babel.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/backlinks.rb +100 -0
- data/lib/mediawiktory/wikipedia/modules/betafeatures.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/blocks.rb +127 -0
- data/lib/mediawiktory/wikipedia/modules/categories.rb +90 -0
- data/lib/mediawiktory/wikipedia/modules/categoryinfo.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/categorymembers.rb +183 -0
- data/lib/mediawiktory/wikipedia/modules/centralnoticelogs.rb +70 -0
- data/lib/mediawiktory/wikipedia/modules/checkuser.rb +83 -0
- data/lib/mediawiktory/wikipedia/modules/checkuserlog.rb +83 -0
- data/lib/mediawiktory/wikipedia/modules/contenttranslation.rb +83 -0
- data/lib/mediawiktory/wikipedia/modules/contenttranslationcorpora.rb +50 -0
- data/lib/mediawiktory/wikipedia/modules/contenttranslationlangtrend.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/contenttranslationstats.rb +22 -0
- data/lib/mediawiktory/wikipedia/modules/contenttranslationsuggestions.rb +70 -0
- data/lib/mediawiktory/wikipedia/modules/contributors.rb +90 -0
- data/lib/mediawiktory/wikipedia/modules/coordinates.rb +80 -0
- data/lib/mediawiktory/wikipedia/modules/cxpublishedtranslations.rb +54 -0
- data/lib/mediawiktory/wikipedia/modules/cxtranslatorstats.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/deletedrevisions.rb +169 -0
- data/lib/mediawiktory/wikipedia/modules/deletedrevs.rb +148 -0
- data/lib/mediawiktory/wikipedia/modules/duplicatefiles.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/embeddedin.rb +93 -0
- data/lib/mediawiktory/wikipedia/modules/extlinks.rb +66 -0
- data/lib/mediawiktory/wikipedia/modules/extracts.rb +81 -0
- data/lib/mediawiktory/wikipedia/modules/exturlusage.rb +92 -0
- data/lib/mediawiktory/wikipedia/modules/featureusage.rb +59 -0
- data/lib/mediawiktory/wikipedia/modules/filearchive.rb +104 -0
- data/lib/mediawiktory/wikipedia/modules/filerepoinfo.rb +35 -0
- data/lib/mediawiktory/wikipedia/modules/fileusage.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/flagged.rb +22 -0
- data/lib/mediawiktory/wikipedia/modules/g-allcategories.rb +91 -0
- data/lib/mediawiktory/wikipedia/modules/g-alldeletedrevisions.rb +200 -0
- data/lib/mediawiktory/wikipedia/modules/g-allfileusages.rb +82 -0
- data/lib/mediawiktory/wikipedia/modules/g-allimages.rb +170 -0
- data/lib/mediawiktory/wikipedia/modules/g-alllinks.rb +95 -0
- data/lib/mediawiktory/wikipedia/modules/g-allpages.rb +182 -0
- data/lib/mediawiktory/wikipedia/modules/g-allredirects.rb +95 -0
- data/lib/mediawiktory/wikipedia/modules/g-allrevisions.rb +168 -0
- data/lib/mediawiktory/wikipedia/modules/g-alltransclusions.rb +95 -0
- data/lib/mediawiktory/wikipedia/modules/g-backlinks.rb +100 -0
- data/lib/mediawiktory/wikipedia/modules/g-categories.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/g-categorymembers.rb +170 -0
- data/lib/mediawiktory/wikipedia/modules/g-contenttranslation.rb +83 -0
- data/lib/mediawiktory/wikipedia/modules/g-contenttranslationsuggestions.rb +70 -0
- data/lib/mediawiktory/wikipedia/modules/g-deletedrevisions.rb +156 -0
- data/lib/mediawiktory/wikipedia/modules/g-duplicatefiles.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/g-embeddedin.rb +93 -0
- data/lib/mediawiktory/wikipedia/modules/g-exturlusage.rb +79 -0
- data/lib/mediawiktory/wikipedia/modules/g-fileusage.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/g-geosearch.rb +116 -0
- data/lib/mediawiktory/wikipedia/modules/g-gettingstartedgetpages.rb +46 -0
- data/lib/mediawiktory/wikipedia/modules/g-images.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/g-imageusage.rb +100 -0
- data/lib/mediawiktory/wikipedia/modules/g-iwbacklinks.rb +67 -0
- data/lib/mediawiktory/wikipedia/modules/g-langbacklinks.rb +67 -0
- data/lib/mediawiktory/wikipedia/modules/g-links.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/g-linkshere.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/g-mostviewed.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/g-oldreviewedpages.rb +114 -0
- data/lib/mediawiktory/wikipedia/modules/g-pageswithprop.rb +59 -0
- data/lib/mediawiktory/wikipedia/modules/g-prefixsearch.rb +72 -0
- data/lib/mediawiktory/wikipedia/modules/g-projectpages.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/g-protectedtitles.rb +93 -0
- data/lib/mediawiktory/wikipedia/modules/g-querypage.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/g-random.rb +71 -0
- data/lib/mediawiktory/wikipedia/modules/g-recentchanges.rb +157 -0
- data/lib/mediawiktory/wikipedia/modules/g-redirects.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/g-revisions.rb +185 -0
- data/lib/mediawiktory/wikipedia/modules/g-search.rb +112 -0
- data/lib/mediawiktory/wikipedia/modules/g-templates.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/g-transcludedin.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/g-watchlist.rb +145 -0
- data/lib/mediawiktory/wikipedia/modules/g-watchlistraw.rb +109 -0
- data/lib/mediawiktory/wikipedia/modules/g-wblistentityusage.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/gadgetcategories.rb +48 -0
- data/lib/mediawiktory/wikipedia/modules/gadgets.rb +75 -0
- data/lib/mediawiktory/wikipedia/modules/geosearch.rb +129 -0
- data/lib/mediawiktory/wikipedia/modules/gettingstartedgetpages.rb +46 -0
- data/lib/mediawiktory/wikipedia/modules/globalallusers.rb +106 -0
- data/lib/mediawiktory/wikipedia/modules/globalblocks.rb +106 -0
- data/lib/mediawiktory/wikipedia/modules/globalgroups.rb +35 -0
- data/lib/mediawiktory/wikipedia/modules/globalusage.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/globaluserinfo.rb +43 -0
- data/lib/mediawiktory/wikipedia/modules/imageinfo.rb +142 -0
- data/lib/mediawiktory/wikipedia/modules/images.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/imageusage.rb +100 -0
- data/lib/mediawiktory/wikipedia/modules/info.rb +69 -0
- data/lib/mediawiktory/wikipedia/modules/iwbacklinks.rb +80 -0
- data/lib/mediawiktory/wikipedia/modules/iwlinks.rb +87 -0
- data/lib/mediawiktory/wikipedia/modules/json.rb +57 -0
- data/lib/mediawiktory/wikipedia/modules/jsonfm.rb +64 -0
- data/lib/mediawiktory/wikipedia/modules/langbacklinks.rb +80 -0
- data/lib/mediawiktory/wikipedia/modules/langlinks.rb +95 -0
- data/lib/mediawiktory/wikipedia/modules/links.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/linkshere.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/logevents.rb +151 -0
- data/lib/mediawiktory/wikipedia/modules/mapdata.rb +46 -0
- data/lib/mediawiktory/wikipedia/modules/mmsites.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/mostviewed.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/mystashedfiles.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/none.rb +22 -0
- data/lib/mediawiktory/wikipedia/modules/notifications.rb +174 -0
- data/lib/mediawiktory/wikipedia/modules/oath.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/oldreviewedpages.rb +114 -0
- data/lib/mediawiktory/wikipedia/modules/ores.rb +22 -0
- data/lib/mediawiktory/wikipedia/modules/pageassessments.rb +45 -0
- data/lib/mediawiktory/wikipedia/modules/pageimages.rb +72 -0
- data/lib/mediawiktory/wikipedia/modules/pagepropnames.rb +38 -0
- data/lib/mediawiktory/wikipedia/modules/pageprops.rb +43 -0
- data/lib/mediawiktory/wikipedia/modules/pageswithprop.rb +72 -0
- data/lib/mediawiktory/wikipedia/modules/pageterms.rb +43 -0
- data/lib/mediawiktory/wikipedia/modules/pageviews.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/php.rb +35 -0
- data/lib/mediawiktory/wikipedia/modules/phpfm.rb +42 -0
- data/lib/mediawiktory/wikipedia/modules/prefixsearch.rb +72 -0
- data/lib/mediawiktory/wikipedia/modules/projectpages.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/projects.rb +29 -0
- data/lib/mediawiktory/wikipedia/modules/protectedtitles.rb +106 -0
- data/lib/mediawiktory/wikipedia/modules/querypage.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/random.rb +71 -0
- data/lib/mediawiktory/wikipedia/modules/rawfm.rb +29 -0
- data/lib/mediawiktory/wikipedia/modules/recentchanges.rb +170 -0
- data/lib/mediawiktory/wikipedia/modules/redirects.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/references.rb +30 -0
- data/lib/mediawiktory/wikipedia/modules/revisions.rb +198 -0
- data/lib/mediawiktory/wikipedia/modules/search.rb +125 -0
- data/lib/mediawiktory/wikipedia/modules/siteinfo.rb +70 -0
- data/lib/mediawiktory/wikipedia/modules/siteviews.rb +43 -0
- data/lib/mediawiktory/wikipedia/modules/stashimageinfo.rb +85 -0
- data/lib/mediawiktory/wikipedia/modules/tags.rb +51 -0
- data/lib/mediawiktory/wikipedia/modules/templates.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/tokens.rb +35 -0
- data/lib/mediawiktory/wikipedia/modules/transcludedin.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/transcodestatus.rb +22 -0
- data/lib/mediawiktory/wikipedia/modules/unreadnotificationpages.rb +50 -0
- data/lib/mediawiktory/wikipedia/modules/usercontribs.rb +155 -0
- data/lib/mediawiktory/wikipedia/modules/userinfo.rb +43 -0
- data/lib/mediawiktory/wikipedia/modules/users.rb +82 -0
- data/lib/mediawiktory/wikipedia/modules/videoinfo.rb +143 -0
- data/lib/mediawiktory/wikipedia/modules/watchlist.rb +158 -0
- data/lib/mediawiktory/wikipedia/modules/watchlistraw.rb +122 -0
- data/lib/mediawiktory/wikipedia/modules/wbentityusage.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/wblistentityusage.rb +77 -0
- data/lib/mediawiktory/wikipedia/modules/wikibase.rb +35 -0
- data/lib/mediawiktory/wikipedia/modules/wikisets.rb +58 -0
- data/lib/mediawiktory/wikipedia/modules/xml.rb +37 -0
- data/lib/mediawiktory/wikipedia/modules/xmlfm.rb +44 -0
- data/lib/mediawiktory/wikipedia/response.rb +122 -0
- data/lib/nokogiri/more.rb +12 -12
- data/mediawiktory.gemspec +4 -0
- metadata +350 -257
- data/bin/mediawiktory +0 -13
- data/doc/mediawiki_api_types.md +0 -14
- data/examples/query.rb +0 -15
- data/examples/query_generator.rb +0 -15
- data/lib/faraday/naive_cache.rb +0 -40
- data/lib/mediawiktory/action.rb +0 -61
- data/lib/mediawiktory/generated/abusefiltercheckmatch.rb +0 -9
- data/lib/mediawiktory/generated/abusefilterchecksyntax.rb +0 -6
- data/lib/mediawiktory/generated/abusefilterevalexpression.rb +0 -6
- data/lib/mediawiktory/generated/abusefilters.rb +0 -12
- data/lib/mediawiktory/generated/abusefilterunblockautopromote.rb +0 -8
- data/lib/mediawiktory/generated/abuselog.rb +0 -14
- data/lib/mediawiktory/generated/actions_mixin.rb +0 -352
- data/lib/mediawiktory/generated/addstudents.rb +0 -9
- data/lib/mediawiktory/generated/allcategories.rb +0 -15
- data/lib/mediawiktory/generated/alldeletedrevisions.rb +0 -28
- data/lib/mediawiktory/generated/allfileusages.rb +0 -14
- data/lib/mediawiktory/generated/allimages.rb +0 -23
- data/lib/mediawiktory/generated/alllinks.rb +0 -15
- data/lib/mediawiktory/generated/allmessages.rb +0 -19
- data/lib/mediawiktory/generated/allpages.rb +0 -21
- data/lib/mediawiktory/generated/allredirects.rb +0 -15
- data/lib/mediawiktory/generated/allrevisions.rb +0 -24
- data/lib/mediawiktory/generated/alltransclusions.rb +0 -15
- data/lib/mediawiktory/generated/allusers.rb +0 -18
- data/lib/mediawiktory/generated/antispoof.rb +0 -6
- data/lib/mediawiktory/generated/authmanagerinfo.rb +0 -10
- data/lib/mediawiktory/generated/babel.rb +0 -7
- data/lib/mediawiktory/generated/backlinks.rb +0 -14
- data/lib/mediawiktory/generated/betafeatures.rb +0 -7
- data/lib/mediawiktory/generated/block.rb +0 -20
- data/lib/mediawiktory/generated/blocks.rb +0 -16
- data/lib/mediawiktory/generated/bouncehandler.rb +0 -7
- data/lib/mediawiktory/generated/categories.rb +0 -12
- data/lib/mediawiktory/generated/categoryinfo.rb +0 -7
- data/lib/mediawiktory/generated/categorymembers.rb +0 -23
- data/lib/mediawiktory/generated/categorytree.rb +0 -7
- data/lib/mediawiktory/generated/centralauthtoken.rb +0 -5
- data/lib/mediawiktory/generated/centralnoticechoicedata.rb +0 -7
- data/lib/mediawiktory/generated/centralnoticelogs.rb +0 -11
- data/lib/mediawiktory/generated/centralnoticequerycampaign.rb +0 -6
- data/lib/mediawiktory/generated/changeauthenticationdata.rb +0 -10
- data/lib/mediawiktory/generated/checktoken.rb +0 -8
- data/lib/mediawiktory/generated/checkuser.rb +0 -14
- data/lib/mediawiktory/generated/checkuserlog.rb +0 -13
- data/lib/mediawiktory/generated/cirrus-config-dump.rb +0 -5
- data/lib/mediawiktory/generated/cirrus-mapping-dump.rb +0 -5
- data/lib/mediawiktory/generated/cirrus-settings-dump.rb +0 -5
- data/lib/mediawiktory/generated/clearhasmsg.rb +0 -6
- data/lib/mediawiktory/generated/clientlogin.rb +0 -15
- data/lib/mediawiktory/generated/compare.rb +0 -11
- data/lib/mediawiktory/generated/contenttranslation.rb +0 -12
- data/lib/mediawiktory/generated/contenttranslationcorpora.rb +0 -8
- data/lib/mediawiktory/generated/contenttranslationlangtrend.rb +0 -8
- data/lib/mediawiktory/generated/contenttranslationstats.rb +0 -5
- data/lib/mediawiktory/generated/contenttranslationsuggestions.rb +0 -11
- data/lib/mediawiktory/generated/contributors.rb +0 -12
- data/lib/mediawiktory/generated/coordinates.rb +0 -12
- data/lib/mediawiktory/generated/createaccount.rb +0 -15
- data/lib/mediawiktory/generated/cspreport.rb +0 -8
- data/lib/mediawiktory/generated/cxconfiguration.rb +0 -7
- data/lib/mediawiktory/generated/cxdelete.rb +0 -10
- data/lib/mediawiktory/generated/cxpublish.rb +0 -15
- data/lib/mediawiktory/generated/cxpublishedtranslations.rb +0 -9
- data/lib/mediawiktory/generated/cxsave.rb +0 -14
- data/lib/mediawiktory/generated/cxsuggestionlist.rb +0 -12
- data/lib/mediawiktory/generated/cxtoken.rb +0 -7
- data/lib/mediawiktory/generated/cxtranslatorstats.rb +0 -6
- data/lib/mediawiktory/generated/delete.rb +0 -15
- data/lib/mediawiktory/generated/deletedrevisions.rb +0 -23
- data/lib/mediawiktory/generated/deletedrevs.rb +0 -20
- data/lib/mediawiktory/generated/deleteeducation.rb +0 -10
- data/lib/mediawiktory/generated/deleteglobalaccount.rb +0 -9
- data/lib/mediawiktory/generated/duplicatefiles.rb +0 -10
- data/lib/mediawiktory/generated/echomarkread.rb +0 -11
- data/lib/mediawiktory/generated/echomarkseen.rb +0 -9
- data/lib/mediawiktory/generated/edit.rb +0 -35
- data/lib/mediawiktory/generated/editmassmessagelist.rb +0 -10
- data/lib/mediawiktory/generated/emailuser.rb +0 -11
- data/lib/mediawiktory/generated/embeddedin.rb +0 -13
- data/lib/mediawiktory/generated/enlist.rb +0 -13
- data/lib/mediawiktory/generated/expandtemplates.rb +0 -16
- data/lib/mediawiktory/generated/extlinks.rb +0 -11
- data/lib/mediawiktory/generated/extracts.rb +0 -13
- data/lib/mediawiktory/generated/exturlusage.rb +0 -13
- data/lib/mediawiktory/generated/fancycaptchareload.rb +0 -5
- data/lib/mediawiktory/generated/featuredfeed.rb +0 -8
- data/lib/mediawiktory/generated/featureusage.rb +0 -10
- data/lib/mediawiktory/generated/feedcontributions.rb +0 -16
- data/lib/mediawiktory/generated/feedrecentchanges.rb +0 -22
- data/lib/mediawiktory/generated/feedwatchlist.rb +0 -14
- data/lib/mediawiktory/generated/filearchive.rb +0 -15
- data/lib/mediawiktory/generated/filerepoinfo.rb +0 -7
- data/lib/mediawiktory/generated/filerevert.rb +0 -10
- data/lib/mediawiktory/generated/fileusage.rb +0 -11
- data/lib/mediawiktory/generated/flagconfig.rb +0 -5
- data/lib/mediawiktory/generated/flagged.rb +0 -5
- data/lib/mediawiktory/generated/gadgetcategories.rb +0 -8
- data/lib/mediawiktory/generated/gadgets.rb +0 -11
- data/lib/mediawiktory/generated/geosearch.rb +0 -17
- data/lib/mediawiktory/generated/gettingstartedgetpages.rb +0 -9
- data/lib/mediawiktory/generated/globalallusers.rb +0 -14
- data/lib/mediawiktory/generated/globalblock.rb +0 -13
- data/lib/mediawiktory/generated/globalblocks.rb +0 -14
- data/lib/mediawiktory/generated/globalgroups.rb +0 -7
- data/lib/mediawiktory/generated/globalusage.rb +0 -10
- data/lib/mediawiktory/generated/globaluserinfo.rb +0 -8
- data/lib/mediawiktory/generated/globaluserrights.rb +0 -13
- data/lib/mediawiktory/generated/graph.rb +0 -8
- data/lib/mediawiktory/generated/help.rb +0 -10
- data/lib/mediawiktory/generated/imageinfo.rb +0 -20
- data/lib/mediawiktory/generated/imagerotate.rb +0 -5
- data/lib/mediawiktory/generated/images.rb +0 -10
- data/lib/mediawiktory/generated/imageusage.rb +0 -14
- data/lib/mediawiktory/generated/import.rb +0 -16
- data/lib/mediawiktory/generated/info.rb +0 -10
- data/lib/mediawiktory/generated/iwbacklinks.rb +0 -12
- data/lib/mediawiktory/generated/iwlinks.rb +0 -13
- data/lib/mediawiktory/generated/jsonconfig.rb +0 -9
- data/lib/mediawiktory/generated/jsondata.rb +0 -6
- data/lib/mediawiktory/generated/langbacklinks.rb +0 -12
- data/lib/mediawiktory/generated/langlinks.rb +0 -14
- data/lib/mediawiktory/generated/languagesearch.rb +0 -7
- data/lib/mediawiktory/generated/linkaccount.rb +0 -14
- data/lib/mediawiktory/generated/links.rb +0 -11
- data/lib/mediawiktory/generated/linkshere.rb +0 -11
- data/lib/mediawiktory/generated/liststudents.rb +0 -9
- data/lib/mediawiktory/generated/logevents.rb +0 -19
- data/lib/mediawiktory/generated/login.rb +0 -11
- data/lib/mediawiktory/generated/logout.rb +0 -5
- data/lib/mediawiktory/generated/managetags.rb +0 -12
- data/lib/mediawiktory/generated/mapdata.rb +0 -9
- data/lib/mediawiktory/generated/massmessage.rb +0 -10
- data/lib/mediawiktory/generated/mergehistory.rb +0 -13
- data/lib/mediawiktory/generated/mmsites.rb +0 -6
- data/lib/mediawiktory/generated/mobileview.rb +0 -22
- data/lib/mediawiktory/generated/mostviewed.rb +0 -9
- data/lib/mediawiktory/generated/move.rb +0 -19
- data/lib/mediawiktory/generated/mystashedfiles.rb +0 -9
- data/lib/mediawiktory/generated/notifications.rb +0 -22
- data/lib/mediawiktory/generated/oath.rb +0 -7
- data/lib/mediawiktory/generated/oathvalidate.rb +0 -9
- data/lib/mediawiktory/generated/oldreviewedpages.rb +0 -15
- data/lib/mediawiktory/generated/opensearch.rb +0 -12
- data/lib/mediawiktory/generated/options.rb +0 -12
- data/lib/mediawiktory/generated/ores.rb +0 -6
- data/lib/mediawiktory/generated/pageassessments.rb +0 -9
- data/lib/mediawiktory/generated/pageimages.rb +0 -11
- data/lib/mediawiktory/generated/pagepropnames.rb +0 -8
- data/lib/mediawiktory/generated/pageprops.rb +0 -8
- data/lib/mediawiktory/generated/pageswithprop.rb +0 -11
- data/lib/mediawiktory/generated/pageterms.rb +0 -8
- data/lib/mediawiktory/generated/pagetriageaction.rb +0 -11
- data/lib/mediawiktory/generated/pagetriagelist.rb +0 -21
- data/lib/mediawiktory/generated/pagetriagestats.rb +0 -10
- data/lib/mediawiktory/generated/pagetriagetagging.rb +0 -13
- data/lib/mediawiktory/generated/pagetriagetemplate.rb +0 -7
- data/lib/mediawiktory/generated/pageviews.rb +0 -9
- data/lib/mediawiktory/generated/paraminfo.rb +0 -11
- data/lib/mediawiktory/generated/parse.rb +0 -36
- data/lib/mediawiktory/generated/parsoid-batch.rb +0 -6
- data/lib/mediawiktory/generated/patrol.rb +0 -10
- data/lib/mediawiktory/generated/prefixsearch.rb +0 -10
- data/lib/mediawiktory/generated/projectpages.rb +0 -10
- data/lib/mediawiktory/generated/projects.rb +0 -7
- data/lib/mediawiktory/generated/protect.rb +0 -16
- data/lib/mediawiktory/generated/protectedtitles.rb +0 -14
- data/lib/mediawiktory/generated/purge.rb +0 -15
- data/lib/mediawiktory/generated/query.rb +0 -20
- data/lib/mediawiktory/generated/querypage.rb +0 -9
- data/lib/mediawiktory/generated/random.rb +0 -11
- data/lib/mediawiktory/generated/recentchanges.rb +0 -21
- data/lib/mediawiktory/generated/redirects.rb +0 -11
- data/lib/mediawiktory/generated/references.rb +0 -7
- data/lib/mediawiktory/generated/refresheducation.rb +0 -9
- data/lib/mediawiktory/generated/removeauthenticationdata.rb +0 -8
- data/lib/mediawiktory/generated/resetpassword.rb +0 -9
- data/lib/mediawiktory/generated/review.rb +0 -10
- data/lib/mediawiktory/generated/reviewactivity.rb +0 -10
- data/lib/mediawiktory/generated/revisiondelete.rb +0 -15
- data/lib/mediawiktory/generated/revisions.rb +0 -26
- data/lib/mediawiktory/generated/rollback.rb +0 -14
- data/lib/mediawiktory/generated/rsd.rb +0 -5
- data/lib/mediawiktory/generated/sanitize-mapdata.rb +0 -8
- data/lib/mediawiktory/generated/scribunto-console.rb +0 -10
- data/lib/mediawiktory/generated/search.rb +0 -16
- data/lib/mediawiktory/generated/setglobalaccountstatus.rb +0 -12
- data/lib/mediawiktory/generated/setnotificationtimestamp.rb +0 -18
- data/lib/mediawiktory/generated/setpagelanguage.rb +0 -12
- data/lib/mediawiktory/generated/shortenurl.rb +0 -7
- data/lib/mediawiktory/generated/siteinfo.rb +0 -11
- data/lib/mediawiktory/generated/sitematrix.rb +0 -12
- data/lib/mediawiktory/generated/siteviews.rb +0 -8
- data/lib/mediawiktory/generated/spamblacklist.rb +0 -6
- data/lib/mediawiktory/generated/stabilize.rb +0 -12
- data/lib/mediawiktory/generated/stashedit.rb +0 -16
- data/lib/mediawiktory/generated/stashimageinfo.rb +0 -12
- data/lib/mediawiktory/generated/strikevote.rb +0 -10
- data/lib/mediawiktory/generated/tag.rb +0 -14
- data/lib/mediawiktory/generated/tags.rb +0 -9
- data/lib/mediawiktory/generated/templatedata.rb +0 -12
- data/lib/mediawiktory/generated/templates.rb +0 -11
- data/lib/mediawiktory/generated/thank.rb +0 -9
- data/lib/mediawiktory/generated/titleblacklist.rb +0 -9
- data/lib/mediawiktory/generated/tokens.rb +0 -6
- data/lib/mediawiktory/generated/transcludedin.rb +0 -11
- data/lib/mediawiktory/generated/transcodereset.rb +0 -9
- data/lib/mediawiktory/generated/transcodestatus.rb +0 -5
- data/lib/mediawiktory/generated/ulslocalization.rb +0 -6
- data/lib/mediawiktory/generated/unblock.rb +0 -12
- data/lib/mediawiktory/generated/undelete.rb +0 -13
- data/lib/mediawiktory/generated/unlinkaccount.rb +0 -8
- data/lib/mediawiktory/generated/unreadnotificationpages.rb +0 -9
- data/lib/mediawiktory/generated/upload.rb +0 -24
- data/lib/mediawiktory/generated/usercontribs.rb +0 -19
- data/lib/mediawiktory/generated/userinfo.rb +0 -8
- data/lib/mediawiktory/generated/userrights.rb +0 -13
- data/lib/mediawiktory/generated/users.rb +0 -11
- data/lib/mediawiktory/generated/validatepassword.rb +0 -10
- data/lib/mediawiktory/generated/videoinfo.rb +0 -20
- data/lib/mediawiktory/generated/visualeditor.rb +0 -13
- data/lib/mediawiktory/generated/visualeditoredit.rb +0 -23
- data/lib/mediawiktory/generated/watch.rb +0 -16
- data/lib/mediawiktory/generated/watchlist.rb +0 -20
- data/lib/mediawiktory/generated/watchlistraw.rb +0 -16
- data/lib/mediawiktory/generated/wbentityusage.rb +0 -11
- data/lib/mediawiktory/generated/wblistentityusage.rb +0 -11
- data/lib/mediawiktory/generated/webapp-manifest.rb +0 -5
- data/lib/mediawiktory/generated/wikibase.rb +0 -7
- data/lib/mediawiktory/generated/wikilove.rb +0 -13
- data/lib/mediawiktory/generated/wikisets.rb +0 -10
- data/lib/mediawiktory/generated/zeroconfig.rb +0 -7
- data/lib/mediawiktory/mw_module.rb +0 -324
- data/lib/mediawiktory/page.rb +0 -50
- data/lib/mediawiktory/query.rb +0 -58
- data/script/data/api.yaml +0 -40414
- data/script/lib/api.rb +0 -14
- data/script/lib/module.rb +0 -132
- data/script/lib/parameter.rb +0 -133
- data/script/parse_api.rb +0 -21
- data/test/cache.rb +0 -15
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'erb'
|
4
|
+
|
5
|
+
module MediaWiktory
|
6
|
+
class Generator
|
7
|
+
module Renderable
|
8
|
+
def to_h
|
9
|
+
stringify_hash(super, recursive: true)
|
10
|
+
end
|
11
|
+
|
12
|
+
def render_to(path, **vars)
|
13
|
+
FileUtils.mkdir_p File.dirname(path)
|
14
|
+
File.write(path, to_html(**vars))
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_html(**vars)
|
18
|
+
render(vars.fetch(:template, main_template), **vars)
|
19
|
+
end
|
20
|
+
|
21
|
+
def render(template, **vars)
|
22
|
+
# puts "Rendering #{template} with #{self}#{vars}"
|
23
|
+
vars.each { |name, val| instance_variable_set("@#{name}", val) }
|
24
|
+
path = File.expand_path("../templates/#{template}.erb", __FILE__)
|
25
|
+
ERB.new(File.read(path))
|
26
|
+
.tap { |tpl| tpl.filename = path }
|
27
|
+
.result(binding)
|
28
|
+
end
|
29
|
+
|
30
|
+
def partial(template, context = nil)
|
31
|
+
# puts "Rendering #{template} with #{context || self}"
|
32
|
+
|
33
|
+
# Never repeat this at home, dear children.
|
34
|
+
if context
|
35
|
+
instance_variables.each { |var| context.instance_variable_set(var, instance_variable_get(var)) }
|
36
|
+
end
|
37
|
+
path = File.expand_path("../templates/#{template}.erb", __FILE__)
|
38
|
+
ERB.new(File.read(path))
|
39
|
+
.tap { |tpl| tpl.filename = path }
|
40
|
+
.result(context ? context.get_binding : binding)
|
41
|
+
rescue => e
|
42
|
+
puts "#{e} while #{template} with #{context || self}"
|
43
|
+
raise
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_binding # rubocop:disable Style/AccessorMethodName
|
47
|
+
binding
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def stringify_hash(hash, recursive: false)
|
53
|
+
hash.map { |k, v|
|
54
|
+
[k.to_s, v.is_a?(Hash) && recursive ? stringify_hash(v, recursive: true) : v.to_s]
|
55
|
+
}.to_h
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
# <%= description.strip.gsub('#', ' #') %>
|
3
|
+
#
|
4
|
+
# This method creates an instance of {<%= @namespace %>::Actions::<%= class_name %>} action.
|
5
|
+
#
|
6
|
+
<% unless params.empty? %> # Action parameters could be passed or by subsequent
|
7
|
+
# {<%= @namespace %>::Actions::<%= class_name %>} method calls, like
|
8
|
+
#
|
9
|
+
# ```ruby
|
10
|
+
# api.<%= method_name %>.<%= params.first.name %>('value')
|
11
|
+
# ```<% end %>
|
12
|
+
#
|
13
|
+
# See {<%= @namespace %>::Actions::Base} for generic explanation of working with MediaWiki actions and
|
14
|
+
# {<%= @namespace %>::Actions::<%= class_name %>} class for a list of parameters and usage.
|
15
|
+
#
|
16
|
+
# @return [<%= @namespace %>::Actions::<%= class_name %>]
|
17
|
+
#
|
18
|
+
def <%= method_name %>
|
19
|
+
<%= class_name %>.new(client, @defaults)
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
merge(<%= full_name %>: 'true')
|
@@ -0,0 +1 @@
|
|
1
|
+
defined?(super) && super || [<%= enum_values %>].include?(value.to_s) && merge(<%= full_name %>: value.to_s<% if list? %>, replace: false<% end %>)
|
@@ -0,0 +1 @@
|
|
1
|
+
<% unless full_name == 'format' %>defined?(super) && super || <% end %>[<%= enum_values %>].include?(value.to_sym) && merge(<%= full_name %>: value.to_s<% if list? %>, replace: false<% end %>).submodule({<%= modules_hash %>}[value.to_sym])
|
@@ -0,0 +1 @@
|
|
1
|
+
merge(<%= full_name %>: value.to_s<% if list? %>, replace: false<% end %>)
|
@@ -0,0 +1 @@
|
|
1
|
+
merge(<%= full_name %>: value.iso8601<% if list? %>, replace: false<% end %>)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
# <%= description %>
|
3
|
+
#
|
4
|
+
<% unless param_def.empty? %> # @param <%= param_def.sub('*', '') %> [<%= ruby_type %>]<%= param_docs %><% if real_type.include?('of modules') %><%= partial '_module_in_param_docs' %><% else %>
|
5
|
+
<% end %><% end %> # @return [self]
|
6
|
+
def <%= method_name %>(<%= param_def %>)
|
7
|
+
<% if list?
|
8
|
+
%>values.inject(self) { |res, val| res._<%= method_name %>(val)<% if impl_type.include?('enum') %> or fail ArgumentError, "Unknown value for <%= method_name %>: #{val}"<% end %> }<%
|
9
|
+
elsif enum? %>_<%= method_name %>(value) or fail ArgumentError, "Unknown value for <%= method_name %>: #{value}"<% end %><% if list? || enum? %>
|
10
|
+
end
|
11
|
+
|
12
|
+
# @private
|
13
|
+
def _<%= method_name %>(value)
|
14
|
+
<%= partial("_param_impl_#{impl_type}") %> end<% else %><%= partial("_param_impl_#{impl_type}") %> end<% end %>
|
@@ -0,0 +1,204 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../response'
|
4
|
+
|
5
|
+
module <%= @namespace %>
|
6
|
+
module Actions
|
7
|
+
# Global setup methods included into every action through {Base}.
|
8
|
+
module GlobalParams
|
9
|
+
<% main.params.each { |param| %><%= partial '_param_method', param %><% } %>
|
10
|
+
end
|
11
|
+
|
12
|
+
# Base class for all {<%= @namespace %>::Api} actions. "Actions" is MediaWiki's term for
|
13
|
+
# different request types. Everything you are doing with your target MediaWiki installation, you
|
14
|
+
# are doing by _performing actions_.
|
15
|
+
#
|
16
|
+
# Typically, you should never instantiate this class or its descendants directly, but rather by
|
17
|
+
# {<%= @namespace %>::Api Api} methods (included from {<%= @namespace %>::Actions Actions}
|
18
|
+
# module).
|
19
|
+
#
|
20
|
+
# The usual workflow with actions is:
|
21
|
+
#
|
22
|
+
# * Create it with `api.action_name`
|
23
|
+
# * Set action params with subsequent `paramname(paramvalue)` calls;
|
24
|
+
# * Perform action with {#perform} (returns row MediaWiki response as a string) or {#response}
|
25
|
+
# (returns {<%= @namespace %>::Response} class with parsed data and helper methods).
|
26
|
+
#
|
27
|
+
# Note that some of `paramname(value)` calls include new {Modules} into action, which provides
|
28
|
+
# new params & methods. For example:
|
29
|
+
#
|
30
|
+
# ```ruby
|
31
|
+
# api.query.generator(:categorymembers) # includes new methods of GCategorymembers module
|
32
|
+
# .title('Category:DOS_games') # one of GCategorymembers methods, adds gcmtitle=Category:DOS_games to URL
|
33
|
+
# .limit(20)
|
34
|
+
# ```
|
35
|
+
#
|
36
|
+
# Sometimes new modules inclusion can change a sense of already existing methods:
|
37
|
+
#
|
38
|
+
# ```ruby
|
39
|
+
# api.query.titles('Argentina')
|
40
|
+
# .prop(:revisions) # .prop method from Query action, adds prop=revisions to URL and includes Revisions module
|
41
|
+
# .prop(:content) # .prop method from Revisions module, adds rvprop=content to URL
|
42
|
+
# ```
|
43
|
+
#
|
44
|
+
# Despite of how questionable this practice looks, it provides the most obvious method chains even
|
45
|
+
# for most complicated cases.
|
46
|
+
#
|
47
|
+
# Some setup methods shared between all the actions (like output format and TTL settings of
|
48
|
+
# response) are defined in {GlobalParams}.
|
49
|
+
#
|
50
|
+
# Full action usage example:
|
51
|
+
#
|
52
|
+
# ```ruby
|
53
|
+
# api = MediaWiktory::Wikipedia::Api.new
|
54
|
+
# action = api.new.query.titles('Argentina').prop(:revisions).prop(:content).meta(:siteinfo)
|
55
|
+
# # => #<MediaWiktory::Wikipedia::Actions::Query {"titles"=>"Argentina", "prop"=>"revisions", "rvprop"=>"content", "meta"=>"siteinfo"}>
|
56
|
+
# response = action.response
|
57
|
+
# # => #<MediaWiktory::Wikipedia::Response(query): pages, general>
|
58
|
+
# puts response['pages'].values # all pages...
|
59
|
+
# .first['revisions'] # take revisions from first...
|
60
|
+
# .first['*'] # take content from first revision...
|
61
|
+
# .split("\n").first(3) # and first 3 paragrapahs
|
62
|
+
# # {{other uses}}
|
63
|
+
# # {{pp-semi|small=yes}}
|
64
|
+
# # {{Use dmy dates|date=March 2017}}
|
65
|
+
# response.dig('general', 'sitename')
|
66
|
+
# # => "Wikipedia"
|
67
|
+
# ```
|
68
|
+
#
|
69
|
+
class Base
|
70
|
+
# @private
|
71
|
+
attr_reader :client
|
72
|
+
|
73
|
+
# @private
|
74
|
+
def initialize(client, options = {})
|
75
|
+
@client = client
|
76
|
+
@params = stringify_hash(options)
|
77
|
+
@submodules = []
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [String]
|
81
|
+
def inspect
|
82
|
+
"#<#{self.class.name} #{to_h}>"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Make new action, with additional params passed as `hash`. No params validations are made.
|
86
|
+
#
|
87
|
+
# @param hash [Hash] Params to merge. All keys and values would be stringified.
|
88
|
+
# @return [Action] Produced action of the same type as current action was, with all passed
|
89
|
+
# params applied.
|
90
|
+
def merge(hash)
|
91
|
+
replace = hash.fetch(:replace, true)
|
92
|
+
hash.delete(:replace)
|
93
|
+
self.class
|
94
|
+
.new(@client, @params.merge(stringify_hash(hash)) { |_, o, n| replace ? n : [o, n].compact.uniq.join('|') })
|
95
|
+
.tap { |action| @submodules.each { |sm| action.submodule(sm) } }
|
96
|
+
end
|
97
|
+
|
98
|
+
# All action's params in a ready to passing to URL form (string keys & string values).
|
99
|
+
#
|
100
|
+
# @example
|
101
|
+
# api.query.titles('Argentina', 'Bolivia').format(:json).to_h
|
102
|
+
# # => {"titles"=>"Argentina|Bolivia", "format"=>"json"}
|
103
|
+
#
|
104
|
+
# @return [Hash{String => String}]
|
105
|
+
def to_h
|
106
|
+
@params.dup
|
107
|
+
end
|
108
|
+
|
109
|
+
# Action's name on MediaWiki API (e.g. "query" for `Query` action, "parsoid-batch" for
|
110
|
+
# `ParsoidBatch` action and so on).
|
111
|
+
#
|
112
|
+
# @return [String]
|
113
|
+
def name
|
114
|
+
# Query # => query
|
115
|
+
# ParsoidBatch # => parsoid-batch
|
116
|
+
self.class.name.split('::').last.gsub(/([a-z])([A-Z])/, '\1-\2').downcase or
|
117
|
+
fail ArgumentError, "Can't guess action name from #{self.class.name}"
|
118
|
+
end
|
119
|
+
|
120
|
+
# All action's params in a ready to passing to URL form (string keys & string values). Unlike
|
121
|
+
# {#to_h}, includes also action name.
|
122
|
+
#
|
123
|
+
# @example
|
124
|
+
# api.query.titles('Argentina', 'Bolivia').format(:json).to_param
|
125
|
+
# # => {"titles"=>"Argentina|Bolivia", "format"=>"json", "action"=>"query"}
|
126
|
+
#
|
127
|
+
# @return [Hash{String => String}]
|
128
|
+
def to_param
|
129
|
+
to_h.merge('action' => name)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Full URL for this action invocation.
|
133
|
+
#
|
134
|
+
# @example
|
135
|
+
# api.query.titles('Argentina', 'Bolivia').format(:json).to_url
|
136
|
+
# # => "https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Argentina%7CBolivia"
|
137
|
+
#
|
138
|
+
# @return [String]
|
139
|
+
def to_url
|
140
|
+
url = @client.url
|
141
|
+
url.query_values = to_param
|
142
|
+
url.to_s
|
143
|
+
end
|
144
|
+
|
145
|
+
# Performs action (through `GET` or `POST` request, depending on action's type) and returns
|
146
|
+
# raw body of response.
|
147
|
+
#
|
148
|
+
# @return [String]
|
149
|
+
def perform
|
150
|
+
fail NotImplementedError,
|
151
|
+
'Action is abstract, all actions should descend from Actions::Get or Actions::Post'
|
152
|
+
end
|
153
|
+
|
154
|
+
# Performs action (as in {#perform}) and returns an instance of {Response}. It is a thing
|
155
|
+
# wrapper around parsed action's JSON response, which separates "content" and "meta" (paging,
|
156
|
+
# warnings/erros) fields.
|
157
|
+
#
|
158
|
+
# Note, that not all actions return a JSON suitable for parsing into {Response}. For example,
|
159
|
+
# Wikipedia's [opensearch](https://en.wikipedia.org/w/api.php?action=help&modules=opensearch)
|
160
|
+
# action returns absolutely different JSON structure, corresponding to global
|
161
|
+
# [OpenSearch](https://en.wikipedia.org/wiki/OpenSearch) standard.
|
162
|
+
#
|
163
|
+
# Note also, that on erroneous request (when response contains `"error"` key), this method
|
164
|
+
# will raise {Response::Error}.
|
165
|
+
#
|
166
|
+
# @return [Response]
|
167
|
+
def response
|
168
|
+
jsonable = format(:json)
|
169
|
+
Response.parse(jsonable, jsonable.perform)
|
170
|
+
end
|
171
|
+
|
172
|
+
include GlobalParams
|
173
|
+
|
174
|
+
private
|
175
|
+
|
176
|
+
# Not in indepented module to decrease generated files/modules list
|
177
|
+
def stringify_hash(hash, recursive: false)
|
178
|
+
hash.map { |k, v|
|
179
|
+
[k.to_s, v.is_a?(Hash) && recursive ? stringify_hash(v, recursive: true) : v.to_s]
|
180
|
+
}.to_h
|
181
|
+
end
|
182
|
+
|
183
|
+
protected
|
184
|
+
|
185
|
+
def submodule(mod)
|
186
|
+
extend(mod)
|
187
|
+
@submodules << mod
|
188
|
+
self
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
class Get < Base
|
193
|
+
def perform
|
194
|
+
client.get(to_param)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
class Post < Base
|
199
|
+
def perform
|
200
|
+
client.post(to_param)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module <%= @namespace %>
|
4
|
+
module Actions
|
5
|
+
# <%= description %>
|
6
|
+
#
|
7
|
+
# Usage:
|
8
|
+
#
|
9
|
+
<% if params.empty? %> # ```ruby
|
10
|
+
# api.<%= name %>.perform # returns string with raw output
|
11
|
+
# # or
|
12
|
+
# api.<%= name %>.response # returns output parsed and wrapped into Mash-like object
|
13
|
+
# ```
|
14
|
+
#
|
15
|
+
# This action has no parameters.
|
16
|
+
<% else %> # ```ruby
|
17
|
+
# api.<%= name %>.<%= params.first.name %>(value).perform # returns string with raw output
|
18
|
+
# # or
|
19
|
+
# api.<%= name %>.<%= params.first.name %>(value).response # returns output parsed and wrapped into Response object
|
20
|
+
# ```
|
21
|
+
<% end %> #
|
22
|
+
# See {Base} for generic explanation of working with MediaWiki actions and
|
23
|
+
# {<%= @namespace %>::Response} for working with action responses.
|
24
|
+
#
|
25
|
+
# All action's parameters are documented as its public methods, see below.
|
26
|
+
#
|
27
|
+
class <%= class_name %> < <%=@namespace%>::Actions::<%= http_method %>
|
28
|
+
<% params.each { |param| %><%= partial '_param_method', param %><% } %> end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative './actions/base'
|
4
|
+
|
5
|
+
module <%= @namespace %>
|
6
|
+
# Methods of this module contains all actions that can be used on {Api}.
|
7
|
+
# You use them like this:
|
8
|
+
#
|
9
|
+
# ```ruby
|
10
|
+
# api = <%= @namespace %>::Api.new
|
11
|
+
#
|
12
|
+
# api.query # method of Api, returning Actions::Query
|
13
|
+
# .titles('Argentina', 'Bolivia') # methods of Actions::Query...
|
14
|
+
# .prop(:revisions).prop(:content) # ...to set action options
|
15
|
+
# .response
|
16
|
+
# # => performs action and returns Response instance
|
17
|
+
# ```
|
18
|
+
#
|
19
|
+
# See also:
|
20
|
+
# * {Api} for starting;
|
21
|
+
# * {Actions::Base} for details of working with actions;
|
22
|
+
# * and {Response}.
|
23
|
+
#
|
24
|
+
# Note that for each MediaWiki site the main method for **data extraction** (pages, categories,
|
25
|
+
# meta-information) is {#query}.
|
26
|
+
#
|
27
|
+
module Actions
|
28
|
+
<% actions.each { |action| %><%= partial '_action_method', action %><% } %> end
|
29
|
+
end
|
30
|
+
|
31
|
+
Dir[File.expand_path('../{actions,modules}/*.rb', __FILE__)].each { |f| require f }
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative './client'
|
4
|
+
require_relative './actions'
|
5
|
+
|
6
|
+
# Wrapper for [<%= site.name %>](<%= site.base %>) API.
|
7
|
+
#
|
8
|
+
# _Generated from <%= @source %> at <%= @friendly_date %> by MediaWiktory <%= @version %>._
|
9
|
+
#
|
10
|
+
# It also can be used for access to any other MediaWiki site, but some of actions could be
|
11
|
+
# non-existent/outdated.
|
12
|
+
#
|
13
|
+
# See {<%= @namespace %>::Api} for usage.
|
14
|
+
#
|
15
|
+
module <%= @namespace %>
|
16
|
+
# Base API class for [<%= site.name %>](<%= site.base %>).
|
17
|
+
#
|
18
|
+
# Example of usage:
|
19
|
+
#
|
20
|
+
# ```ruby
|
21
|
+
# # For <%= site.name %>
|
22
|
+
# api = <%= @namespace %>::Api.new
|
23
|
+
# api.some_action.some_param(value).other_param(*more_values).perform
|
24
|
+
# # => returns raw response of MediaWiki API
|
25
|
+
# api.some_action.some_param(value).other_param(*more_values).response
|
26
|
+
# # => returns an instance of Response, parsed from JSON
|
27
|
+
#
|
28
|
+
# # For any other site:
|
29
|
+
# api = <%= @namespace %>::Api.new('https://some.site/w/api.php')
|
30
|
+
# # ...the same as above
|
31
|
+
# ```
|
32
|
+
#
|
33
|
+
# {Actions} module lists all available API actions and refers to corresponding classes and
|
34
|
+
# their options.
|
35
|
+
#
|
36
|
+
# See also {Response} for working with return values and {Actions::Base} for working with actions.
|
37
|
+
#
|
38
|
+
class Api
|
39
|
+
# @private
|
40
|
+
attr_reader :client, :defaults
|
41
|
+
|
42
|
+
# @private
|
43
|
+
CLIENT_OPTIONS = %i[user_agent ua].freeze
|
44
|
+
|
45
|
+
# @param url [String] Source URL for this API, by default "<%= source %>".
|
46
|
+
# Note that most of MediaWiki installations have source URL at `/w/api.php`, but some are
|
47
|
+
# just `/api.php`, others use `/wiki/api.php` and so on.
|
48
|
+
#
|
49
|
+
# @param defaults [Hash] Default options for all API queries. Default param values also can be
|
50
|
+
# set by subsequent {Actions::Base} methods, like `api.some_action.json(callback: 'mycallbackname')...`
|
51
|
+
# @option defaults [Symbol] user_agent User-Agent header for underlying client.
|
52
|
+
<% main.params.each do |param| %> # @option defaults [<%= param.ruby_type %>] <%= param.name %> <%= param.description %><%=param.param_docs%> See {Actions::Base#<%=param.name%>}
|
53
|
+
<% end %> #
|
54
|
+
def initialize(url = '<%= @source %>', **defaults)
|
55
|
+
client_options, @defaults = defaults.partition { |k, _| CLIENT_OPTIONS.include?(k) }.map(&:to_h)
|
56
|
+
@client = Client.new(url, **client_options)
|
57
|
+
end
|
58
|
+
|
59
|
+
def inspect
|
60
|
+
"#<#{self.class.name}(#{@client.url})>"
|
61
|
+
end
|
62
|
+
|
63
|
+
include <%= @namespace %>::Actions
|
64
|
+
end
|
65
|
+
end
|