wikipedia-client 1.12.0 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
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>