springer 0.0.3 → 0.0.4

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.
Files changed (3) hide show
  1. data/lib/springer.rb +18 -10
  2. metadata +18 -39
  3. data/lib/result.rb +0 -10
data/lib/springer.rb CHANGED
@@ -4,11 +4,16 @@ require 'net/http'
4
4
  require 'result'
5
5
  require 'uri'
6
6
 
7
+
8
+ SpringerResult = Struct.new :title, :abstract, :url, :date
9
+
10
+
7
11
  class Springer
8
12
  # API to Springer search API
9
13
  #
10
14
  # Example:
11
- # >> Springer.new('[METADATA KEY]', '[IMAGES_KEY]', '[OPENACCESS_KEY]', '[Referer]').search('nano fibers')
15
+ # >> Springer.new('[METADATA KEY]', '[IMAGES_KEY]', '[OPENACCESS_KEY]',
16
+ # '[Referer]').search('nano fibers')
12
17
  # => [ #<Result:...>, ... ]
13
18
  #
14
19
  # Arguments:
@@ -21,9 +26,11 @@ class Springer
21
26
  API_PATH = "http://api.springer.com/metadata/json"
22
27
  API_URI = URI.parse(API_PATH)
23
28
 
24
- attr_accessor :metadata_key, :images_key, :openaccess_key, :referer, :num_results
29
+ attr_accessor :metadata_key, :images_key, :openaccess_key, :referer,
30
+ :num_results
25
31
 
26
- def initialize(metadata_key, images_key='', openaccess_key='', referer='', num_results=50)
32
+ def initialize(metadata_key, images_key='', openaccess_key='', referer='',
33
+ num_results=50)
27
34
  @metadata_key = metadata_key
28
35
  @images_key = images_key
29
36
  @openaccess_key = openaccess_key
@@ -34,17 +41,18 @@ class Springer
34
41
  def search(query)
35
42
  api = API_URI
36
43
  api_call = Net::HTTP.new(api.host)
37
- params = "?p=#{@num_results}&q=#{CGI.escape(query)}&api_key=#{@metadata_key}"
44
+ params = "?p=#{@num_results}&q=#{CGI.escape(query)}"
45
+ params += "&api_key=#{@metadata_key}"
38
46
  response = api_call.get2(api.path + params, { 'Referer' => @referer })
39
47
  return nil if response.class.superclass == Net::HTTPServerError
40
48
  response = JSON.parse(response.body)
41
49
  response['records'].map do |result|
42
- Result.new({
43
- :title => result['title'],
44
- :abstract => create_abstract(result),
45
- :url => result['url'],
46
- :date => result['publicationDate']
47
- })
50
+ SpringerResult.new(
51
+ result['title'],
52
+ create_abstract(result),
53
+ result['url'],
54
+ result['publicationDate']
55
+ )
48
56
  end
49
57
  end
50
58
 
metadata CHANGED
@@ -1,66 +1,45 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: springer
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Peter Lubell-Doughtie
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-05 00:00:00 Z
12
+ date: 2012-06-09 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description: API for Springer search
22
15
  email: peter@helioid.com
23
16
  executables: []
24
-
25
17
  extensions: []
26
-
27
18
  extra_rdoc_files: []
28
-
29
- files:
19
+ files:
30
20
  - lib/springer.rb
31
- - lib/result.rb
32
21
  homepage: http://www.helioid.com/
33
22
  licenses: []
34
-
35
23
  post_install_message:
36
24
  rdoc_options: []
37
-
38
- require_paths:
25
+ require_paths:
39
26
  - lib
40
- required_ruby_version: !ruby/object:Gem::Requirement
27
+ required_ruby_version: !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
49
- required_rubygems_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
34
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
58
39
  requirements: []
59
-
60
40
  rubyforge_project:
61
- rubygems_version: 1.8.15
41
+ rubygems_version: 1.8.24
62
42
  signing_key:
63
43
  specification_version: 3
64
44
  summary: API for Springer search
65
45
  test_files: []
66
-
data/lib/result.rb DELETED
@@ -1,10 +0,0 @@
1
- class Result
2
- attr_accessor :title, :abstract, :url, :date
3
-
4
- def initialize(options)
5
- options.each do |key, value|
6
- self.send("#{key}=", value)
7
- end
8
- end
9
- end
10
-