Changelog
Version 4
Version 4.0.1
-
Yank 4.0.0, fix gem build.
Version 4.0.0
Breaking changes! * Add support for searching text (NCC-Gnisha) (#69, #77). * Replace HTTPClient with Patron (#71). * Fix limiting on get_tags. * Implement token caching (#75). * Change log hash formatting methods from get_[type] to loghash_[type] to fix NoMethodErrors in log queries (#35). * Fixes overlapping methods, such as get_general from siteinfo and get_general from log. * Is more accurate as a descriptor, because no new data is being “gotten” from these methods, they only format data. * Affected methods: * get_block -> loghash_block * get_unblock -> loghash_unblock * get_importinterwiki -> loghash_importinterwiki * get_general -> loghash_general * get_merge -> loghash_merge * get_move -> loghash_move * get_user -> loghash_user * get_patrol -> loghash_patrol * get_protect -> loghash_protect * get_protectmoveprot -> loghash_protectmoveprot * get_unprotect -> loghash_unprotect * get_rightsautopromote -> loghash_rightsautopromote * get_rightsrights -> loghash_rightsrights * get_upload -> loghash_upload * Fix broken log hash keys causing NoMethodErrors (#35): * loghash_block: flags, duration, and expiry * loghash_move: new_title, and suppressredirect * loghash_patrol: current_revision, and previous_revision; remove automatic * loghash_protect: details (type, expiry, level) is not present in older protection logs; getting protection logs will no longer error on older entries without details * loghash_rightsautopromote: new_rights, old_rights * loghash_rightsrights: new_rights, old_rights * Fix missing log hash methods causing NoMethodErrors (#35): * get_reblock_log * get_unblock_log * get_overall_log * get_merge_log * Returned log hash in move logs no longer has title key, it is now called old_title. * Rights log hashes no longer have title key because they were not useful. * Update minitest * Implement patrol API support. Patrol edits with the patrol method, which if errors will raise a PatrolError (#76).
Version 3
Version 3.0.0
Breaking changes! * Update token system for MediaWiki 1.27+ (#45, #46, #65, #67). * login no longer takes a third token parameter. * create_account no longer takes a fifth token parameter. * create_account_email no longer takes a fifth token parameter. * MediaWiki::Query::Properties#get_token has been replaced by MediaWiki::Query::Meta#get_token. This only takes one parameter, as opposed to the old method’s two parameters, which is the type of token to receive. Valid types are verified in the MediaWiki::Query::Meta::TOKEN_TYPES array. * Remove unnecessary autoparse, header, and override_assertion parameters from post (#68). * The returned value is now always a parsed hash, never an HTTPMessage directly. * Initialization parameter defaults are more likely what is to be used now (#62, #66). * :query_limit_default is now defaulted to 'max'. * :use_continuation is now defaulted to true.
Version 2
Version 2.0.1
-
Fix NoMethodError in
get_templates_in_pagewhen called for pages with no templates (#61) -
Fix NoMethodError in
get_all_links_in_pagewhen called for pages with no links -
Fix NoMethodError in
get_other_langs_of_pagewhen called for pages with only 1 language (#33)
Version 2.0.0
Breaking changes! * Logical reversal of the redirect param for move (#58) * Switch around type and limit params in get_category_members (#57) * Remove post-install message * Strip leading and trailing whitespace from username in get_userlists, affecting the following methods (#55): * get_userrights * get_contrib_count * get_registration_time * get_user_gender * Change return values of #upload to be more useful (#54) * true/false return value denote success/failure * UploadInvalidFileExtError is raised when the file extension is not valid * EditError is raised for any errors that occurred during the upload * New siteinfo methods get_server, get_base_article_path, and get_article_path (#20). * Modify the edit, create_page, and move methods to take options hashes instead of a bunch of unnamed arguments. (#53, #52) * Documentation is now stored in master branch
Version 1
Version 1.3.0
Security update! * Add support for the Assert API (PR #51). * New :assertion option in initialize opts. It takes either :user or :bot. * New override_assertion parameter in post to prevent assertion errors being thrown. * Note: Assertions will only happen if post‘s autoparse parameter is true. * New NotLoggedInError and NotBotError for the according assertions. * Butt#user_bot? no longer has a parameter. It now queries with an assertion rather than checking the user’s groups. * New method Butt#logged_in? to check if the current instance is logged in.
Version 1.2.0
-
Add support for the Purge API (#48)
Version 1.1.1
-
Fix query methods throwing NoMethodErrors.
Version 1.1.0
-
Support for the continuation API (Issue #9 and PR #47)
Version 1.0.0
-
Important: MediaWiki::Butt now depends on Ruby 2.3. If you aren’t using that yet, use it. It’s worth it.
-
MediaWiki::Butt.new now takes two parameters,
url, and an options hash. See the documentation for initialize for more details. -
Improvements to the way we handle query limits (#28, #31, and #37):
-
get_recent_revisions,get_prefix_search, andget_full_watchlistnow properly set their limits. -
Most query lists that took a limit parameter now use the attribute
:query_limit_defaultinstead of each having a set default of 500. -
New
:query_limit_defaultattribute accessor. This means you can change your default limits whenever you want! -
Support using ‘max’ as the limit.
-
Major cleanup of documentation. The YARD server at ftb-gamepedia.github.io/MediaWiki-Butt-Ruby is now the recommended place for documentation.
-
Improve testing slightly.
-
Remove the TIME_FORMAT constant and instead use DateTime’s methods properly.
-
Fix FileRepoInfo methods returning hashes with nil values instead of arrays of hashes (#34).
-
Add support for the MediaWiki Watching/Unwatching APIs (#38)
-
Remove the unused
:tokensinstance variable. This should silence some errors when logging in/out. -
Improve authentication methods by making them recursive.
loginandcreate_account(_email)now take an optional third parameter, token. -
Fix error in
get_categories_in_page(APerson241) -
Error handling improvements (APerson241 and elifoster) (#32):
-
New EditError that is thrown when there is an error when editing. It contains the error code.
-
editreturns false when there is no change (error: nochange), rather than throwing an error. -
New BlockError that is thrown when there is an error when blocking/unblocking.
-
Removed AuthenticationError subclasses, as well as
check_loginandcheck_create. All authentication errors now return a generic AuthenticationError with the provided error message from MediaWiki.
Version 0
Version 0.11.1
-
Relicense under the MIT license.
-
Bump HTTPClient dependency.
-
Resolve get_registration_time TypeError (#26)
Version 0.11.0
-
Fix get_mostcategories_page typo (Mostca*c*tegories) (#24).
-
Significant rewrite of the README, arguably the most important part of this version.
-
New Utils module for replicating some of MediaWiki’s utilities. Right now this only includes the
#encode_urlmethod, a Ruby version of the JavaScript methodmw.util.rawurlencode(#21). -
Recent Changes responses are no longer printed on every request (#19).
Version 0.10.2
-
Update to Ruby 2.3 and HTTPClient 2.7
-
All values in Constants, including the keys and values in the NAMESPACES constant, are now frozen objects.
Version 0.10.1
-
Add the accidentally forgotten protect.rb file to the list of files for the gemspec.
Version 0.10.0
-
Remove all incorrectly splatted method arguments, so account creation reasons and edit summaries work now (#12).
-
Support a bunch of more Lists (#17). All of the old methods still exist in various submodules. The new methods are:
-
Log:
-
get_interwiki_backlinks
-
get_language_backlinks
-
get_image_backlinks
-
get_url_backlinks
-
get_block_log
-
get_reblock_log
-
get_unblock_log
-
get_delete_log
-
get_deletion_restore_log
-
get_interwiki_import_log
-
get_upload_import_log
-
get_overall_log
-
get_merge_log
-
get_move_log
-
get_move_redirect_log
-
get_autocreate_users_log
-
get_user_create2_log
-
get_user_create2_log
-
get_patrol_log
-
get_modify_protection_log
-
get_move_protected_log
-
get_protect_log
-
get_unprotect_log
-
get_autopromotion_log
-
get_rights_log
-
get_upload_overwrite_log
-
get_upload_log
-
The logs not explicitly supported (they are still supported in get_overall_log) are:
-
upload/revert
-
rights/erevoke
-
delete/event
-
delete/revision
-
-
Miscellaneous:
-
get_tags
-
-
QueryPage:
-
get_mostrevisions_page
-
get_mostlinked_page
-
get_mostlinkedtemplates_page
-
get_mostlinkedcategories_page
-
get_mostinterwikis_page
-
get_mostimages_page
-
get_mostlinkedcategories_page
-
get_listduplicatedfiles_page
-
get_listredirects_page
-
get_wantedtemplates_page
-
get_wantedpages_page
-
get_wantedfiles_page
-
get_wantedcategories_page
-
get_unwatchedpages_page
-
get_unusedtemplates_page
-
get_unusedcategories_page
-
get_uncategorizedtemplates_page
-
get_uncategorizedpages_page
-
get_uncategorizedcategories_page
-
get_shortpages_page
-
get_withoutinterwiki_page
-
get_fewestrevisions_page
-
get_lonelypages_page
-
get_ancientpages_page
-
get_longpages_page
-
get_doubleredirects_page
-
get_brokenredirects_page
-
get_querypage
-
-
RecentChanges:
-
get_recent_changes
-
get_recent_deleted_revisions
-
-
Search
-
get_prefix_search
-
-
New constant MediaWiki::Constants::TIME_FORMAT for the standard MediaWiki timestamp format.
-
Improve performance slightly by using Array#<< instead of Array#push.
Version 0.9.0
-
get_category_members has a new parameter, type, which can be used to get more data in a single result.
-
get_category_members no longer gets files and subcategories by default. Use the above to get more data at once.
-
New get_subcategories and get_files_in_category for specifically getting files or subcategories.
Version 0.8.2
-
Fix outdated usage of @namespaces variable, causing a NoMethodError on get_random_pages calls.
-
Greatly improved documentation.
Version 0.8.1
-
Fix get_limited’s NoMethodError on user_bot?
-
Fix user_bot? always returning false.
Version 0.8.0
-
A ton of property query methods (#7). View their docs for info:
-
get_all_links_in_page
-
get_other_langs_of_page
-
get_interwiki_links_in_page
-
get_templates_in_page
-
get_images_in_page
-
get_page_size
-
get_protection_levels
-
get_display_title
-
get_number_of_watchers
-
page_new?
-
page_redirect?
-
can_i_read?
-
do_i_watch?
-
get_external_links
-
get_duplicated_files_of
-
get_image_bytes
-
get_image_dimensions
-
get_image_sizes
-
A ton of list query methods (#8). View their docs for info:
-
get_all_pages_in_namespace
-
get_all_users
-
get_all_blocks
-
get_all_transcluders
-
get_all_deleted_files
-
get_all_protected_titles
-
get_user_contributions
-
get_full_watchlist
-
get_all_duplicated_files
-
Fix a NoMethodError on what_links_here caused by not actually setting the list in that query (#14).
-
User-Agents are optionally customizable in the MediaWiki::Butt initialization. If this is not used, the old defaults will still be used (‘NotLoggedIn/MediaWiki-Butt’ and ‘Username/MediaWiki-Butt’) (#13).
-
Fix @returns in docs.
-
Got rid of false things in docs.
-
Remove dependency on string-utility. That should be something the user does on their end.
-
get_contrib_count no longer has a second parameter, because of the above change.
-
Fix open-ended dependency for HTTPClient.
-
New get_logged_in_contributors method for getting all logged in user’s usernames that have contributed to a page.
-
New get_total_contributors method for getting the total number of contributors to a page.
-
Refactor Properties to be more like Meta.
-
New get_limited protected method that limits the ‘limit’ parameter for queries. It’s essentially just reducing duplicated code.
-
Remove all global variables. MediaWiki::Constants::Namespaces’ $namespaces is now MediaWiki::Constants with the hash being defined as NAMESPACES (#10).
Version 0.7.0
-
upload’s filename argument is no longer splat, because arrays.
-
Fix incorrect regex $ when ^ should be used in upload.
-
New get_all_categories method.
-
New get_all_images method.
-
Fix broken user_bot? calls.
-
user_bot? returns false when not logged in and username is not set.
-
Refactor Query module to have its own folder, and subfolder for meta. This shouldn’t change anything on the user’s end.
-
A couple methods no longer stupidly print stuff.
-
New get_categories_in_page method.
Version 0.6.0
-
Slightly expanded Gem description.
-
Finished all Meta modules and their methods, except for the allmessages meta query. #6
-
New get_variables method.
-
New get_function_hooks method.
-
New get_extension_tags method.
-
New get_skins method.
-
New get_restriction_levels method.
-
New get_restriction_types method.
-
New get_restrictions_data method for the above methods.
-
New get_allowed_file_extensions method, and refactored #upload to only allow files with those extensions.
-
New get_all_usergroups method.
-
New get_magic_words method.
-
New get_special_page_aliases method.
-
New get_namespace_aliases method.
-
New get_namespaces method.
-
New get_filerepo_favicons method.
-
New get_filerepo_thumburls method.
-
New get_nonlocal_filerepos method.
-
New get_local_filerepos method.
-
New get_filerepo_urls method.
-
New get_filerepo_rooturls method.
-
Refactor get_filerepo_names to use new get_filerepoinfo method.
-
New get_filerepoinfo method, in a similar style to get_userlists.
-
New get_current_user_options for getting a hash containing all of the currently logged in user’s preferences.
-
New get_email_address method for getting the currently logged in user’s email address.
-
New get_realname method for getting the currently logged in user’s real name.
-
New get_changeable_groups method for getting the currently logged in user’s groups that they can change (add/remove people from)
-
New current_user_hasmsg? method for checking if the user has any unread messages.
-
check_login no longer returns false, ever, because any code after a fail is unreachable.
-
prop parameter in get_current_user_meta is now optional, for get_current_user_name.
-
New get_current_user_name method, for getting the currently logged in user’s username.
-
New get_siteinfo method, in a similar style to get_userlists.
-
New get_statistics method, for getting a hash of the wiki’s statistics.
-
New get_general method, for getting hash of the ‘general’ wiki information.
-
New get_extensions method, for getting an array of all extension names installed.
-
New get_languages method, for getting a hash of all the languages, formatted as code => name.
-
User-Agent header is now set for each post. It defaults to
NotLoggedIn/MediaWiki::Butt, or#{name}/MediaWiki::Buttif logged in. This might cause some slight performance issues (#5)
Version 0.5.0
-
New Administration module for administrative methods.
-
New block and unblock methods, for (un)blocking users.
-
Refactor token stuff. It still doesn’t work exactly how I’d like yet, but it’s better than it was before. Ideally I’d like to have it get the login-specific tokens on login and set them to some well-named instance variables. Then clear those on logout.
-
Single-line each
do endloops have been converted into{...}style loops. -
New delete method for deleting pages.
-
New move method for moving pages.
Version 0.4.1
-
params is now automatically set to ‘json’, so it no longer needs to be defined in each method.
-
Fixed a lot of styling issues thanks to Rubocop.
-
check_login and check_create now use case/when statements instead of elsifs.
-
check_create no longer returns anything.
-
Update minimum Ruby version to 2.1, for refinements.
-
Fix $namespaces hash syntax.
-
Generally improved if statement syntax.
-
Generally shortened a lot of code by using better syntax.
Version 0.4.0
-
New get_userrights method for getting an array of all user rights that user has.
-
New get_user_gender method for getting the gender of the provided user.
-
New get_current_user_meta for getting userlists about the currently logged in user. Essentially the equivalent of get_userlists for logged in users.
-
Fix all userlist methods to work without supplying a username.
-
New get_registration_time method to get when the user registered.
-
Update to work with latest version of string-utility.
-
Namespaces are now in a hash instead of a bunch of variables.
-
Namespace parameters are now actually limited to the valid namespaces constant. It will default to the main namespace (0) if the integer provided is not in the namespaces hash.
-
get_random_pages no longer wrongly sets the rnlimit to the namespaces argument rather than the namespace argument.
Version 0.3.1
-
Fix edit and create_page NoMethodErrors.
-
Remove dependency for JSON as the version we use is included in the Ruby standard library.
Version 0.3.0
-
New upload method to upload by URL.
-
New create_page method.
-
New get_userlists method.
-
New get_usergroups method.
-
New get_contrib_count method.
-
Refactor get_usergroups and is_current_user_bot? to use new get_userinfo method.
-
Minor refactors to make optional arguments more Ruby-like with splat arguments.
-
#editno longer prints the edit token, because that’s stupid. -
#editno longer sets the summary if it is nil.
Version 0.2.1
-
Fix gemspec. You should actually have the new stuff now.
Version 0.2.0
-
New get_id method to get the pageid from the title.
-
New get_random_pages method to get an array of random articles.
-
New Namespace module full of constants.
-
is_current_user_bot is now called as is_current_user_bot?.
-
New get_edit_token method for obtaining an edit token based on the page title.
-
New edit method and module for editing pages.
-
Fix logout parsing error
Version 0.1.1
-
Got rid of pointless array in is_current_user_bot
-
Potentially fixed docs
-
Raise errors on unsuccessful account creation
-
#loginproperly returns true if the login is successful on the first try -
#logoutreturns true/false if it logs the user out. Basically returns true if @logged_in is true, and false if not, because the logout action has no errors. -
Account creation stuff actually returns true/false on success/fail. It also handles errors now.
-
Better Category title regex in get_category_members
Version 0.1.0
-
Initial version.