wikipedia-client 1.14.0 → 1.15.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: c57749d6568f7bb54afd4bd4e76046f0929e4a9d65a41f361fdf173acc5b8eb7
4
- data.tar.gz: 4847192d06827db273c03a24729045afa385503992bb054ea1473340b43bb85b
3
+ metadata.gz: af50d4fda3d70e5bd837bde17b2ca86ec4c653c92891a5088246772da4ca45b5
4
+ data.tar.gz: 6366ad0bf999ed51533fd49963b4fa6d36e7181d49fc9bab227407cc3f76300f
5
5
  SHA512:
6
- metadata.gz: 298686f89d1f5fe977efb1764844dbeb8432cd4bcf3f1c7143e7597c8d5a316d0b7951a6ad603f4804bcab1f2101e41cd1d90ae86bb261c962c345d528e609b7
7
- data.tar.gz: eb81094561f2f6b9a1d72a97723014018775fdbf165fe123d7f258b71eea1a2e5f2dc5b27f50fb474966d25e4436e90c7d86b7cc022db6d479bf5daa524285e0
6
+ metadata.gz: d0f6e70ee49591fb4fb1238cd35ede198ff14e6efd89ddfbc972e4c7b03ff3aeabc2770c80f7981af5ec30d820ffbd5ca4a4870da944686d612134d34dacde87
7
+ data.tar.gz: 701089ac1c06f95ea5b67afba9b7d6754c967d0d4411f7b95b3f8a8f456b9adabc4ab67036be5024c70a1d21022144a5e88d4693c76d719ab3ad4bff0cd01e9d
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
- # Wikipedia API CLient
1
+ # Wikipedia API Client
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/wikipedia-client.svg)](https://badge.fury.io/rb/wikipedia-client)
4
4
  [![Build Status](https://github.com/kenpratt/wikipedia-client/workflows/Test/badge.svg)](https://github.com/kenpratt/wikipedia-client/actions?query=workflow%3ATest)
5
5
 
6
-
7
6
  Allows you to get wikipedia content through their API. This uses the
8
7
  alpha API, not the deprecated query.php API type.
9
8
 
@@ -79,6 +78,8 @@ page.langlinks
79
78
 
80
79
  ## Configuration
81
80
 
81
+ ### Global
82
+
82
83
  This is by default configured like this:
83
84
 
84
85
  ```ruby
@@ -88,6 +89,21 @@ Wikipedia.configure {
88
89
  }
89
90
  ```
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
+
91
107
  ## Advanced
92
108
 
93
109
  See the API spec at <http://en.wikipedia.org/w/api.php>.
@@ -116,43 +132,47 @@ page.raw_data
116
132
  git clone git@github.com:kenpratt/wikipedia-client.git
117
133
  cd wikipedia-client
118
134
  bundle install
119
- bundle exec spec
135
+ bundle exec rspec
120
136
  ```
121
137
 
122
138
  ### Pushing a new release of the Gem
123
139
 
124
140
  1. Edit `lib/wikipedia/version.rb`, changing `VERSION`.
125
141
  2. Test that the current branch will work as a gem, by testing in an external directory:
126
- 1. Make a test directory.
127
- 2. Add a `Gemfile` with:
128
- ```
129
- source 'https://rubygems.org'
142
+ 3. Make a test directory.
143
+ 4. Add a `Gemfile` with:
130
144
 
131
- gem 'wikipedia-client', :path => '/path/to/local/wikipedia-client'
132
- ```
145
+ ```
146
+ source 'https://rubygems.org'
133
147
 
134
- 3. And a `test.rb` file with:
135
- ```
136
- require 'wikipedia'
148
+ gem 'wikipedia-client', :path => '/path/to/local/wikipedia-client'
149
+ ```
137
150
 
138
- page = Wikipedia.find('Ruby')
139
- puts page.title
140
- ```
151
+ 5. And a `test.rb` file with:
152
+
153
+ ```
154
+ require 'wikipedia'
155
+
156
+ page = Wikipedia.find('Ruby')
157
+ puts page.title
158
+ ```
159
+
160
+ 6. And then run `bundle install && bundle exec ruby test.rb`
161
+ 7. Build the gem: `bundle exec gem build wikipedia-client.gemspec`.
162
+ 8. Commit the changes: `git commit -a -m 'Version bump to 1.4.0' && git tag v1.4.0 && git push && git push --tag`
163
+ 9. Publish the result to RubyGems: `bundle exec gem push wikipedia-client-1.4.0.gem`.
164
+ 10. Test the released gem in an external directory:
165
+ 11. Make a test directory.
166
+ 12. Add a `Gemfile` with:
141
167
 
142
- 4. And then run `bundle install && bundle exec ruby test.rb`
143
- 3. Build the gem: `bundle exec gem build wikipedia-client.gemspec`.
144
- 4. Commit the changes: `git commit -a -m 'Version bump to 1.4.0' && git tag v1.4.0 && git push && git push --tag`
145
- 5. Publish the result to RubyGems: `bundle exec gem push wikipedia-client-1.4.0.gem`.
146
- 6. Test the released gem in an external directory:
147
- 1. Make a test directory.
148
- 2. Add a `Gemfile` with:
149
168
  ```
150
169
  source 'https://rubygems.org'
151
170
 
152
171
  gem 'wikipedia-client'
153
172
  ```
154
173
 
155
- 3. And a `test.rb` file with:
174
+ 13. And a `test.rb` file with:
175
+
156
176
  ```
157
177
  require 'wikipedia'
158
178
 
@@ -160,7 +180,7 @@ bundle exec spec
160
180
  puts page.title
161
181
  ```
162
182
 
163
- 4. And then run `bundle install && bundle exec ruby test.rb`
183
+ 14. And then run `bundle install && bundle exec ruby test.rb`
164
184
 
165
185
  ## Thanks!
166
186
 
data/lib/wikipedia.rb CHANGED
@@ -24,7 +24,7 @@ module Wikipedia
24
24
  end
25
25
 
26
26
  def self.configure(&block)
27
- Configuration.instance.instance_eval(&block)
27
+ @configuration.instance_eval(&block)
28
28
  end
29
29
 
30
30
  # rubocop:disable Style/MethodName
@@ -32,20 +32,12 @@ module Wikipedia
32
32
  configure(&block)
33
33
  end
34
34
 
35
- configure do
36
- protocol 'https'
37
- domain 'en.wikipedia.org'
38
- path 'w/api.php'
39
- user_agent(
40
- 'wikipedia-client/1.7 (https://github.com/kenpratt/wikipedia-client)'
41
- )
42
- end
43
-
44
35
  class << self
45
36
  private
46
37
 
47
38
  def client
48
- @client ||= Wikipedia::Client.new
39
+ @configuration ||= Wikipedia::Configuration.new
40
+ @client ||= Wikipedia::Client.new @configuration
49
41
  end
50
42
  end
51
43
  end
@@ -11,7 +11,8 @@ module Wikipedia
11
11
 
12
12
  attr_accessor :follow_redirects
13
13
 
14
- def initialize
14
+ def initialize(configuration = Wikipedia::Configuration.new)
15
+ @configuration = configuration
15
16
  self.follow_redirects = true
16
17
  end
17
18
 
@@ -72,16 +73,16 @@ module Wikipedia
72
73
  end
73
74
 
74
75
  def request( options )
75
- URI.parse( url_for( options ) ).read( 'User-Agent' => Configuration[:user_agent] )
76
+ URI.parse( url_for( options ) ).read( 'User-Agent' => @configuration[:user_agent] )
76
77
  end
77
78
 
78
79
  protected
79
80
 
80
81
  def configuration_options
81
82
  {
82
- protocol: Configuration[:protocol],
83
- domain: Configuration[:domain],
84
- path: Configuration[:path]
83
+ protocol: @configuration[:protocol],
84
+ domain: @configuration[:domain],
85
+ path: @configuration[:path]
85
86
  }
86
87
  end
87
88
 
@@ -1,8 +1,19 @@
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
+ }.freeze
9
+
10
+ def initialize(configuration = DEFAULT)
11
+ DEFAULT.merge(configuration).each { |args| send(*args) }
12
+ end
13
+
14
+ def [](directive)
15
+ send(directive)
16
+ end
6
17
 
7
18
  def self.directives(*directives)
8
19
  directives.each do |directive|
@@ -14,10 +25,6 @@ module Wikipedia
14
25
  end
15
26
  end
16
27
 
17
- def self.[](directive)
18
- instance.send(directive)
19
- end
20
-
21
28
  directives :protocol, :domain, :path, :user_agent
22
29
  end
23
30
  end
@@ -1,3 +1,3 @@
1
1
  module Wikipedia
2
- VERSION = '1.14.0'.freeze
2
+ VERSION = '1.15.0'.freeze
3
3
  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
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.14.0
4
+ version: 1.15.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-04-29 00:00:00.000000000 Z
16
+ date: 2021-07-06 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable