def post(params)
      base_params = {
        format: 'json'
      }
      base_params[:assert] = @assertion.to_s if @assertion
      params = base_params.merge(params)
      header = {}
      if defined? @custom_agent
        header['User-Agent'] = @custom_agent
      else
        header['User-Agent'] = @logged_in ? "#{@name}/MediaWiki::Butt" : 'NotLoggedIn/MediaWiki::Butt'
      end

      response = JSON.parse(@client.post(@uri, params, header).body)

      if @assertion
        code = response.dig('error', 'code')
        fail MediaWiki::Butt::NotLoggedInError.new(response['error']['info']) if code == 'assertuserfailed'
        fail MediaWiki::Butt::NotBotError.new(response['error']['info']) if code == 'assertbotfailed'
      end
      response
    end
def post(params)
      base_params = {
        format: 'json'
      }
      base_params[:assert] = @assertion.to_s if @assertion
      params = base_params.merge(params)
      header = {}
      if defined? @custom_agent
        header['User-Agent'] = @custom_agent
      else
        header['User-Agent'] = @logged_in ? "#{@name}/MediaWiki::Butt" : 'NotLoggedIn/MediaWiki::Butt'
      end

      response = JSON.parse(@client.post(@uri, params, header).body)

      if @assertion
        code = response.dig('error', 'code')
        fail MediaWiki::Butt::NotLoggedInError.new(response['error']['info']) if code == 'assertuserfailed'
        fail MediaWiki::Butt::NotBotError.new(response['error']['info']) if code == 'assertbotfailed'
      end
      response
    end
Creates a new instance of MediaWiki::Butt.
 @param url [String] The FULL wiki URL. api.php can be omitted, but it will make harsh assumptions about
   your wiki configuration.
 @param opts [Hash<Symbol, Any>] The options hash for configuring this instance of Butt.
 @option opts [String] :custom_agent A custom User-Agent to use. Optional.
 @option opts [Fixnum] :query_limit_default The query limit to use if no limit parameter is explicitly given to
   the various query methods. In other words, if you pass a limit parameter to the valid query methods, it will
   use that, otherwise, it will use this. Defaults to 'max' to use MW's default max for each API.
 @option opts [Boolean] :use_continuation Whether to use the continuation API on queries. Defaults to true.
 @option opts [Symbol] :assertion If set to :user or :bot, will use the assert parameter in all requests.
   Setting this will open up the possibility for NotLoggedInErrors and NotBotErrors. It is important to keep in
   mind that methods that check if the user is logged in do not use the API, but check if the user has *ever*
   logged in as this Butt instance. In other words, it is a safety check for performance and not a valid API check.
 Performs an HTTP POST request and provides the response. This method generally should not be used by the
 user, unless there is not a helper method provided by Butt for a particular action.
 @param params [Hash] A hash containing MediaWiki API parameters. Please see the MediaWiki API for more
   information. The method automatically sets the format and assert values, unless they are specified in this
   hash argument.
 @since 0.1.0
 @return [Hash] Parsed JSON returned by the MediaWiki API