wikipedia-client 1.15.0 → 1.17.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: 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