Class: Wikipedia::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/wikipedia/client.rb

Constant Summary collapse

BASE_URL =
":protocol://:domain/:path?action=:action&format=json"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeClient

Returns a new instance of Client.



8
9
10
# File 'lib/wikipedia/client.rb', line 8

def initialize
  self.follow_redirects = true
end

Instance Attribute Details

#follow_redirectsObject

Returns the value of attribute follow_redirects.



6
7
8
# File 'lib/wikipedia/client.rb', line 6

def follow_redirects
  @follow_redirects
end

Instance Method Details

#find(title, options = {}) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/wikipedia/client.rb', line 12

def find( title, options = {} )
  title = Url.new(title).title rescue title
  page = Page.new( request_page( title, options ) )
  while follow_redirects and page.redirect?
    page = Page.new( request_page( page.redirect_title, options ) )
  end
  page
end

#find_image(title, options = {}) ⇒ Object



21
22
23
24
# File 'lib/wikipedia/client.rb', line 21

def find_image( title, options = {} )
  title = Url.new(title).title rescue title
  Page.new( request_image( title, options ) )
end

#find_random(options = {}) ⇒ Object



26
27
28
29
30
31
# File 'lib/wikipedia/client.rb', line 26

def find_random( options = {} )
  require 'json'
  data = JSON::load( request_random( options ) )
  title = data["query"]["pages"].values[0]["title"]
  find( title, options )
end

#request(options) ⇒ Object



65
66
67
68
# File 'lib/wikipedia/client.rb', line 65

def request( options )
  require 'open-uri'
  URI.parse( url_for( options ) ).read( "User-Agent" => Configuration[:user_agent] )
end

#request_image(title, options = {}) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/wikipedia/client.rb', line 46

def request_image( title, options = {} )
  request( {
             :action => "query",
             :prop => "imageinfo",
             :iiprop => "url",
             :titles => title
           }.merge( options ) )
end

#request_page(title, options = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/wikipedia/client.rb', line 34

def request_page( title, options = {} )
  request( {
             :action => "query",
             :prop => %w{ info revisions links extlinks images categories coordinates templates extracts },
             :rvprop => "content",
             :inprop => "url",
             :explaintext => "",
             :titles => title
           }.merge( options ) )
end

#request_random(options = {}) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/wikipedia/client.rb', line 56

def request_random( options = {} )
  request( {
             :action => "query",
             :generator => "random",
             :grnnamespace => "0",
             :prop => "info"
           }.merge( options ) )
end