wikipedia-client 1.12.0 → 1.16.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07e7dbcd9e8fd92afb079f75a87a928740dbb2427ec6a26e115cb67473f6dba9
4
- data.tar.gz: 64a2a3cd7bf9d74b1496af48d8a2aa73366ccf4339c79d3297813d6fdb282d45
3
+ metadata.gz: 6bd75b9c5cb006f00a42ee85054e1cce3d61d942c6c2c8d55f01d46ce594ad0e
4
+ data.tar.gz: 594bdcb73afa6d02d3a6761bad0180df3b19896f1474bdfbcfed04382318afb4
5
5
  SHA512:
6
- metadata.gz: 8c98ab9206724951d38d97b56bc2ef9890179971c6abcf816ae7f1a89264681b3b73d76e4d2ff1bb9ce186eb9392a6a8220e63fe6a90bbb951e803020b68a064
7
- data.tar.gz: 4f7dc758853e41b3ea56542fa66ec4e5fc4ad013a9a75f91a6292ca790e7bda64abc020537e599245433b3f57a91c28b98783515695e771e509337935f5a9320
6
+ metadata.gz: a9dd0e851b81c6f59769eae01e7439c11efba75684c321eb26589b572ead963235b2b8a322169b7171908ef930a4fddcb61766e605acee5ae1d4fa3e08bea6d4
7
+ data.tar.gz: b54cd43b57dafc5409a3e4524623bebbc3c275c26c97c6aeed7ccb821a075025d3dd93f41e557155e219e7346b4138c72c012f1bd175c34b49679c0d8334a4ee
@@ -0,0 +1,27 @@
1
+ name: Test
2
+ on:
3
+ pull_request:
4
+ push: { branches: master }
5
+
6
+ jobs:
7
+ test:
8
+ name: Ruby ${{ matrix.ruby }}
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix: { ruby: ['2.5', '2.6', '2.7', '3.0'] }
12
+
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@v2
16
+
17
+ - name: Setup Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: '${{ matrix.ruby }}'
21
+ bundler-cache: true
22
+
23
+ - name: Run tests
24
+ run: bundle exec rspec
25
+
26
+ - name: Run rubocop
27
+ run: bundle exec rubocop
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  pkg/*
8
8
  coverage/
9
9
  rdoc/
10
+ Gemfile.lock
data/Gemfile CHANGED
@@ -1,2 +1,12 @@
1
1
  source 'https://rubygems.org'
2
+
3
+ gem 'jeweler'
4
+ gem 'pry'
5
+ gem 'rake'
6
+ gem 'rdoc'
7
+ gem 'rspec'
8
+ # FIXME: Remove rubocop version restriction and fix or disable cops
9
+ gem 'rubocop', '= 0.48.1'
10
+ gem 'thoughtbot-shoulda'
11
+
2
12
  gemspec
data/README.md ADDED
@@ -0,0 +1,214 @@
1
+ # Wikipedia API Client
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/wikipedia-client.svg)](https://badge.fury.io/rb/wikipedia-client)
4
+ [![Build Status](https://github.com/kenpratt/wikipedia-client/workflows/Test/badge.svg)](https://github.com/kenpratt/wikipedia-client/actions?query=workflow%3ATest)
5
+
6
+ Allows you to get wikipedia content through their API. This uses the
7
+ alpha API, not the deprecated query.php API type.
8
+
9
+ Wikipedia API reference: <http://en.wikipedia.org/w/api.php>
10
+
11
+ Adopted from: <http://code.google.com/p/wikipedia-client/>
12
+
13
+ ## Installation
14
+
15
+ ```
16
+ gem install wikipedia-client
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```ruby
22
+ require 'wikipedia'
23
+ page = Wikipedia.find( 'Getting Things Done' )
24
+ #=> #<Wikipedia:Page>
25
+
26
+ page.title
27
+ #=> 'Getting Things Done'
28
+
29
+ page.fullurl
30
+ #=> 'http://en.wikipedia.org/wiki/Getting_Things_Done'
31
+
32
+ page.text
33
+ #=> 'Getting Things Done is a time-management method...'
34
+
35
+ page.content
36
+ #=> all the wiki markup appears here...
37
+
38
+ page.summary
39
+ #=> only the wiki summary appears here...
40
+
41
+ page.categories
42
+ #=> [..., "Category:Self-help books", ...]
43
+
44
+ page.links
45
+ #=> [..., "Business", "Cult following", ...]
46
+
47
+ page.extlinks
48
+ # => [..., "http://www.example.com/", ...]
49
+
50
+ page.images
51
+ #=> ["File:Getting Things Done.jpg", ...]
52
+
53
+ page.image_urls
54
+ #=> ["http://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"]
55
+
56
+ page.image_thumburls
57
+ #=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/200px-Getting_Things_Done.jpg"]
58
+
59
+ # or with custom width argument:
60
+ page.image_thumburls(100)
61
+ #=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/100px-Getting_Things_Done.jpg"]
62
+
63
+ page.image_descriptionurls
64
+ #=> ["http://en.wikipedia.org/wiki/File:Getting_Things_Done.jpg"]
65
+
66
+ page.main_image_url
67
+ #=> "https://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"
68
+
69
+ page.coordinates
70
+ #=> [48.853, 2.3498, "", "earth"]
71
+
72
+ page.templates
73
+ #=> [..., "Template:About", ...]
74
+
75
+ page.langlinks
76
+ #=> {..., "de"=>"Getting Things Done", "eo"=>"Igi aferojn finitaj", "zh"=>"尽管去做", ...}
77
+ ```
78
+
79
+ ## Configuration
80
+
81
+ ### Global
82
+
83
+ This is by default configured like this:
84
+
85
+ ```ruby
86
+ Wikipedia.configure {
87
+ domain 'en.wikipedia.org'
88
+ path 'w/api.php'
89
+ }
90
+ ```
91
+
92
+ ### Local
93
+
94
+ If you need to query multiple wikis indiviual clients with individual configurations can be
95
+ used:
96
+
97
+ ```ruby
98
+ config_en = Wikipedia::Configuration.new(domain: 'en.wikipedia.org')
99
+ config_de = Wikipedia::Configuration.new(domain: 'de.wikipedia.org')
100
+
101
+ client_en = Wikipedia::Client.new(config_en)
102
+ client_de = Wikipedia::Client.new(config_de)
103
+ client_en.find( 'Getting Things Done' )
104
+ client_de.find( 'Buch' )
105
+ ```
106
+
107
+ ## Advanced
108
+
109
+ See the API spec at <http://en.wikipedia.org/w/api.php>.
110
+
111
+ If you need data that is not already present, you can override parameters.
112
+
113
+ For example, to retrieve only the page info:
114
+
115
+ ```ruby
116
+ page = Wikipedia.find( 'Getting Things Done', :prop => "info" )
117
+
118
+ page.title
119
+ #=> "Getting Things Done"
120
+
121
+ page.raw_data
122
+ #=> {"query"=>{"pages"=>{"959928"=>{"pageid"=>959928, "ns"=>0,
123
+ "title"=>"Getting Things Done", "touched"=>"2010-03-10T00:04:09Z",
124
+ "lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}
125
+ ```
126
+
127
+ ### Additional HTTP headers
128
+
129
+ Some API features require tweaking HTTP headers. You can add additional headers via configuration.
130
+
131
+ For example, to retrieve the same page in different language variants:
132
+
133
+ ```ruby
134
+ Wikipedia.configure do
135
+ domain 'zh.wikipedia.org'
136
+ headers({ 'Accept-Language' => 'zh-tw' })
137
+ end
138
+
139
+ Wikipedia.find('牛肉').summary #=> "牛肉是指從牛身上得出的肉,為常見的肉品之一。肌肉部分可以切成牛排、牛肉塊或牛仔骨,也可以與其他的肉混合做成香腸或血腸。"
140
+
141
+ Wikipedia.configure do
142
+ domain 'zh.wikipedia.org'
143
+ headers({ 'Accept-Language' => 'zh-cn' })
144
+ end
145
+
146
+ Wikipedia.find('牛肉').summary #=> "牛肉是指从牛身上得出的肉,为常见的肉品之一。肌肉部分可以切成牛排、牛肉块或牛仔骨,也可以与其他的肉混合做成香肠或血肠。"
147
+ ```
148
+
149
+
150
+ ## Contributing
151
+
152
+ ### Getting the code, and running the tests
153
+
154
+ ```
155
+ git clone git@github.com:kenpratt/wikipedia-client.git
156
+ cd wikipedia-client
157
+ bundle install
158
+ bundle exec rspec
159
+ ```
160
+
161
+ ### Pushing a new release of the Gem
162
+
163
+ 1. Edit `lib/wikipedia/version.rb`, changing `VERSION`.
164
+ 2. Test that the current branch will work as a gem, by testing in an external directory:
165
+ 3. Make a test directory.
166
+ 4. Add a `Gemfile` with:
167
+
168
+ ```
169
+ source 'https://rubygems.org'
170
+
171
+ gem 'wikipedia-client', :path => '/path/to/local/wikipedia-client'
172
+ ```
173
+
174
+ 5. And a `test.rb` file with:
175
+
176
+ ```
177
+ require 'wikipedia'
178
+
179
+ page = Wikipedia.find('Ruby')
180
+ puts page.title
181
+ ```
182
+
183
+ 6. And then run `bundle install && bundle exec ruby test.rb`
184
+ 7. Build the gem: `bundle exec gem build wikipedia-client.gemspec`.
185
+ 8. Commit the changes: `git commit -a -m 'Version bump to 1.4.0' && git tag v1.4.0 && git push && git push --tag`
186
+ 9. Publish the result to RubyGems: `bundle exec gem push wikipedia-client-1.4.0.gem`.
187
+ 10. Test the released gem in an external directory:
188
+ 11. Make a test directory.
189
+ 12. Add a `Gemfile` with:
190
+
191
+ ```
192
+ source 'https://rubygems.org'
193
+
194
+ gem 'wikipedia-client'
195
+ ```
196
+
197
+ 13. And a `test.rb` file with:
198
+
199
+ ```
200
+ require 'wikipedia'
201
+
202
+ page = Wikipedia.find('Ruby')
203
+ puts page.title
204
+ ```
205
+
206
+ 14. And then run `bundle install && bundle exec ruby test.rb`
207
+
208
+ ## Thanks!
209
+
210
+ Copyright (c) 2008 Cyril David, released under the MIT license
211
+
212
+ Adopted by Ken Pratt (ken@kenpratt.net) in 2010/03
213
+
214
+ Thanks to all the [Contributors](https://github.com/kenpratt/wikipedia-client/graphs/contributors).
@@ -1,11 +1,18 @@
1
+ require 'addressable'
2
+ require 'cgi'
3
+ require 'open-uri'
4
+ require 'set'
5
+
1
6
  module Wikipedia
2
7
  class Client
3
8
  # see http://en.wikipedia.org/w/api.php
4
- BASE_URL = ':protocol://:domain/:path?action=:action&format=json'.freeze
9
+ BASE_URL_TEMPLATE = '%{protocol}://%{domain}/%{path}?action=%{action}&format=json'.freeze
10
+ BASE_URL_OPTIONS = Set.new([:protocol, :domain, :path, :action])
5
11
 
6
12
  attr_accessor :follow_redirects
7
13
 
8
- def initialize
14
+ def initialize(configuration = Wikipedia::Configuration.new)
15
+ @configuration = configuration
9
16
  self.follow_redirects = true
10
17
  end
11
18
 
@@ -66,50 +73,52 @@ module Wikipedia
66
73
  end
67
74
 
68
75
  def request( options )
69
- require 'open-uri'
70
- URI.parse( url_for( options ) ).read( 'User-Agent' => Configuration[:user_agent] )
76
+ URI.parse( url_for( options ) ).read( headers )
71
77
  end
72
78
 
73
79
  protected
74
80
 
75
81
  def configuration_options
76
82
  {
77
- protocol: Configuration[:protocol],
78
- domain: Configuration[:domain],
79
- path: Configuration[:path]
83
+ protocol: @configuration[:protocol],
84
+ domain: @configuration[:domain],
85
+ path: @configuration[:path]
80
86
  }
81
87
  end
82
88
 
83
- def url_for( options )
84
- url = BASE_URL.dup
89
+ def url_for(options)
85
90
  options = configuration_options.merge( options )
86
- options.each do |key, val|
87
- value = urlify_value( val )
88
- if url.include?( ":#{key}" )
89
- url.sub! ":#{key}", value
90
- else
91
- url << "&#{key}=#{value}"
92
- end
93
- end
94
- url
91
+
92
+ url_options, query_options = split_hash(options, BASE_URL_OPTIONS)
93
+ normalized_query_options = query_options.map { |k, v| [k, normalize_value(v)] }
94
+
95
+ base_url = BASE_URL_TEMPLATE % url_options
96
+ query_string = Addressable::URI.form_encode(normalized_query_options)
97
+ base_url + '&' + query_string
95
98
  end
96
99
 
97
- def urlify_value( val )
100
+ def normalize_value( val )
98
101
  case val
99
102
  when Array
100
- encode( val.flatten.join( '|' ) )
103
+ val.flatten.join( '|' )
101
104
  else
102
- encode( val )
105
+ val
103
106
  end
104
107
  end
105
108
 
106
- def encode( val )
107
- case val
108
- when String
109
- URI.encode( val, /#{URI::UNSAFE}|[\+&]/ )
110
- else
111
- val
109
+ def split_hash(hash, keys)
110
+ h1 = {}
111
+ h2 = {}
112
+ hash.each do |k, v|
113
+ (keys.include?(k) ? h1 : h2).store(k, v)
112
114
  end
115
+ [h1, h2]
116
+ end
117
+
118
+ def headers
119
+ {
120
+ 'User-Agent' => @configuration[:user_agent]
121
+ }.merge( @configuration[:headers] )
113
122
  end
114
123
  end
115
124
  end
@@ -1,8 +1,20 @@
1
- require 'singleton'
2
-
3
1
  module Wikipedia
4
2
  class Configuration
5
- include Singleton
3
+ DEFAULT = {
4
+ protocol: 'https',
5
+ domain: 'en.wikipedia.org',
6
+ path: 'w/api.php',
7
+ user_agent: 'wikipedia-client/1.7 (https://github.com/kenpratt/wikipedia-client)',
8
+ headers: {}
9
+ }.freeze
10
+
11
+ def initialize(configuration = DEFAULT)
12
+ DEFAULT.merge(configuration).each { |args| send(*args) }
13
+ end
14
+
15
+ def [](directive)
16
+ send(directive)
17
+ end
6
18
 
7
19
  def self.directives(*directives)
8
20
  directives.each do |directive|
@@ -14,10 +26,6 @@ module Wikipedia
14
26
  end
15
27
  end
16
28
 
17
- def self.[](directive)
18
- instance.send(directive)
19
- end
20
-
21
- directives :protocol, :domain, :path, :user_agent
29
+ directives :protocol, :domain, :path, :user_agent, :headers
22
30
  end
23
31
  end
data/lib/wikipedia/url.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'uri'
2
+ require 'addressable'
3
+
1
4
  module Wikipedia
2
5
  class Url
3
6
  def initialize(wiki_url)
@@ -8,7 +11,12 @@ module Wikipedia
8
11
  return @title if @title
9
12
 
10
13
  uri = URI.parse( @wiki_url )
11
- @title = URI.decode( uri.path.sub(/\/wiki\//, '') )
14
+ @title =
15
+ if uri.path.empty?
16
+ @wiki_url
17
+ else
18
+ Addressable::URI.unencode( uri.path.sub(/\/wiki\//, '') )
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -1,3 +1,3 @@
1
1
  module Wikipedia
2
- VERSION = '1.12.0'.freeze
2
+ VERSION = '1.16.0'.freeze
3
3
  end
@@ -0,0 +1,2 @@
1
+ # rubocop:disable Style/FileName
2
+ require 'wikipedia'
data/lib/wikipedia.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  Dir[File.dirname(__FILE__) + '/wikipedia/**/*.rb'].each { |f| require f }
2
2
 
3
- require 'uri'
4
-
5
3
  module Wikipedia
6
4
  # Examples :
7
5
  # page = Wikipedia.find('Rails')
@@ -26,7 +24,7 @@ module Wikipedia
26
24
  end
27
25
 
28
26
  def self.configure(&block)
29
- Configuration.instance.instance_eval(&block)
27
+ configuration.instance_eval(&block)
30
28
  end
31
29
 
32
30
  # rubocop:disable Style/MethodName
@@ -34,20 +32,15 @@ module Wikipedia
34
32
  configure(&block)
35
33
  end
36
34
 
37
- configure do
38
- protocol 'https'
39
- domain 'en.wikipedia.org'
40
- path 'w/api.php'
41
- user_agent(
42
- 'wikipedia-client/1.7 (https://github.com/kenpratt/wikipedia-client)'
43
- )
44
- end
45
-
46
35
  class << self
47
36
  private
48
37
 
38
+ def configuration
39
+ @configuration ||= Wikipedia::Configuration.new
40
+ end
41
+
49
42
  def client
50
- @client ||= Wikipedia::Client.new
43
+ @client ||= Wikipedia::Client.new configuration
51
44
  end
52
45
  end
53
46
  end
@@ -285,3 +285,21 @@ describe Wikipedia::Client, 'page.langlinks' do
285
285
  )
286
286
  end
287
287
  end
288
+
289
+ describe Wikipedia::Client, 'multiple configs' do
290
+ before(:each) do
291
+ config_en = Wikipedia::Configuration.new(domain: 'en.wikipedia.org')
292
+ config_de = Wikipedia::Configuration.new(domain: 'de.wikipedia.org')
293
+
294
+ @client_en = Wikipedia::Client.new(config_en)
295
+ @client_de = Wikipedia::Client.new(config_de)
296
+ end
297
+
298
+ it 'should return a page with the correct URL' do
299
+ @page_en = @client_en.find('Edsger_Dijkstra')
300
+ expect(@page_en.fullurl).to eq('https://en.wikipedia.org/wiki/Edsger_W._Dijkstra')
301
+
302
+ @page_de = @client_de.find('Edsger_Dijkstra')
303
+ expect(@page_de.fullurl).to eq('https://de.wikipedia.org/wiki/Edsger_W._Dijkstra')
304
+ end
305
+ end
data/spec/lib/url_spec.rb CHANGED
@@ -6,3 +6,10 @@ describe Wikipedia::Url, 'like http://en.wikipedia.org/wiki/Getting_Things_Done'
6
6
  expect(url.title).to eq('Getting_Things_Done')
7
7
  end
8
8
  end
9
+
10
+ describe Wikipedia::Url, 'like "? (Lost)"' do
11
+ it 'should return input as title' do
12
+ url = Wikipedia::Url.new('? (Lost)')
13
+ expect(url.title).to eq('? (Lost)')
14
+ end
15
+ end
@@ -18,3 +18,15 @@ describe Wikipedia, '.find' do
18
18
  expect(page1.title).to eq(page2.title)
19
19
  end
20
20
  end
21
+
22
+ describe Wikipedia, '.configure' do
23
+ it 'should set configuration' do
24
+ Wikipedia.configure do
25
+ protocol 'https'
26
+ domain 'zh.wikipedia.org'
27
+ end
28
+
29
+ page = Wikipedia.find('Getting_Things_Done')
30
+ expect(page.fullurl).to start_with('https://zh.wikipedia.org')
31
+ end
32
+ end
@@ -4,7 +4,6 @@ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
4
4
  require 'wikipedia/version'
5
5
  require 'date'
6
6
 
7
- # rubocop:disable Metrics/BlockLength
8
7
  Gem::Specification.new do |s|
9
8
  s.name = 'wikipedia-client'
10
9
  s.version = Wikipedia::VERSION
@@ -24,29 +23,11 @@ Gem::Specification.new do |s|
24
23
  s.files = `git ls-files`.split("\n")
25
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
25
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
27
- s.has_rdoc = true
28
- s.extra_rdoc_files = ['README.textile']
26
+ s.extra_rdoc_files = ['README.md']
29
27
  s.bindir = 'bin'
30
28
 
31
29
  s.require_paths << 'lib'
32
30
  s.rdoc_options << '--title' << 'wikipedia-client' << '--main' << '-ri'
33
31
 
34
- s.add_development_dependency('pry', '~> 0.14')
35
- s.add_development_dependency('rake', '~> 13.0')
36
- s.add_development_dependency('rspec', '~> 3.0')
37
- s.add_development_dependency('rdoc', '~> 6.0')
38
- s.add_development_dependency('jeweler', '~> 2.0')
39
- s.add_development_dependency('rubocop', '~> 0.48')
40
-
41
- if s.respond_to? :specification_version
42
- s.specification_version = 3
43
-
44
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
45
- s.add_development_dependency('thoughtbot-shoulda', '~> 2.11', ['>= 2.11'])
46
- else
47
- s.add_dependency('thoughtbot-shoulda', ['>= 0'])
48
- end
49
- else
50
- s.add_dependency('thoughtbot-shoulda', ['>= 0'])
51
- end
32
+ s.add_runtime_dependency 'addressable', '~> 2.7'
52
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikipedia-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.0
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril David
@@ -13,130 +13,40 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2021-04-03 00:00:00.000000000 Z
16
+ date: 2021-09-08 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
- name: pry
19
+ name: addressable
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - "~>"
23
23
  - !ruby/object:Gem::Version
24
- version: '0.14'
25
- type: :development
24
+ version: '2.7'
25
+ type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  requirements:
29
29
  - - "~>"
30
30
  - !ruby/object:Gem::Version
31
- version: '0.14'
32
- - !ruby/object:Gem::Dependency
33
- name: rake
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - "~>"
37
- - !ruby/object:Gem::Version
38
- version: '13.0'
39
- type: :development
40
- prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- requirements:
43
- - - "~>"
44
- - !ruby/object:Gem::Version
45
- version: '13.0'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '3.0'
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '3.0'
60
- - !ruby/object:Gem::Dependency
61
- name: rdoc
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '6.0'
67
- type: :development
68
- prerelease: false
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '6.0'
74
- - !ruby/object:Gem::Dependency
75
- name: jeweler
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '2.0'
81
- type: :development
82
- prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '2.0'
88
- - !ruby/object:Gem::Dependency
89
- name: rubocop
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '0.48'
95
- type: :development
96
- prerelease: false
97
- version_requirements: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '0.48'
102
- - !ruby/object:Gem::Dependency
103
- name: thoughtbot-shoulda
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: '2.11'
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '2.11'
112
- type: :development
113
- prerelease: false
114
- version_requirements: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '2.11'
119
- - - "~>"
120
- - !ruby/object:Gem::Version
121
- version: '2.11'
31
+ version: '2.7'
122
32
  description: Ruby client for the Wikipedia API
123
33
  email: ken@kenpratt.net
124
34
  executables: []
125
35
  extensions: []
126
36
  extra_rdoc_files:
127
- - README.textile
37
+ - README.md
128
38
  files:
129
39
  - ".editorconfig"
40
+ - ".github/workflows/test.yml"
130
41
  - ".gitignore"
131
42
  - ".rubocop.yml"
132
- - ".travis.yml"
133
43
  - Gemfile
134
- - Gemfile.lock
135
44
  - MIT-LICENSE
136
- - README.textile
45
+ - README.md
137
46
  - Rakefile
138
47
  - init.rb
139
48
  - install.rb
49
+ - lib/wikipedia-client.rb
140
50
  - lib/wikipedia.rb
141
51
  - lib/wikipedia/client.rb
142
52
  - lib/wikipedia/configuration.rb
@@ -211,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
121
  requirements: []
212
122
  rubygems_version: 3.0.3
213
123
  signing_key:
214
- specification_version: 3
124
+ specification_version: 4
215
125
  summary: Ruby client for the Wikipedia API
216
126
  test_files:
217
127
  - spec/fixtures/Edsger_Dijkstra.json
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.5
4
- - 2.6
5
- - 2.7
6
- - 3.0
data/Gemfile.lock DELETED
@@ -1,109 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- wikipedia-client (1.12.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- addressable (2.4.0)
10
- ast (2.3.0)
11
- builder (3.2.4)
12
- coderay (1.1.3)
13
- descendants_tracker (0.0.4)
14
- thread_safe (~> 0.3, >= 0.3.1)
15
- diff-lcs (1.4.4)
16
- faraday (0.9.2)
17
- multipart-post (>= 1.2, < 3)
18
- git (1.8.1)
19
- rchardet (~> 1.8)
20
- github_api (0.16.0)
21
- addressable (~> 2.4.0)
22
- descendants_tracker (~> 0.0.4)
23
- faraday (~> 0.8, < 0.10)
24
- hashie (>= 3.4)
25
- mime-types (>= 1.16, < 3.0)
26
- oauth2 (~> 1.0)
27
- hashie (4.1.0)
28
- highline (2.0.3)
29
- jeweler (2.3.9)
30
- builder
31
- bundler
32
- git (>= 1.2.5)
33
- github_api (~> 0.16.0)
34
- highline (>= 1.6.15)
35
- nokogiri (>= 1.5.10)
36
- psych
37
- rake
38
- rdoc
39
- semver2
40
- jwt (2.2.2)
41
- method_source (1.0.0)
42
- mime-types (2.99.3)
43
- mini_portile2 (2.5.0)
44
- multi_json (1.15.0)
45
- multi_xml (0.6.0)
46
- multipart-post (2.1.1)
47
- nokogiri (1.11.2)
48
- mini_portile2 (~> 2.5.0)
49
- racc (~> 1.4)
50
- oauth2 (1.4.7)
51
- faraday (>= 0.8, < 2.0)
52
- jwt (>= 1.0, < 3.0)
53
- multi_json (~> 1.3)
54
- multi_xml (~> 0.5)
55
- rack (>= 1.2, < 3)
56
- parser (2.4.0.0)
57
- ast (~> 2.2)
58
- powerpack (0.1.1)
59
- pry (0.14.0)
60
- coderay (~> 1.1)
61
- method_source (~> 1.0)
62
- psych (3.3.1)
63
- racc (1.5.2)
64
- rack (2.2.3)
65
- rainbow (2.2.2)
66
- rake
67
- rake (13.0.3)
68
- rchardet (1.8.0)
69
- rdoc (6.3.0)
70
- rspec (3.10.0)
71
- rspec-core (~> 3.10.0)
72
- rspec-expectations (~> 3.10.0)
73
- rspec-mocks (~> 3.10.0)
74
- rspec-core (3.10.1)
75
- rspec-support (~> 3.10.0)
76
- rspec-expectations (3.10.1)
77
- diff-lcs (>= 1.2.0, < 2.0)
78
- rspec-support (~> 3.10.0)
79
- rspec-mocks (3.10.2)
80
- diff-lcs (>= 1.2.0, < 2.0)
81
- rspec-support (~> 3.10.0)
82
- rspec-support (3.10.2)
83
- rubocop (0.48.1)
84
- parser (>= 2.3.3.1, < 3.0)
85
- powerpack (~> 0.1)
86
- rainbow (>= 1.99.1, < 3.0)
87
- ruby-progressbar (~> 1.7)
88
- unicode-display_width (~> 1.0, >= 1.0.1)
89
- ruby-progressbar (1.8.1)
90
- semver2 (3.4.2)
91
- thoughtbot-shoulda (2.11.1)
92
- thread_safe (0.3.6)
93
- unicode-display_width (1.2.1)
94
-
95
- PLATFORMS
96
- ruby
97
-
98
- DEPENDENCIES
99
- jeweler (~> 2.0)
100
- pry (~> 0.14)
101
- rake (~> 13.0)
102
- rdoc (~> 6.0)
103
- rspec (~> 3.0)
104
- rubocop (~> 0.48)
105
- thoughtbot-shoulda (~> 2.11, >= 2.11)
106
- wikipedia-client!
107
-
108
- BUNDLED WITH
109
- 2.0.2
data/README.textile DELETED
@@ -1,168 +0,0 @@
1
- h1. Wikipedia
2
-
3
- !https://badge.fury.io/rb/wikipedia-client.svg!:https://badge.fury.io/rb/wikipedia-client !https://travis-ci.org/kenpratt/wikipedia-client.svg?branch=master!:https://travis-ci.org/kenpratt/wikipedia-client
4
-
5
- Allows you to get wikipedia content through their API. This uses the
6
- alpha API, not the deprecated query.php API type
7
-
8
- Wikipedia API reference: "http://en.wikipedia.org/w/api.php":http://en.wikipedia.org/w/api.php
9
-
10
- Adopted from: "http://code.google.com/p/wikipedia-client/":http://code.google.com/p/wikipedia-client/
11
-
12
- h2. Installation
13
-
14
- <pre><code>gem install wikipedia-client</code></pre>
15
-
16
- h2. Examples
17
-
18
- <pre><code>require 'wikipedia'
19
- page = Wikipedia.find( 'Getting Things Done' )
20
-
21
- => #<Wikipedia:Page>
22
-
23
- page.title
24
-
25
- => 'Getting Things Done'
26
-
27
- page.fullurl
28
-
29
- => 'http://en.wikipedia.org/wiki/Getting_Things_Done'
30
-
31
- page.text
32
-
33
- => 'Getting Things Done is a time-management method...'
34
-
35
- page.content
36
-
37
- => # all the wiki markup appears here...
38
-
39
- page.summary
40
-
41
- => # only the wiki summary appears here...
42
-
43
- page.categories
44
-
45
- => [..., "Category:Self-help books", ...]
46
-
47
- page.links
48
-
49
- => [..., "Business", "Cult following", ...]
50
-
51
- page.extlinks
52
-
53
- => [..., "http://www.example.com/", ...]
54
-
55
- page.images
56
-
57
- => ["File:Getting Things Done.jpg", ...]
58
-
59
- page.image_urls
60
-
61
- => ["http://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"]
62
-
63
- default width: 200
64
-
65
- page.image_thumburls
66
-
67
- => ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/200px-Getting_Things_Done.jpg"]
68
-
69
- or with custom width argument:
70
-
71
- page.image_thumburls(100)
72
-
73
- => ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/100px-Getting_Things_Done.jpg"]
74
-
75
- page.image_descriptionurls
76
-
77
- => ["http://en.wikipedia.org/wiki/File:Getting_Things_Done.jpg"]
78
-
79
- page.main_image_url
80
-
81
- => "https://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"
82
-
83
- page.coordinates
84
-
85
- => [48.853, 2.3498, "", "earth"]
86
-
87
- page.templates
88
-
89
- => [..., "Template:About", ...]
90
-
91
- page.langlinks
92
-
93
- => {..., "de"=>"Getting Things Done", "eo"=>"Igi aferojn finitaj", "zh"=>"尽管去做", ...}</code></pre>
94
-
95
- h2. Configuration
96
-
97
- This is by default configured like this:
98
-
99
- <pre><code>Wikipedia.configure {
100
- domain 'en.wikipedia.org'
101
- path 'w/api.php'
102
- }</code></pre>
103
-
104
- h2. Advanced
105
-
106
- See the API spec at "http://en.wikipedia.org/w/api.php":http://en.wikipedia.org/w/api.php
107
-
108
- If you need data that is not already present, you can override parameters.
109
-
110
- For example, to retrieve only the page info:
111
-
112
- <pre><code>page = Wikipedia.find( 'Getting Things Done', :prop => "info" )
113
-
114
- page.title
115
-
116
- => "Getting Things Done"
117
-
118
- page.raw_data
119
-
120
- => {"query"=>{"pages"=>{"959928"=>{"pageid"=>959928, "ns"=>0,
121
- "title"=>"Getting Things Done", "touched"=>"2010-03-10T00:04:09Z",
122
- "lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}</code></pre>
123
-
124
- h2. Contributing
125
-
126
- h3. Getting the code, and running the tests
127
-
128
- <pre><code>git clone git@github.com:kenpratt/wikipedia-client.git
129
- cd wikipedia-client
130
- gem install bundler
131
- bundle exec rake spec</code></pre>
132
-
133
- h3. Pushing a new release of the Gem
134
-
135
- Edit <code>lib/wikipedia/version.rb</code>, changing <code>VERSION</code>.
136
-
137
- Build the gem: <code>bundle exec gem build wikipedia-client.gemspec</code>
138
-
139
- Commit the changes: <code>git commit -a -m 'Version bump to 1.4.0' && git push</code>
140
-
141
- Publish the result to RubyGems: <code>bundle exec gem push wikipedia-client-1.4.0.gem</code>
142
-
143
- h2. Thanks!
144
-
145
- Copyright (c) 2008 [Cyril David], released under the MIT license
146
-
147
- Adopted by Ken Pratt (ken@kenpratt.net) in 2010/03
148
-
149
- h3. Contributors
150
-
151
- Aishwarya Subramanian <aishwarya923@gmail.com>
152
- Bryce <brycedneal@gmail.com>
153
- cdr-data <b_rhettbarber@yahoo.com>
154
- Christian Hellsten <christian.hellsten@gmail.com>
155
- Christopher Quackenbush <christopher@quackenbush.me>
156
- Cyril David
157
- Francesco Serra <afnecors@gmail.com>
158
- Harman Singh
159
- ivobenedito <ivobenedito@gmail.com>
160
- Justin Harrison <justin@matthin.com>
161
- Ken Pratt <ken@kenpratt.net>
162
- Manu Manu <manuisfunny@gmail.com>
163
- Mike Haugland <mike.haugland@bravenet.com>
164
- Pietro F. Menna <pietromenna@yahoo.com>
165
- Sophie Rapoport <sfrapoport@gmail.com>
166
- tsukasaoishi <tsukasa.oishi@gmail.com>
167
- V <thevalentino@gmail.com>
168
- Ilgiz Mustafin <ilgimustafin@gmail.com>