mediawiki-gateway 0.1.6 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/media_wiki/gateway.rb +29 -5
- data/lib/media_wiki/utils.rb +1 -1
- data/mediawiki-gateway.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1
|
1
|
+
0.2.1
|
data/lib/media_wiki/gateway.rb
CHANGED
@@ -7,6 +7,7 @@ require 'uri'
|
|
7
7
|
module MediaWiki
|
8
8
|
|
9
9
|
class Gateway
|
10
|
+
API_MAX_LIMIT = 500
|
10
11
|
|
11
12
|
# Set up a MediaWiki::Gateway for a given MediaWiki installation
|
12
13
|
#
|
@@ -40,7 +41,7 @@ module MediaWiki
|
|
40
41
|
#
|
41
42
|
# [page_title] Page title to fetch
|
42
43
|
#
|
43
|
-
# Returns nil if the page does not exist
|
44
|
+
# Returns content of page as string, nil if the page does not exist
|
44
45
|
def get(page_title)
|
45
46
|
form_data = {'action' => 'query', 'prop' => 'revisions', 'rvprop' => 'content', 'titles' => page_title}
|
46
47
|
page = make_api_request(form_data).elements["query/pages/page"]
|
@@ -61,7 +62,7 @@ module MediaWiki
|
|
61
62
|
# * [noeditsections] strips all edit-links if set to +true+
|
62
63
|
# * [noimages] strips all +img+ tags from the rendered text if set to +true+
|
63
64
|
#
|
64
|
-
# Returns nil if the page does not exist
|
65
|
+
# Returns rendered page as string, or nil if the page does not exist
|
65
66
|
def render(page_title, options = {})
|
66
67
|
form_data = {'action' => 'parse', 'page' => page_title}
|
67
68
|
|
@@ -116,7 +117,7 @@ module MediaWiki
|
|
116
117
|
#
|
117
118
|
# [title] Title of page to undelete
|
118
119
|
#
|
119
|
-
# Returns number of revisions undeleted
|
120
|
+
# Returns number of revisions undeleted, or zero if nothing to undelete
|
120
121
|
def undelete(title)
|
121
122
|
token = get_undelete_token(title)
|
122
123
|
if token
|
@@ -144,7 +145,7 @@ module MediaWiki
|
|
144
145
|
'list' => 'allpages',
|
145
146
|
'apfrom' => apfrom,
|
146
147
|
'apprefix' => key,
|
147
|
-
'aplimit' =>
|
148
|
+
'aplimit' => API_MAX_LIMIT,
|
148
149
|
'apnamespace' => namespace}
|
149
150
|
res = make_api_request(form_data)
|
150
151
|
apfrom = res.elements['query-continue'] ? res.elements['query-continue/allpages'].attributes['apfrom'] : nil
|
@@ -153,6 +154,30 @@ module MediaWiki
|
|
153
154
|
titles
|
154
155
|
end
|
155
156
|
|
157
|
+
# Get a list of pages that link to a target page
|
158
|
+
#
|
159
|
+
# [title] Link target page
|
160
|
+
# [filter] "all" links (default), "redirects" only, or "nonredirects" (plain links only)
|
161
|
+
#
|
162
|
+
# Returns array of page titles (empty if no matches)
|
163
|
+
def backlinks(title, filter = "all")
|
164
|
+
titles = []
|
165
|
+
blcontinue = nil
|
166
|
+
begin
|
167
|
+
form_data =
|
168
|
+
{'action' => 'query',
|
169
|
+
'list' => 'backlinks',
|
170
|
+
'bltitle' => title,
|
171
|
+
'blfilterredir' => filter,
|
172
|
+
'bllimit' => API_MAX_LIMIT }
|
173
|
+
form_data['blcontinue'] = blcontinue if blcontinue
|
174
|
+
res = make_api_request(form_data)
|
175
|
+
blcontinue = res.elements['query-continue'] ? res.elements['query-continue/backlinks'].attributes['blcontinue'] : nil
|
176
|
+
titles += REXML::XPath.match(res, "//bl").map { |x| x.attributes["title"] }
|
177
|
+
end while blcontinue
|
178
|
+
titles
|
179
|
+
end
|
180
|
+
|
156
181
|
# Get a list of pages with matching content in given namespaces
|
157
182
|
#
|
158
183
|
# [key] Search key
|
@@ -441,6 +466,5 @@ module MediaWiki
|
|
441
466
|
end
|
442
467
|
doc
|
443
468
|
end
|
444
|
-
|
445
469
|
end
|
446
470
|
end
|
data/lib/media_wiki/utils.rb
CHANGED
data/mediawiki-gateway.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mediawiki-gateway}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jani Patokallio"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-29}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{jpatokal@iki.fi}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki-gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 2
|
8
9
|
- 1
|
9
|
-
|
10
|
-
version: 0.1.6
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jani Patokallio
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-29 00:00:00 +11:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|