mediawiki-butt 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ require_relative 'contributors'
2
+ require_relative 'pages'
3
+ require_relative 'files'
4
+
5
+ module MediaWiki
6
+ module Query
7
+ module Properties
8
+ include MediaWiki::Query::Properties::Contributors
9
+ include MediaWiki::Query::Properties::Pages
10
+ include MediaWiki::Query::Properties::Files
11
+
12
+ # Gets the token for the given type. This method should rarely be
13
+ # used by normal users.
14
+ # @param type [String] The type of token.
15
+ # @param title [String] The page title for the token. Optional.
16
+ # @return [String] The token. If the butt isn't logged in, it returns
17
+ # with '+\\'.
18
+ def get_token(type, title = nil)
19
+ if @logged_in == true
20
+ # There is some weird thing with MediaWiki where you must pass a valid
21
+ # inprop parameter in order to get any response at all. This is why
22
+ # there is a displaytitle inprop as well as gibberish in the titles
23
+ # parameter. And to avoid normalization, it's capitalized.
24
+ params = {
25
+ action: 'query',
26
+ prop: 'info',
27
+ inprop: 'displaytitle',
28
+ intoken: type
29
+ }
30
+
31
+ title = 'Somegibberish' if title.nil?
32
+ params[:titles] = title
33
+ response = post(params)
34
+ revid = nil
35
+ response['query']['pages'].each { |r, _| revid = r }
36
+
37
+ # URL encoding is not needed for some reason.
38
+ return response['query']['pages'][revid]["#{type}token"]
39
+ else
40
+ return '+\\'
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,11 +1,37 @@
1
1
  require_relative 'meta/meta'
2
2
  require_relative 'lists'
3
- require_relative 'properties'
3
+ require_relative 'properties/properties'
4
4
 
5
5
  module MediaWiki
6
6
  module Query
7
7
  include MediaWiki::Query::Meta
8
8
  include MediaWiki::Query::Lists
9
9
  include MediaWiki::Query::Properties
10
+
11
+ protected
12
+
13
+ module_function
14
+
15
+ # Gets the limited version of the integer, to ensure nobody provides an int
16
+ # that is too large.
17
+ # @param integer [Int] The number to limit.
18
+ # @param max_user [Int] The maximum limit for normal users.
19
+ # @param max_bot [Int] The maximum limit for bot users.
20
+ # @return [Int] The capped number.
21
+ def get_limited(integer, max_user = 500, max_bot = 5000)
22
+ if integer > 500
23
+ if user_bot? == true
24
+ if integer > 5000
25
+ return 5000
26
+ else
27
+ return integer
28
+ end
29
+ else
30
+ return 500
31
+ end
32
+ else
33
+ return integer
34
+ end
35
+ end
10
36
  end
11
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediawiki-butt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eli Foster
@@ -9,36 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-14 00:00:00.000000000 Z
12
+ date: 2015-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: string-utility
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: 2.0.0
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: 2.0.0
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: httpclient
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
18
  - - ">="
33
19
  - !ruby/object:Gem::Version
34
- version: '0'
20
+ version: 2.6.0.1
35
21
  type: :runtime
36
22
  prerelease: false
37
23
  version_requirements: !ruby/object:Gem::Requirement
38
24
  requirements:
39
25
  - - ">="
40
26
  - !ruby/object:Gem::Version
41
- version: '0'
27
+ version: 2.6.0.1
42
28
  description: " MediaWiki::Butt is a Ruby Gem that provides a fully-featured MediaWiki
43
29
  API interface. It includes methods for changing wiki content, authentication,
44
30
  \ and queries.\n\n"
@@ -47,7 +33,6 @@ executables: []
47
33
  extensions: []
48
34
  extra_rdoc_files: []
49
35
  files:
50
- - CHANGELOG.md
51
36
  - lib/mediawiki-butt.rb
52
37
  - lib/mediawiki/administration.rb
53
38
  - lib/mediawiki/auth.rb
@@ -60,7 +45,10 @@ files:
60
45
  - lib/mediawiki/query/meta/meta.rb
61
46
  - lib/mediawiki/query/meta/siteinfo.rb
62
47
  - lib/mediawiki/query/meta/userinfo.rb
63
- - lib/mediawiki/query/properties.rb
48
+ - lib/mediawiki/query/properties/contributors.rb
49
+ - lib/mediawiki/query/properties/files.rb
50
+ - lib/mediawiki/query/properties/pages.rb
51
+ - lib/mediawiki/query/properties/properties.rb
64
52
  - lib/mediawiki/query/query.rb
65
53
  homepage: https://github.com/ftb-gamepedia/mediawiki-butt-ruby
66
54
  licenses:
@@ -88,3 +76,4 @@ signing_key:
88
76
  specification_version: 4
89
77
  summary: Interacting with the MediaWiki API
90
78
  test_files: []
79
+ has_rdoc:
@@ -1,119 +0,0 @@
1
- # Changelog
2
- ## Version 0
3
- ### Version 0.7.0
4
- * upload's filename argument is no longer splat, because arrays.
5
- * Fix incorrect regex $ when ^ should be used in upload.
6
- * New get_all_categories method.
7
- * New get_all_images method.
8
- * Fix some user_bot? calls.
9
- * user_bot? returns false when not logged in and username is not set.
10
- * Refactor Query module to have its own folder, and subfolder for meta. This shouldn't change anything on the user's end.
11
- * A couple methods no longer stupidly print stuff.
12
- * New get_categories_in_page method.
13
-
14
- ### Version 0.6.0
15
- * Slightly expanded Gem description.
16
- * Finished all Meta modules and their methods, except for the allmessages meta query. [#6](https://github.com/ftb-gamepedia/mediawiki-butt-ruby/issues/6)
17
- * New get_variables method.
18
- * New get_function_hooks method.
19
- * New get_extension_tags method.
20
- * New get_skins method.
21
- * New get_restriction_levels method.
22
- * New get_restriction_types method.
23
- * New get_restrictions_data method for the above methods.
24
- * New get_allowed_file_extensions method, and refactored #upload to only allow files with those extensions.
25
- * New get_all_usergroups method.
26
- * New get_magic_words method.
27
- * New get_special_page_aliases method.
28
- * New get_namespace_aliases method.
29
- * New get_namespaces method.
30
- * New get_filerepo_favicons method.
31
- * New get_filerepo_thumburls method.
32
- * New get_nonlocal_filerepos method.
33
- * New get_local_filerepos method.
34
- * New get_filerepo_urls method.
35
- * New get_filerepo_rooturls method.
36
- * Refactor get_filerepo_names to use new get_filerepoinfo method.
37
- * New get_filerepoinfo method, in a similar style to get_userlists.
38
- * New get_current_user_options for getting a hash containing all of the currently logged in user's preferences.
39
- * New get_email_address method for getting the currently logged in user's email address.
40
- * New get_realname method for getting the currently logged in user's real name.
41
- * New get_changeable_groups method for getting the currently logged in user's groups that they can change (add/remove people from)
42
- * New current_user_hasmsg? method for checking if the user has any unread messages.
43
- * check_login no longer returns false, ever, because any code after a fail is unreachable.
44
- * prop parameter in get_current_user_meta is now optional, for get_current_user_name.
45
- * New get_current_user_name method, for something fairly obvious.
46
- * New get_siteinfo method, in a similar style to get_userlists.
47
- * New get_statistics method, for getting a hash of the wiki's statistics.
48
- * New get_general method, for getting hash of the 'general' wiki information.
49
- * New get_extensions method, for getting an array of all extension names installed.
50
- * New get_languages method, for getting a hash of all the languages, formatted as code => name.
51
- * 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](https://github.com/FTB-Gamepedia/MediaWiki-Butt-Ruby/issues/5))
52
-
53
- ### Version 0.5.0
54
- * New Administration module for administrative methods.
55
- * New block and unblock methods, for (un)blocking users.
56
- * 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.
57
- * Single-line each `do end` loops have been converted into `{...}` style loops.
58
- * New delete method for deleting pages.
59
- * New move method for moving pages.
60
-
61
- ### Version 0.4.1
62
- * params[:format] is now automatically set to 'json', so it no longer needs to be defined in each method.
63
- * Fixed a lot of styling issues thanks to Rubocop.
64
- * check_login and check_create now use case/when statements instead of elsifs.
65
- * check_create no longer returns anything.
66
- * Update minimum Ruby version to 2.1, for refinements.
67
- * Fix $namespaces hash syntax.
68
- * Generally improved if statement syntax.
69
- * Generally shortened a lot of code by using better syntax.
70
-
71
- ### Version 0.4.0
72
- * New get_userrights method for getting an array of all user rights that user has.
73
- * New get_user_gender method for getting the gender of the provided user.
74
- * New get_current_user_meta for getting userlists about the currently logged in user. Essentially the equivalent of get_userlists for logged in users.
75
- * Fix all userlist methods to work without supplying a username.
76
- * New get_registration_time method to get when the user registered.
77
- * Update to work with latest version of string-utility.
78
- * Namespaces are now in a hash instead of just a bunch of variables.
79
- * 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.
80
- * get_random_pages no longer wrongly sets the rnlimit to the namespaces argument rather than the namespace argument.
81
-
82
- ### Version 0.3.1
83
- * Fix edit and create_page NoMethodErrors.
84
- * Remove dependency for JSON as the version we use is included in the Ruby standard library.
85
-
86
- ### Version 0.3.0
87
- * New upload method to upload by URL.
88
- * New create_page method.
89
- * New get_userlists method.
90
- * New get_usergroups method.
91
- * New get_contrib_count method.
92
- * Refactor get_usergroups and is_current_user_bot? to use new get_userinfo method.
93
- * Minor refactors to make optional arguments more Ruby-like with splat arguments.
94
- * #edit no longer prints the edit token, because that's stupid.
95
- * #edit no longer sets the summary if it is nil.
96
-
97
- ### Version 0.2.1
98
- * Fix gemspec. You should actually have the new stuff now.
99
-
100
- ### Version 0.2.0
101
- * New get_id method to get the pageid from the title.
102
- * New get_random_pages method to get an array of random articles.
103
- * New Namespace module full of constants.
104
- * is_current_user_bot is now called as is_current_user_bot?.
105
- * New get_edit_token method for obtaining an edit token based on the page title.
106
- * New edit method and module for editing pages.
107
- * Fix logout parsing error
108
-
109
- ### Version 0.1.1
110
- * Got rid of pointless array in is_current_user_bot
111
- * Potentially fixed docs
112
- * Raise errors on unsuccessful account creation
113
- * #login properly returns true if the login is successful on the first try
114
- * #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.
115
- * Account creation stuff actually returns true/false on success/fail. It also handles errors now.
116
- * Better Category title regex in get_category_members
117
-
118
- ### Version 0.1.0
119
- * Initial version.
@@ -1,107 +0,0 @@
1
- module MediaWiki
2
- module Query
3
- module Properties
4
- # Gets the wiki text for the given page. Returns nil if it for some
5
- # reason cannot get the text, for example, if the page does not exist.
6
- # @param title [String] The page title
7
- # @return [String/nil] String containing page contents, or nil
8
- def get_text(title)
9
- params = {
10
- action: 'query',
11
- prop: 'revisions',
12
- rvprop: 'content',
13
- titles: title
14
- }
15
-
16
- response = post(params)
17
- revid = nil
18
- response['query']['pages'].each { |r, _| revid = r }
19
-
20
- if response['query']['pages'][revid]['missing'] == ''
21
- return nil
22
- else
23
- return response['query']['pages'][revid]['revisions'][0]['*']
24
- end
25
- end
26
-
27
- # Gets the revision ID for the given page.
28
- # @param title [String] The page title
29
- # @return [Int/nil] the ID or nil
30
- def get_id(title)
31
- params = {
32
- action: 'query',
33
- prop: 'revisions',
34
- rvprop: 'content',
35
- titles: title
36
- }
37
-
38
- response = post(params)
39
- response['query']['pages'].each do |revid, _|
40
- if revid != '-1'
41
- return revid.to_i
42
- else
43
- return nil
44
- end
45
- end
46
- end
47
-
48
- # Gets the token for the given type. This method should rarely be
49
- # used by normal users.
50
- # @param type [String] The type of token.
51
- # @param title [String] The page title for the token. Optional.
52
- # @return [String] The token. If the butt isn't logged in, it returns
53
- # with '+\\'.
54
- def get_token(type, title = nil)
55
- if @logged_in == true
56
- # There is some weird thing with MediaWiki where you must pass a valid
57
- # inprop parameter in order to get any response at all. This is why
58
- # there is a displaytitle inprop as well as gibberish in the titles
59
- # parameter. And to avoid normalization, it's capitalized.
60
- params = {
61
- action: 'query',
62
- prop: 'info',
63
- inprop: 'displaytitle',
64
- intoken: type
65
- }
66
-
67
- title = 'Somegibberish' if title.nil?
68
- params[:titles] = title
69
- response = post(params)
70
- revid = nil
71
- response['query']['pages'].each { |r, _| revid = r }
72
-
73
- # URL encoding is not needed for some reason.
74
- return response['query']['pages'][revid]["#{type}token"]
75
- else
76
- return '+\\'
77
- end
78
- end
79
-
80
- # Gets all categories in the page.
81
- # @param title [String] The page title.
82
- # @return [Array/Nil] An array of all the categories, or nil if the title
83
- # is not an actual page.
84
- def get_categories_in_page(title)
85
- params = {
86
- action: 'query',
87
- prop: 'categories',
88
- titles: title
89
- }
90
-
91
- response = post(params)
92
- pageid = nil
93
- ret = []
94
- response['query']['pages'].each { |r, _| pageid = r }
95
- if response['query']['pages'][pageid]['missing'] == ''
96
- return nil
97
- else
98
- response['query']['pages'][pageid]['categories'].each do |c|
99
- ret.push(c['title'])
100
- end
101
- end
102
-
103
- ret
104
- end
105
- end
106
- end
107
- end