Skip to content

Latest commit

 

History

History
393 lines (364 loc) · 19.1 KB

CHANGELOG.md

File metadata and controls

393 lines (364 loc) · 19.1 KB

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_page when called for pages with no templates (#61)
  • Fix NoMethodError in get_all_links_in_page when called for pages with no links
  • Fix NoMethodError in get_other_langs_of_page when 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, and get_full_watchlist now properly set their limits.
    • Most query lists that took a limit parameter now use the attribute :query_limit_default instead of each having a set default of 500.
    • New :query_limit_default attribute 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 :tokens instance variable. This should silence some errors when logging in/out.
  • Improve authentication methods by making them recursive. login and create_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.
    • edit returns 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_login and check_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 (Mostcactegories) (#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_url method, a Ruby version of the JavaScript method mw.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::Butt if 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 end loops have been converted into {...} style loops.
  • New delete method for deleting pages.
  • New move method for moving pages.

Version 0.4.1

  • params[:format] 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.
  • #edit no longer prints the edit token, because that's stupid.
  • #edit no 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
  • #login properly returns true if the login is successful on the first try
  • #logout returns 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.