sunflower 0.5.3 → 0.5.4

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 (3) hide show
  1. data/README +1 -1
  2. data/lib/sunflower/core.rb +23 -18
  3. metadata +2 -2
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Version: 0.5.3 alpha
1
+ Version: 0.5.4 alpha
2
2
 
3
3
  >>> English:
4
4
 
@@ -17,7 +17,7 @@ require 'cgi'
17
17
  #
18
18
  # You can use multiple Sunflowers at once, to work on multiple wikis.
19
19
  class Sunflower
20
- VERSION = '0.5.3'
20
+ VERSION = '0.5.4'
21
21
 
22
22
  INVALID_CHARS = %w(# < > [ ] | { })
23
23
  INVALID_CHARS_REGEX = Regexp.union *INVALID_CHARS
@@ -44,7 +44,7 @@ class Sunflower
44
44
  # Whether to run #code_cleanup when calling #save.
45
45
  attr_accessor :always_do_code_cleanup
46
46
  # The URL this Sunflower works on, as provided as argument to #initialize.
47
- attr_reader :wikiURL
47
+ attr_reader :wikiURL, :api_endpoint
48
48
  # Siteinfo, as returned by API call.
49
49
  attr_accessor :siteinfo
50
50
 
@@ -108,8 +108,16 @@ class Sunflower
108
108
  return type_map[type].sub 'XX', lang
109
109
  end
110
110
 
111
- # Initialize a new Sunflower working on a wiki with given URL, for ex. "pl.wikipedia.org". url can also be a shorthand identifier such as "b:pl" - see Sunflower.resolve_wikimedia_id for details.
112
- def initialize url=nil
111
+ # Initialize a new Sunflower working on a wiki with given URL, for ex. "pl.wikipedia.org".
112
+ # url can also be a shorthand identifier such as "b:pl" - see Sunflower.resolve_wikimedia_id for details.
113
+ #
114
+ # There is currently one option available:
115
+ # * api_endpoint: full URL to your api.php, if different than http://<url>/w/api.php (standard for WMF wikis)
116
+ def initialize url=nil, opts={}
117
+ if url.is_a? Hash
118
+ url, opts = nil, url
119
+ end
120
+
113
121
  if !url
114
122
  userdata = Sunflower.read_userdata()
115
123
 
@@ -121,6 +129,7 @@ class Sunflower
121
129
  end
122
130
 
123
131
  @wikiURL = (url.include?('.') ? url : Sunflower.resolve_wikimedia_id(url))
132
+ @api_endpoint = opts[:api_endpoint] || 'http://'+@wikiURL+'/w/api.php'
124
133
 
125
134
  @warnings = true
126
135
  @log = false
@@ -172,7 +181,7 @@ class Sunflower
172
181
  end
173
182
 
174
183
  resp = RestClient.post(
175
- 'http://'+@wikiURL+'/w/api.php',
184
+ @api_endpoint,
176
185
  request,
177
186
  {:user_agent => "Sunflower #{VERSION} alpha", :cookies => @cookies}
178
187
  )
@@ -239,33 +248,29 @@ class Sunflower
239
248
 
240
249
  # 1. get the login token
241
250
  response = RestClient.post(
242
- 'http://'+@wikiURL+'/w/api.php?'+"action=login&lgname=#{CGI.escape user}&lgpassword=#{CGI.escape password}"+'&format=json',
243
- nil,
251
+ @api_endpoint,
252
+ "action=login&lgname=#{CGI.escape user}&lgpassword=#{CGI.escape password}&format=json",
244
253
  {:user_agent => "Sunflower #{VERSION} alpha"}
245
254
  )
246
255
 
247
256
  @cookies = response.cookies
248
- json = JSON.parse response.to_str
249
- token, prefix = json['login']['token'], json['login']['cookieprefix']
257
+ raise Sunflower::Error, 'unable to log in (no cookies received)!' if !@cookies or @cookies.empty?
250
258
 
259
+ json = JSON.parse response.to_str
260
+ token, prefix = (json['login']['lgtoken']||json['login']['token']), json['login']['cookieprefix']
251
261
 
252
262
  # 2. actually log in
253
263
  response = RestClient.post(
254
- 'http://'+@wikiURL+'/w/api.php?'+"action=login&lgname=#{CGI.escape user}&lgpassword=#{CGI.escape password}&lgtoken=#{token}"+'&format=json',
255
- nil,
264
+ @api_endpoint,
265
+ "action=login&lgname=#{CGI.escape user}&lgpassword=#{CGI.escape password}&lgtoken=#{token}&format=json",
256
266
  {:user_agent => "Sunflower #{VERSION} alpha", :cookies => @cookies}
257
267
  )
258
268
 
259
269
  json = JSON.parse response.to_str
260
270
 
261
- @cookies = @cookies.merge(response.cookies).merge({
262
- "#{prefix}UserName" => json['login']['lgusername'].to_s,
263
- "#{prefix}UserID" => json['login']['lguserid'].to_s,
264
- "#{prefix}Token" => json['login']['lgtoken'].to_s
265
- })
266
-
271
+ @cookies = @cookies.merge(response.cookies)
267
272
 
268
- raise Sunflower::Error, 'unable to log in (no cookies received)!' if !@cookies
273
+ raise Sunflower::Error, 'unable to log in (no cookies received)!' if !@cookies or @cookies.empty?
269
274
 
270
275
 
271
276
  # 3. confirm you did log in by checking the watchlist.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunflower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-28 00:00:00.000000000 Z
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json