mediawiki-butt 0.11.1 → 1.0.0

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -5
  3. data/lib/mediawiki/administration.rb +18 -17
  4. data/lib/mediawiki/auth.rb +52 -193
  5. data/lib/mediawiki/butt.rb +51 -32
  6. data/lib/mediawiki/constants.rb +127 -130
  7. data/lib/mediawiki/edit.rb +58 -71
  8. data/lib/mediawiki/exceptions.rb +2 -123
  9. data/lib/mediawiki/query/lists/all.rb +35 -45
  10. data/lib/mediawiki/query/lists/backlinks.rb +23 -34
  11. data/lib/mediawiki/query/lists/categories.rb +17 -28
  12. data/lib/mediawiki/query/lists/log/block.rb +17 -33
  13. data/lib/mediawiki/query/lists/log/delete.rb +8 -24
  14. data/lib/mediawiki/query/lists/log/import.rb +9 -24
  15. data/lib/mediawiki/query/lists/log/log.rb +36 -63
  16. data/lib/mediawiki/query/lists/log/merge.rb +5 -12
  17. data/lib/mediawiki/query/lists/log/move.rb +6 -20
  18. data/lib/mediawiki/query/lists/log/newusers.rb +13 -36
  19. data/lib/mediawiki/query/lists/log/patrol.rb +5 -13
  20. data/lib/mediawiki/query/lists/log/protect.rb +20 -50
  21. data/lib/mediawiki/query/lists/log/rights.rb +10 -24
  22. data/lib/mediawiki/query/lists/log/upload.rb +10 -24
  23. data/lib/mediawiki/query/lists/miscellaneous.rb +10 -19
  24. data/lib/mediawiki/query/lists/querypage.rb +60 -62
  25. data/lib/mediawiki/query/lists/recent_changes.rb +18 -30
  26. data/lib/mediawiki/query/lists/search.rb +14 -29
  27. data/lib/mediawiki/query/lists/users.rb +43 -61
  28. data/lib/mediawiki/query/meta/filerepoinfo.rb +18 -20
  29. data/lib/mediawiki/query/meta/siteinfo.rb +30 -33
  30. data/lib/mediawiki/query/meta/userinfo.rb +48 -66
  31. data/lib/mediawiki/query/properties/contributors.rb +18 -22
  32. data/lib/mediawiki/query/properties/files.rb +18 -20
  33. data/lib/mediawiki/query/properties/pages.rb +129 -211
  34. data/lib/mediawiki/query/properties/properties.rb +20 -25
  35. data/lib/mediawiki/query/query.rb +0 -25
  36. data/lib/mediawiki/utils.rb +9 -8
  37. data/lib/mediawiki/watch.rb +52 -0
  38. metadata +6 -4
@@ -8,21 +8,16 @@ module MediaWiki
8
8
 
9
9
  # Gets the RecentChanges log.
10
10
  # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
11
- # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
12
11
  # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
13
12
  # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
14
- # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
15
- # @see https://www.mediawiki.org/wiki/API:RecentChanges MediaWiki
16
- # RecentChanges API Docs
13
+ # @param limit [Fixnum] See {MediaWiki::Query::Lists::Log#get_log}
14
+ # @see https://www.mediawiki.org/wiki/API:RecentChanges MediaWiki RecentChanges API Docs
17
15
  # @since 0.10.0
18
- # @return [Array<Hash>] All of the changes, with the following keys:
19
- # type, title, revid, old_revid, rcid, user, old_length, new_length,
20
- # diff_length, timestamp, comment, parsed_comment, sha, new, minor,
21
- # bot.
22
- def get_recent_changes(user = nil, start = nil, stop = nil, limit = 500)
23
- time_format = MediaWiki::Constants::TIME_FORMAT
24
- prop = 'user|comment|parsedcomment|timestamp|title|ids|sha1|sizes' \
25
- '|redirect|flags|loginfo'
16
+ # @return [Array<Hash<Symbol, Any>>] All of the changes, with the following keys: type, title, revid,
17
+ # old_revid, rcid, user, old_length, new_length, diff_length, timestamp, comment, parsed_comment, sha, new,
18
+ # minor, bot.
19
+ def get_recent_changes(user = nil, start = nil, stop = nil, limit = @query_limit_default)
20
+ prop = 'user|comment|parsedcomment|timestamp|title|ids|sha1|sizes|redirect|flags|loginfo'
26
21
  rights = get_userrights
27
22
  patrol = false
28
23
  if rights != false && rights.include?('patrol')
@@ -36,8 +31,8 @@ module MediaWiki
36
31
  rclimit: get_limited(limit)
37
32
  }
38
33
  params[:rcuser] = user unless user.nil?
39
- params[:rcstart] = start.strftime(time_format) unless start.nil?
40
- params[:rcend] = stop.strftime(time_format) unless stop.nil?
34
+ params[:rcstart] = start.xmlschema unless start.nil?
35
+ params[:rcend] = stop.xmlschema unless stop.nil?
41
36
 
42
37
  response = post(params)
43
38
  ret = []
@@ -56,7 +51,7 @@ module MediaWiki
56
51
  old_length: old_length,
57
52
  new_length: new_length,
58
53
  diff_length: diff_length,
59
- timestamp: DateTime.strptime(change['timestamp'], time_format),
54
+ timestamp: DateTime.xmlschema(change['timestamp']),
60
55
  comment: change['comment'],
61
56
  parsed_comment: change['parsedcomment'],
62
57
  sha: change['sha1']
@@ -80,34 +75,27 @@ module MediaWiki
80
75
  end
81
76
 
82
77
  # Gets the recent deleted revisions.
83
- # @param user [String] See {#get_recent_changes}
84
- # @param start [DateTime] See {#get_recent_changes}
85
- # @param stop [DateTime] See {#get_recent_changes}
86
- # @param limit [Int] See {#get_recent_changes}
87
- # @see https://www.mediawiki.org/wiki/API:Deletedrevs MediaWiki
88
- # Deletedrevs API Docs
78
+ # @param (see #get_recent_changes)
79
+ # @see https://www.mediawiki.org/wiki/API:Deletedrevs MediaWiki Deletedrevs API Docs
89
80
  # @since 0.10.0
90
- # @return [Array<Hash>] All of the changes, with the following keys:
91
- # timestamp, user, comment, title.
92
- def get_recent_deleted_revisions(user = nil, start = nil, stop = nil,
93
- limit = 500)
94
- time_format = MediaWiki::Constants::TIME_FORMAT
81
+ # @return [Array<Hash>] All of the changes, with the following keys: timestamp, user, comment, title.
82
+ def get_recent_deleted_revisions(user = nil, start = nil, stop = nil, limit = @query_limit_default)
95
83
  prop = 'revid|parentid|user|comment|parsedcomment|minor|len|sh1|tags'
96
84
  params = {
97
85
  action: 'query',
98
86
  list: 'deletedrevs',
99
87
  drprop: prop,
100
- limit: get_limited(limit)
88
+ drlimit: get_limited(limit)
101
89
  }
102
- params[:drstart] = start.strftime(time_format) unless start.nil?
103
- params[:drend] = stop.strftime(time_format) unless stop.nil?
90
+ params[:drstart] = start.xmlschema unless start.nil?
91
+ params[:drend] = stop.xmlschema unless stop.nil?
104
92
 
105
93
  response = post(params)
106
94
  ret = []
107
95
  response['query']['deletedrevs'].each do |rev|
108
96
  r = rev['revisions'][0]
109
97
  hash = {
110
- timestamp: DateTime.strptime(r['timestamp'], time_format),
98
+ timestamp: DateTime.xmlschema(r['timestamp']),
111
99
  user: r['user'],
112
100
  comment: r['comment'],
113
101
  title: rev['title']
@@ -4,50 +4,36 @@ module MediaWiki
4
4
  module Search
5
5
  # Gets the amount of results for the search value.
6
6
  # @param search_value [String] The thing to search for.
7
- # @param namespace [Int] The namespace to search in.
8
- # Defaults to 0 (the main namespace).
9
- # @see https://www.mediawiki.org/wiki/API:Search MediaWiki Search API
10
- # Docs
7
+ # @param namespace [Fixnum] The namespace to search in. Defaults to 0 (the main namespace).
8
+ # @see https://www.mediawiki.org/wiki/API:Search MediaWiki Search API Docs
11
9
  # @since 0.4.0
12
- # @return [Int] The number of pages that matched the search.
10
+ # @return [Fixnum] The number of pages that matched the search.
13
11
  def get_search_result_amount(search_value, namespace = 0)
14
12
  params = {
15
13
  action: 'query',
16
14
  list: 'search',
17
- srsearch: search_value
15
+ srsearch: search_value,
16
+ srnamespace: validate_namespace(namespace)
18
17
  }
19
18
 
20
- if MediaWiki::Constants::NAMEPSACES.value?(namespace)
21
- params[:srnamespace] = namespace
22
- else
23
- params[:srnamespace] = 0
24
- end
25
-
26
19
  response = post(params)
27
20
  response['query']['searchinfo']['totalhits']
28
21
  end
29
22
 
30
23
  # Gets an array containing page titles that matched the search.
31
24
  # @param search_value [String] The thing to search for.
32
- # @param namespace [Int] The namespace to search in.
33
- # Defaults to 0 (the main namespace).
34
- # @see https://www.mediawiki.org/wiki/API:Search MediaWiki Search API
35
- # Docs
25
+ # @param namespace [Fixnum] The namespace to search in. Defaults to 0 (the main namespace).
26
+ # @see https://www.mediawiki.org/wiki/API:Search MediaWiki Search API Docs
36
27
  # @since 0.4.0
37
- # @return [Array] The page titles that matched the search.
28
+ # @return [Array<String>] The page titles that matched the search.
38
29
  def get_search_results(search_value, namespace = 0)
39
30
  params = {
40
31
  action: 'query',
41
32
  list: 'search',
42
- srsearch: search_value
33
+ srsearch: search_value,
34
+ srnamespace: validate_namespace(namespace)
43
35
  }
44
36
 
45
- if MediaWiki::Constants::NAMESPACES.value?(namespace)
46
- params[:srnamespace] = namespace
47
- else
48
- params[:srnamespace] = 0
49
- end
50
-
51
37
  response = post(params)
52
38
 
53
39
  ret = []
@@ -58,10 +44,9 @@ module MediaWiki
58
44
 
59
45
  # Searches the wiki by a prefix.
60
46
  # @param prefix [String] The prefix.
61
- # @param limit [Int] The maximum number of results to get, maximum of
62
- # 100 for users and 200 for bots.
63
- # @see https://www.mediawiki.org/wiki/API:Prefixsearch MediaWiki
64
- # Prefixsearch API Docs
47
+ # @param limit [Fixnum] The maximum number of results to get, maximum of 100 for users and 200 for bots. This is
48
+ # one of the methods that does *not* use the query_limit_default attribute.
49
+ # @see https://www.mediawiki.org/wiki/API:Prefixsearch MediaWiki Prefixsearch API Docs
65
50
  # @since 0.10.0
66
51
  # @return [Array<String>] All of the page titles that match the search.
67
52
  def get_prefix_search(prefix, limit = 100)
@@ -69,7 +54,7 @@ module MediaWiki
69
54
  action: 'query',
70
55
  list: 'prefixsearch',
71
56
  pssearch: prefix,
72
- limit: get_limited(limit, 100, 200)
57
+ pslimit: get_limited(limit, 100, 200)
73
58
  }
74
59
 
75
60
  response = post(params)
@@ -5,20 +5,16 @@ module MediaWiki
5
5
  # Gets user information. This method should rarely be used by
6
6
  # normal users, unless they want a huge amount of user data at once.
7
7
  # @param prop [String] The usprop parameter.
8
- # @param username [String] The username to get info for. Optional.
9
- # Defaults to the currently logged in user if ommitted.
10
- # @see https://www.mediawiki.org/wiki/API:Users MediaWiki User Lists API
11
- # Docs
8
+ # @param username [String] The username to get info for. Optional. Defaults to the currently logged in user
9
+ # if omitted.
10
+ # @see https://www.mediawiki.org/wiki/API:Users MediaWiki User Lists API Docs
12
11
  # @since 0.3.0
13
12
  # @return [String] Parsed full response if successful.
14
13
  # @return [Nil] If the username is nil and the Butt is not logged in.
15
14
  def get_userlists(prop, username = nil)
16
15
  if username.nil?
17
- if @logged_in
18
- response = get_current_user_meta(prop)
19
- else
20
- return false
21
- end
16
+ return unless @logged_in
17
+ response = get_current_user_meta(prop)
22
18
  else
23
19
  params = {
24
20
  action: 'query',
@@ -34,25 +30,21 @@ module MediaWiki
34
30
  end
35
31
 
36
32
  # Gets an array of all the user's groups.
37
- # @param username [String] The username to get groups of. Optional.
38
- # Defaults to the currently logged in user.
33
+ # @param username [String] The username to get groups of. Optional. Defaults to the currently logged in user.
39
34
  # @see get_userlists
40
35
  # @since 0.3.0
41
- # @return [Array] All of the user's groups.
36
+ # @return [Array<String>] All of the user's groups.
42
37
  # @return [Boolean] False if username is nil and not logged in.
43
38
  def get_usergroups(username = nil)
44
39
  ret = []
45
40
  if username.nil?
46
- if @logged_in
47
- info = get_userlists('groups')
48
- info['query']['userinfo']['groups'].each { |i| ret << i }
49
- else
50
- return false
51
- end
41
+ return false unless @logged_in
42
+ info = get_userlists('groups')
43
+ info['query']['userinfo']['groups'].each { |i| ret << i }
52
44
  else
53
45
  info = get_userlists('groups', username)
54
46
  info['query']['users'].each do |i|
55
- i['groups'].each { |g| ret.push(g) }
47
+ i['groups'].each { |g| ret << g }
56
48
  end
57
49
  end
58
50
 
@@ -60,26 +52,22 @@ module MediaWiki
60
52
  end
61
53
 
62
54
  # Gets the user rights for the user.
63
- # @param username [String] The user to get the rights for. Optional.
64
- # Defaults to the currently logged in user.
55
+ # @param username [String] The user to get the rights for. Optional. Defaults to the currently logged in user.
65
56
  # @see get_userlists
66
57
  # @since 0.3.0
67
- # @return [Array] All of the user's groups.
58
+ # @return [Array<String>] All of the user's groups.
68
59
  # @return [Boolean] False if username is nil and not logged in.
69
60
  def get_userrights(username = nil)
70
61
  ret = []
71
62
  if username.nil?
72
- if @logged_in
73
- info = get_userlists('rights')
74
- info['query']['userinfo']['rights'].each { |i| ret << i }
75
- else
76
- return false
77
- end
63
+ return false unless @logged_in
64
+ info = get_userlists('rights')
65
+ info['query']['userinfo']['rights'].each { |i| ret << i }
78
66
  else
79
67
  info = get_userlists('rights', username)
80
68
  info['query']['users'].each do |i|
81
69
  i['rights'].each do |g|
82
- ret.push(g)
70
+ ret << g
83
71
  end
84
72
  end
85
73
  end
@@ -88,21 +76,18 @@ module MediaWiki
88
76
  end
89
77
 
90
78
  # Gets contribution count for the user.
91
- # @param username [String] The username to get the contribution count of.
92
- # Optional. Defaults to the currently logged in user.
79
+ # @param username [String] The username to get the contribution count of. Optional. Defaults to the currently
80
+ # logged in user.
93
81
  # @see get_userlists
94
82
  # @since 0.3.0
95
83
  # @return [Boolean] False if username is nil and not logged in.
96
- # @return [Int] The number of contributions the user has made.
84
+ # @return [Fixnum] The number of contributions the user has made.
97
85
  def get_contrib_count(username = nil)
98
86
  count = nil
99
87
  if username.nil?
100
- if @logged_in
101
- info = get_userlists('editcount')
102
- count = info['query']['userinfo']['editcount']
103
- else
104
- return false
105
- end
88
+ return false unless @logged_in
89
+ info = get_userlists('editcount')
90
+ count = info['query']['userinfo']['editcount']
106
91
  else
107
92
  info = get_userlists('editcount', username)
108
93
  info['query']['users'].each { |i| count = i['editcount'] }
@@ -112,8 +97,8 @@ module MediaWiki
112
97
  end
113
98
 
114
99
  # Gets when the user registered.
115
- # @param username [String] The username to get the registration date and
116
- # time of. Optional. Defaults to the currently logged in user.
100
+ # @param username [String] The username to get the registration date and time of. Optional. Defaults to the
101
+ # currently logged in user.
117
102
  # @see get_userlists
118
103
  # @since 0.4.0
119
104
  # @return [DateTime] The registration date and time as a DateTime object.
@@ -122,12 +107,9 @@ module MediaWiki
122
107
  time = nil
123
108
  # Do note that in Userinfo, registration is called registrationdate.
124
109
  if username.nil?
125
- if @logged_in
126
- info = get_userlists('registrationdate')
127
- time = info['query']['userinfo']['registrationdate']
128
- else
129
- return false
130
- end
110
+ return false unless @logged_in
111
+ info = get_userlists('registrationdate')
112
+ time = info['query']['userinfo']['registrationdate']
131
113
  else
132
114
  info = get_userlists('registration', username)
133
115
  info['query']['users'].each { |i| time = i['registration'] }
@@ -153,14 +135,14 @@ module MediaWiki
153
135
 
154
136
  # Gets the latest contributions by the user until the limit.
155
137
  # @param user [String] The username.
156
- # @param limit [Int] See #get_all_images.
157
- # @see https://www.mediawiki.org/wiki/API:Usercontribs MediaWiki
158
- # User Contributions API Docs
138
+ # @param limit [Fixnum] See #{get_all_images}.
139
+ # @see https://www.mediawiki.org/wiki/API:Usercontribs MediaWiki User Contributions API Docs
159
140
  # @since 0.8.0
160
- # @return [Hash] Each contribution by its revid, containing the title,
161
- # summary, total contribution size, and the size change relative to the
162
- # previous edit.
163
- def get_user_contributions(user, limit = 500)
141
+ # @return [Hash<Fixnum, Hash<Symbol, Any>>] Each contribution by its revid, containing the title, summary,
142
+ # total
143
+ # contribution size, and
144
+ # the size change relative to the previous edit.
145
+ def get_user_contributions(user, limit = @query_limit_default)
164
146
  params = {
165
147
  action: 'query',
166
148
  list: 'usercontribs',
@@ -184,19 +166,19 @@ module MediaWiki
184
166
  ret
185
167
  end
186
168
 
187
- # Gets the user's full watchlist. If no user is provided, it will use the
188
- # currently logged in user, according to the MediaWiki API.
169
+ # Gets the user's full watchlist. If no user is provided, it will use the currently logged in user, according
170
+ # to the MediaWiki API.
189
171
  # @param user [String] The username.
190
- # @param limit [Int] See #get_all_images.
191
- # @see https://www.mediawiki.org/wiki/API:Watchlist MediaWiki Watchlist
192
- # API Docs
172
+ # @param limit [Fixnum] See #{get_all_images}.
173
+ # @see https://www.mediawiki.org/wiki/API:Watchlist MediaWiki Watchlist API Docs
193
174
  # @since 0.8.0
194
- # @return [Array] All the watchlist page titles.
195
- def get_full_watchlist(user = nil, limit = 500)
175
+ # @return [Array<String>] All the watchlist page titles.
176
+ def get_full_watchlist(user = nil, limit = @query_limit_default)
196
177
  params = {
197
178
  action: 'query',
198
179
  list: 'watchlist',
199
- wlprop: 'title'
180
+ wlprop: 'title',
181
+ wllimit: get_limited(limit)
200
182
  }
201
183
  params[:wluser] = user unless user.nil?
202
184
 
@@ -1,13 +1,12 @@
1
1
  module MediaWiki
2
2
  module Query
3
3
  module Meta
4
- # @see https://www.mediawiki.org/wiki/API:Filerepoinfo MediaWiki
5
- # Filerepoinfo API Docs
4
+ # @see https://www.mediawiki.org/wiki/API:Filerepoinfo MediaWiki Filerepoinfo API Docs
6
5
  module FileRepoInfo
7
6
  # Gets FileRepoInfo for the property.
8
7
  # @param prop [String] The friprop to get.
9
8
  # @since 0.7.0
10
- # @return [Response] The full parsed response.
9
+ # @return [Hash] The full parsed response.
11
10
  def get_filerepoinfo(prop)
12
11
  params = {
13
12
  action: 'query',
@@ -20,33 +19,32 @@ module MediaWiki
20
19
 
21
20
  # Returns an array of all the wiki's file repository names.
22
21
  # @since 0.1.0
23
- # @return [Array] All wiki's file repository names.
22
+ # @return [Hash<String, String>] All wiki's file repository names. Keys are names, values are display names.
24
23
  def get_filerepo_names
25
24
  response = get_filerepoinfo('name|displayname')
26
25
  ret = {}
27
- response['query']['repos'].each { |n, dn| ret[n] = dn }
26
+ response['query']['repos'].each { |h| ret[h['name']] = h['displayname'] }
28
27
  ret
29
28
  end
30
29
 
31
30
  # Gets the root URLs for the file repositories.
32
31
  # @since 0.7.0
33
- # @return [Hash] A hash containing keys of the names, and values of the
34
- # root URLs.
32
+ # @return [Hash<String, String>] A hash containing keys of the names, and values of the root URLs.
35
33
  def get_filerepo_rooturls
36
34
  response = get_filerepoinfo('name|rootUrl')
37
35
  ret = {}
38
- response['query']['repos'].each { |n, r| ret[n] = r }
36
+ response['query']['repos'].each { |h| ret[h['name']] = h['rootUrl'] }
39
37
  ret
40
38
  end
41
39
 
42
40
  # Gets an array containing all local repositories.
43
41
  # @since 0.7.0
44
- # @return [Array] All repositories that are marked as local.
42
+ # @return [Array<String>] All repository names that are marked as local.
45
43
  def get_local_filerepos
46
44
  response = get_filerepoinfo('name|local')
47
45
  ret = []
48
- response['query']['repos'].each do |n, l|
49
- ret.push(n) if l == 'true'
46
+ response['query']['repos'].each do |h|
47
+ ret << h['name'] if h.key?('local')
50
48
  end
51
49
 
52
50
  ret
@@ -54,12 +52,12 @@ module MediaWiki
54
52
 
55
53
  # Gets an array containing all repositories that aren't local.
56
54
  # @since 0.7.0
57
- # @return [Array] All repositories that are not marked as local.
55
+ # @return [Array<String>] All repositories that are not marked as local.
58
56
  def get_nonlocal_filerepos
59
57
  response = get_filerepoinfo('name|local')
60
58
  ret = []
61
- response['query']['repos'].each do |n, l|
62
- ret.push(n) if l == 'false'
59
+ response['query']['repos'].each do |h|
60
+ ret << h['name'] unless h.key?('local')
63
61
  end
64
62
 
65
63
  ret
@@ -67,31 +65,31 @@ module MediaWiki
67
65
 
68
66
  # Gets the repository names and their according URLs.
69
67
  # @since 0.7.0
70
- # @return [Hash] Names as the keys, with their URLs as the values.
68
+ # @return [Hash<String, String>] Names as the keys, with their URLs as the values.
71
69
  def get_filerepo_urls
72
70
  response = get_filerepoinfo('name|url')
73
71
  ret = {}
74
- response['query']['repos'].each { |n, u| ret[n] = u }
72
+ response['query']['repos'].each { |h| ret[h['name']] = h['url'] }
75
73
  ret
76
74
  end
77
75
 
78
76
  # Gets the repository names and their accoring thumbnail URLs.
79
77
  # @since 0.7.0
80
- # @return [Hash] Names as the keys, with their URLs as the values.
78
+ # @return [Hash<String, String>] Names as the keys, with their URLs as the values.
81
79
  def get_filerepo_thumburls
82
80
  response = get_filerepoinfo('name|thumbUrl')
83
81
  ret = {}
84
- response['query']['repos'].each { |n, u| ret[n] = u }
82
+ response['query']['repos'].each { |h| ret[h['name']] = h['thumbUrl'] }
85
83
  ret
86
84
  end
87
85
 
88
86
  # Gets the repository names and their according favicon URLs.
89
87
  # @since 0.7.0
90
- # @return [Hash] Names as the keys, with their favicons as the values.
88
+ # @return [Hash<String, String>] Names as the keys, with their favicons as the values.
91
89
  def get_filerepo_favicons
92
90
  response = get_filerepoinfo('name|favicon')
93
91
  ret = {}
94
- response['query']['repos'].each { |n, f| ret[n] = f }
92
+ response['query']['repos'].each { |h| ret[h['name']] = h['favicon'] }
95
93
  ret
96
94
  end
97
95
  end