wikipedia-client 1.15.0 → 1.17.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: af50d4fda3d70e5bd837bde17b2ca86ec4c653c92891a5088246772da4ca45b5
4
- data.tar.gz: 6366ad0bf999ed51533fd49963b4fa6d36e7181d49fc9bab227407cc3f76300f
3
+ metadata.gz: 36017e939b6473fd18fa5f2fd9703518d65308da4c945a1fc5684a22c341dc27
4
+ data.tar.gz: 6d0b8ae5850085c7fdebb24a7e6f1906c4df5b2c03ca29566aa010cc0d5bec73
5
5
  SHA512:
6
- metadata.gz: d0f6e70ee49591fb4fb1238cd35ede198ff14e6efd89ddfbc972e4c7b03ff3aeabc2770c80f7981af5ec30d820ffbd5ca4a4870da944686d612134d34dacde87
7
- data.tar.gz: 701089ac1c06f95ea5b67afba9b7d6754c967d0d4411f7b95b3f8a8f456b9adabc4ab67036be5024c70a1d21022144a5e88d4693c76d719ab3ad4bff0cd01e9d
6
+ metadata.gz: 478d443be7e1f2ed909ef247f6ea5dd20ae9b5b06ae2d0205094df8d6ea97849d7cb222aefcd8bfc77eb294106007f24c290217a3530a6629f4a4bbad84c6e6a
7
+ data.tar.gz: c88caabd2ee0b32936211e5c3cc1ce006cb4afa687b5671511df56430e5081b9717f34711e501e9c9e4732028de382f34d7091bda8ddac087c7fbe7cdcee555d
@@ -8,11 +8,11 @@ jobs:
8
8
  name: Ruby ${{ matrix.ruby }}
9
9
  runs-on: ubuntu-latest
10
10
  strategy:
11
- matrix: { ruby: ['2.5', '2.6', '2.7', '3.0'] }
11
+ matrix: { ruby: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2'] }
12
12
 
13
13
  steps:
14
14
  - name: Checkout code
15
- uses: actions/checkout@v2
15
+ uses: actions/checkout@v3
16
16
 
17
17
  - name: Setup Ruby
18
18
  uses: ruby/setup-ruby@v1
data/.rubocop.yml CHANGED
@@ -1,3 +1,6 @@
1
+ AllCops:
2
+ NewCops: disable
3
+
1
4
  Metrics/LineLength:
2
5
  Max: 120
3
6
  AllowURI: true
@@ -5,13 +8,13 @@ Metrics/LineLength:
5
8
  Metrics/MethodLength:
6
9
  Max: 15
7
10
 
8
- Style/SpaceInsideParens:
11
+ Layout/SpaceInsideParens:
9
12
  Enabled: false
10
13
 
11
14
  Style/RescueModifier:
12
15
  Enabled: false
13
16
 
14
- Style/SpaceInsidePercentLiteralDelimiters:
17
+ Layout/SpaceInsidePercentLiteralDelimiters:
15
18
  Enabled: false
16
19
 
17
20
  Style/RegexpLiteral:
@@ -25,3 +28,55 @@ Style/SymbolArray:
25
28
 
26
29
  Metrics/ClassLength:
27
30
  Max: 130
31
+
32
+ # TODO: Remove each of the rules below once fixed.
33
+ Style/FrozenStringLiteralComment:
34
+ Enabled: false
35
+
36
+ Style/StringConcatenation:
37
+ Enabled: false
38
+
39
+ Metrics/BlockLength:
40
+ Enabled: false
41
+
42
+ Style/ExpandPathArguments:
43
+ Enabled: false
44
+
45
+ Lint/MissingCopEnableDirective:
46
+ Enabled: false
47
+
48
+ Style/FormatStringToken:
49
+ Enabled: false
50
+
51
+ Style/RedundantRegexpEscape:
52
+ Enabled: false
53
+
54
+ Naming/MethodParameterName:
55
+ Enabled: false
56
+
57
+ Style/RedundantAssignment:
58
+ Enabled: false
59
+
60
+ Style/SafeNavigation:
61
+ Enabled: false
62
+
63
+ Style/WhileUntilModifier:
64
+ Enabled: false
65
+
66
+ Layout/HashAlignment:
67
+ Enabled: false
68
+
69
+ Layout/EmptyLineAfterGuardClause:
70
+ Enabled: false
71
+
72
+ Layout/LeadingEmptyLines:
73
+ Enabled: false
74
+
75
+ Gemspec/RequiredRubyVersion:
76
+ Enabled: false
77
+
78
+ Style/Encoding:
79
+ Enabled: false
80
+
81
+ Lint/NonDeterministicRequireOrder:
82
+ Enabled: false
data/Gemfile CHANGED
@@ -1,12 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'jeweler'
4
3
  gem 'pry'
5
4
  gem 'rake'
6
5
  gem 'rdoc'
7
6
  gem 'rspec'
8
7
  # FIXME: Remove rubocop version restriction and fix or disable cops
9
- gem 'rubocop', '= 0.48.1'
8
+ gem 'rubocop', '~> 1.22', require: false
10
9
  gem 'thoughtbot-shoulda'
11
10
 
12
11
  gemspec
data/README.md CHANGED
@@ -124,6 +124,29 @@ page.raw_data
124
124
  "lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}
125
125
  ```
126
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
+
127
150
  ## Contributing
128
151
 
129
152
  ### Getting the code, and running the tests
@@ -73,7 +73,7 @@ module Wikipedia
73
73
  end
74
74
 
75
75
  def request( options )
76
- URI.parse( url_for( options ) ).read( 'User-Agent' => @configuration[:user_agent] )
76
+ URI.parse( url_for( options ) ).read( headers )
77
77
  end
78
78
 
79
79
  protected
@@ -114,5 +114,11 @@ module Wikipedia
114
114
  end
115
115
  [h1, h2]
116
116
  end
117
+
118
+ def headers
119
+ {
120
+ 'User-Agent' => @configuration[:user_agent]
121
+ }.merge( @configuration[:headers] )
122
+ end
117
123
  end
118
124
  end
@@ -4,7 +4,8 @@ module Wikipedia
4
4
  protocol: 'https',
5
5
  domain: 'en.wikipedia.org',
6
6
  path: 'w/api.php',
7
- user_agent: 'wikipedia-client/1.7 (https://github.com/kenpratt/wikipedia-client)'
7
+ user_agent: 'wikipedia-client/1.7 (https://github.com/kenpratt/wikipedia-client)',
8
+ headers: {}
8
9
  }.freeze
9
10
 
10
11
  def initialize(configuration = DEFAULT)
@@ -25,6 +26,6 @@ module Wikipedia
25
26
  end
26
27
  end
27
28
 
28
- directives :protocol, :domain, :path, :user_agent
29
+ directives :protocol, :domain, :path, :user_agent, :headers
29
30
  end
30
31
  end
data/lib/wikipedia/url.rb CHANGED
@@ -11,7 +11,12 @@ module Wikipedia
11
11
  return @title if @title
12
12
 
13
13
  uri = URI.parse( @wiki_url )
14
- @title = Addressable::URI.unencode( 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
15
20
  end
16
21
  end
17
22
  end
@@ -1,3 +1,3 @@
1
1
  module Wikipedia
2
- VERSION = '1.15.0'.freeze
2
+ VERSION = '1.17.0'.freeze
3
3
  end
@@ -0,0 +1,2 @@
1
+ # rubocop:disable Naming/FileName
2
+ require 'wikipedia'
data/lib/wikipedia.rb CHANGED
@@ -24,10 +24,10 @@ module Wikipedia
24
24
  end
25
25
 
26
26
  def self.configure(&block)
27
- @configuration.instance_eval(&block)
27
+ configuration.instance_eval(&block)
28
28
  end
29
29
 
30
- # rubocop:disable Style/MethodName
30
+ # rubocop:disable Naming/MethodName
31
31
  def self.Configure(&block)
32
32
  configure(&block)
33
33
  end
@@ -35,9 +35,12 @@ module Wikipedia
35
35
  class << self
36
36
  private
37
37
 
38
- def client
38
+ def configuration
39
39
  @configuration ||= Wikipedia::Configuration.new
40
- @client ||= Wikipedia::Client.new @configuration
40
+ end
41
+
42
+ def client
43
+ @client ||= Wikipedia::Client.new configuration
41
44
  end
42
45
  end
43
46
  end
@@ -1,7 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
  require 'json'
3
3
 
4
- # rubocop:disable Metrics/BlockLength
5
4
  describe Wikipedia::Client, '.find page (mocked)' do
6
5
  before(:each) do
7
6
  @client = Wikipedia::Client.new
@@ -161,7 +160,6 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
161
160
  @client.follow_redirects = true
162
161
  @page = @client.find('Edsger Dijkstra')
163
162
  [
164
- '/commons/5/57/Dijkstra_Animation.gif',
165
163
  '/commons/c/c9/Edsger_Dijkstra_1994.jpg',
166
164
  '/commons/d/d9/Edsger_Wybe_Dijkstra.jpg'
167
165
  ].each do |image|
@@ -173,7 +171,6 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
173
171
  @client.follow_redirects = true
174
172
  @page = @client.find('Edsger Dijkstra')
175
173
  [
176
- '/commons/thumb/5/57/Dijkstra_Animation.gif/200px-Dijkstra_Animation.gif',
177
174
  '/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/200px-Edsger_Dijkstra_1994.jpg',
178
175
  '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/200px-Edsger_Wybe_Dijkstra.jpg'
179
176
  ].each do |image|
@@ -185,7 +182,6 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
185
182
  @client.follow_redirects = true
186
183
  @page = @client.find('Edsger Dijkstra')
187
184
  [
188
- '/commons/thumb/5/57/Dijkstra_Animation.gif/100px-Dijkstra_Animation.gif',
189
185
  '/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/100px-Edsger_Dijkstra_1994.jpg',
190
186
  '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/100px-Edsger_Wybe_Dijkstra.jpg'
191
187
  ].each do |image|
@@ -196,7 +192,7 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
196
192
  it 'should collect the main image thumburl' do
197
193
  @client.follow_redirects = true
198
194
  @page = @client.find('Edsger Dijkstra')
199
- image = '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/150px-Edsger_Wybe_Dijkstra.jpg'
195
+ image = '/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/200px-Edsger_Wybe_Dijkstra.jpg'
200
196
  expect(@page.main_image_thumburl).to include('https://upload.wikimedia.org/wikipedia' + image)
201
197
  end
202
198
  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
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.15.0
4
+ version: 1.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril David
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2021-07-06 00:00:00.000000000 Z
16
+ date: 2023-02-22 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable
@@ -46,6 +46,7 @@ files:
46
46
  - Rakefile
47
47
  - init.rb
48
48
  - install.rb
49
+ - lib/wikipedia-client.rb
49
50
  - lib/wikipedia.rb
50
51
  - lib/wikipedia/client.rb
51
52
  - lib/wikipedia/configuration.rb