mediawiki-butt 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 01b96931127f32d0a59b62876f5de8c80657cbc3
4
- data.tar.gz: 3ef158346ca14fe0073eca30714e48c87b44684d
3
+ metadata.gz: 0e649c5d1963a0f3e300d04d7953735b9207c66c
4
+ data.tar.gz: 6284a9046b3f8575b6c28e84695e454beb70263a
5
5
  SHA512:
6
- metadata.gz: 47a2a279b141b771ebef8a84702d7f42422ee0baa789e0ef2fd6f74e5b616c2861f9d2509df4fb5565145a1876334095965988fdaebdf3b59c0749c82f3bf862
7
- data.tar.gz: 220e119d425714af14b50df518e02f6ff9bcacaccf799cb87c0d0ac52322fddf90fbd5a74bf580d44f97d5a7425307cb6bf6af3c600f47a10410e6f8ff25a5df
6
+ metadata.gz: a6b021df89173e0d44ed1217dc8ca0cbf4e5b08a55b9e45844c54013dcada4f7b7187588cb9a79c0f4329021879b3218e2dffab8b3c8fafae72c95b3c3f0dafa
7
+ data.tar.gz: c80b130f381f088cd43215d592a622f1c1617b868fe03d7e9f9af093045c716a4baeab574be519a6aab886a677022fb981a6a252ac0a8766c3fb073c87a5bae1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
  ## Version 0
3
+ ### Version 0.2.0
4
+ * New get_id method to get the pageid from the title.
5
+ * New get_random_pages method to get an array of random articles.
6
+ * New Namespace module full of constants.
7
+ * is_current_user_bot is now called as is_current_user_bot?.
8
+ * New get_edit_token method for obtaining an edit token based on the page title.
9
+ * New edit method and module for editing pages.
10
+ * Fix logout parsing error
11
+
3
12
  ### Version 0.1.1
4
13
  * Got rid of pointless array in is_current_user_bot
5
14
  * Potentially fixed docs
@@ -119,7 +119,7 @@ module MediaWiki
119
119
 
120
120
  #Consider refactor the @cookie initialization.
121
121
  @cookie = "#{result["login"]["cookieprefix"]}Session=#{result["login"]["sessionid"]}"
122
- result = post(token_params, true, true)
122
+ result = post(token_params, true, { 'Set-Cookie' => @cookie })
123
123
  return check_login(result["login"]["result"], true)
124
124
  end
125
125
  end
@@ -129,7 +129,8 @@ module MediaWiki
129
129
  def logout
130
130
  if @logged_in == true
131
131
  params = {
132
- action: 'logout'
132
+ action: 'logout',
133
+ format: 'json'
133
134
  }
134
135
 
135
136
  post(params)
@@ -1,5 +1,7 @@
1
1
  require_relative 'auth'
2
2
  require_relative 'query'
3
+ require_relative 'constants'
4
+ require_relative 'edit'
3
5
  require 'httpclient'
4
6
  require 'json'
5
7
 
@@ -9,6 +11,8 @@ module MediaWiki
9
11
  include MediaWiki::Query::Meta
10
12
  include MediaWiki::Query::Properties
11
13
  include MediaWiki::Query::Lists
14
+ include MediaWiki::Constants::Namespaces
15
+ include MediaWiki::Edit
12
16
 
13
17
  # Creates a new instance of MediaWiki::Butt. To work with any MediaWiki::Butt methods, you must first create an instance of it.
14
18
  #
@@ -33,14 +37,13 @@ module MediaWiki
33
37
  #
34
38
  # @param params [Hash] A basic hash containing MediaWiki API parameters. Please see the MediaWiki API for more information.
35
39
  # @param autoparse [Boolean] Whether or not to provide a parsed version of the response's JSON. Will default to true.
36
- # @param setcookie [Boolean] Whether you want to set the auth cookie. Only used in authentication. Defaults to false.
37
- # @return [JSON/Response] Parsed JSON if autoparse is true, or raw response if not.
38
- def post(params, autoparse = true, setcookie = false)
39
- if setcookie == true
40
- header = { 'Set-Cookie' => @cookie }
41
- response = @client.post(@uri, params, header)
42
- else
40
+ # @param header [Hash] The header hash. Optional.
41
+ # @return [JSON/HTTPMessage] Parsed JSON if autoparse is true, or raw response if not.
42
+ def post(params, autoparse = true, header = nil)
43
+ if header == nil
43
44
  response = @client.post(@uri, params)
45
+ else
46
+ response = @client.post(@uri, params, header)
44
47
  end
45
48
 
46
49
  if autoparse == true
@@ -52,24 +55,14 @@ module MediaWiki
52
55
 
53
56
  # Returns true if the currently logged in user is in the "bot" group. This can be helpful to some developers, but it is mostly for use internally in MediaWiki::Butt.
54
57
  # @return [Boolean] true if logged in as a bot, false if not logged in or logged in as a non-bot
55
- def is_current_user_bot()
58
+ def is_current_user_bot?
56
59
  if @logged_in == true
57
- params = {
58
- action: 'query',
59
- meta: 'userinfo',
60
- uiprop: 'groups',
61
- format: 'json'
62
- }
63
-
64
- response = post(params)
65
- response["query"]["userinfo"]["groups"].each do |g|
66
- if g == "bot"
67
- return true
68
- else
69
- next
70
- end
60
+ groups = get_usergroups
61
+ if groups.include? "bot"
62
+ return true
63
+ else
64
+ return false
71
65
  end
72
- return false
73
66
  else
74
67
  return false
75
68
  end
@@ -6,7 +6,7 @@ module MediaWiki
6
6
 
7
7
  # Returns an array of all the wiki's file repository names.
8
8
  # @return [Array] All wiki's file repository names.
9
- def get_filerepo_names()
9
+ def get_filerepo_names
10
10
  params = {
11
11
  action: 'query',
12
12
  meta: 'filerepoinfo',
@@ -15,11 +15,33 @@ module MediaWiki
15
15
  }
16
16
 
17
17
  result = post(params)
18
- array = Array.new
18
+ ret = Array.new
19
19
  result["query"]["repos"].each do |repo|
20
- array.push(repo["name"])
20
+ ret.push(repo["name"])
21
+ end
22
+ return ret
23
+ end
24
+
25
+ # Gets an array of all the currently logged in user's groups.
26
+ # @return [Array/Boolean] All of the user's groups, or false if not logged in.
27
+ def get_usergroups
28
+ if @logged_in == true
29
+ params = {
30
+ action: 'query',
31
+ meta: 'userinfo',
32
+ uiprop: 'groups',
33
+ format: 'json'
34
+ }
35
+
36
+ result = post(params)
37
+ ret = Array.new
38
+ result["query"]["userinfo"]["groups"].each do |g|
39
+ ret.push(g)
40
+ end
41
+ return ret
42
+ else
43
+ return false
21
44
  end
22
- return array
23
45
  end
24
46
  end
25
47
 
@@ -48,6 +70,53 @@ module MediaWiki
48
70
  return response["query"]["pages"][$revid]["revisions"][0]["*"]
49
71
  end
50
72
  end
73
+
74
+ # Gets the revision ID for the given page.
75
+ # @param title [String] The page title
76
+ # @return [Int/nil] the ID or nil
77
+ def get_id(title)
78
+ params = {
79
+ action: 'query',
80
+ prop: 'revisions',
81
+ rvprop: 'content',
82
+ format: 'json',
83
+ titles: title
84
+ }
85
+
86
+ response = post(params)
87
+ response["query"]["pages"].each do |revid, data|
88
+ if revid != "-1"
89
+ return revid.to_i
90
+ else
91
+ return nil
92
+ end
93
+ end
94
+ end
95
+
96
+ # Gets the edit token for the given page. This method should rarely be used by normal users.
97
+ # @param page_name [String] The page title that you are going to be editing.
98
+ # @return [String] The edit token. If the butt isn't logged in, it returns with '+\\'.
99
+ def get_edit_token(page_name)
100
+ if @logged_in == true
101
+ params = {
102
+ action: 'query',
103
+ prop: 'info',
104
+ intoken: 'edit',
105
+ format: 'json',
106
+ titles: page_name
107
+ }
108
+
109
+ response = post(params)
110
+ response["query"]["pages"].each do |revid, data|
111
+ $revid = revid
112
+ end
113
+
114
+ # URL encoding is not needed for some reason.
115
+ return response["query"]["pages"][$revid]["edittoken"]
116
+ else
117
+ return "+\\"
118
+ end
119
+ end
51
120
  end
52
121
 
53
122
  module Lists
@@ -64,7 +133,7 @@ module MediaWiki
64
133
  }
65
134
 
66
135
  if limit > 500
67
- if is_current_user_bot() == true
136
+ if is_current_user_bot? == true
68
137
  if limit > 5000
69
138
  params[:bllimit] = 5000
70
139
  else
@@ -85,7 +154,7 @@ module MediaWiki
85
154
  return ret
86
155
  end
87
156
 
88
- # Returns an array of all pagee titles that belong to a given category.
157
+ # Returns an array of all page titles that belong to a given category.
89
158
  # @param category [String] The category title. It can include "Category:", or not, it doesn't really matter because we will add it if it is missing.
90
159
  # @param limit [Int] The maximum number of members to get. Defaults to 500, and cannot be greater than that unless the user is a bot. If the user is a bot, the limit cannot be greater than 5000.
91
160
  # @return [Array] All category members until the limit
@@ -104,7 +173,7 @@ module MediaWiki
104
173
  end
105
174
 
106
175
  if limit > 500
107
- if is_current_user_bot() == true
176
+ if is_current_user_bot? == true
108
177
  if limit > 5000
109
178
  params[:cmlimit] = 5000
110
179
  else
@@ -124,6 +193,41 @@ module MediaWiki
124
193
  end
125
194
  return ret
126
195
  end
196
+
197
+ # Returns an array of random pages titles.
198
+ # @param number_of_pages [Int] The number of articles to get. Defaults to 1. Cannot be greater than 10 for normal users, or 20 for bots.
199
+ # @param namespace [Int] The namespace ID. Defaults to '0' (the main namespace). Set to nil for all namespaces.
200
+ # @return [Array] All members
201
+ def get_random_pages(number_of_pages = 1, namespace = 0)
202
+ params = {
203
+ action: 'query',
204
+ list: 'random',
205
+ format: 'json'
206
+ }
207
+
208
+ params[:rnnamespace] = namespace if namespace != nil
209
+
210
+ if namespace > 10
211
+ if is_current_user_bot? == true
212
+ if limit > 20
213
+ params[:rnlimit] = 20
214
+ else
215
+ params[:rnlimit] = limit
216
+ end
217
+ else
218
+ params[:rnlimit] = 10
219
+ end
220
+ else
221
+ params[:rnlimit] = namespace
222
+ end
223
+
224
+ ret = Array.new
225
+ responce = post(params)
226
+ responce["query"]["random"].each do |a|
227
+ ret.push(a["title"])
228
+ end
229
+ return ret
230
+ end
127
231
  end
128
232
  end
129
233
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediawiki-butt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eli Foster
8
+ - Eric Schneider (xbony2)
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-09-26 00:00:00.000000000 Z
12
+ date: 2015-09-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: httpclient
@@ -72,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  version: '0'
73
74
  requirements: []
74
75
  rubyforge_project:
75
- rubygems_version: 2.4.5
76
+ rubygems_version: 2.4.5.1
76
77
  signing_key:
77
78
  specification_version: 4
78
79
  summary: Interacting with the MediaWiki API