Class: Springer

Inherits:
Object
  • Object
show all
Defined in:
lib/springer.rb

Constant Summary collapse

API_PATH =

API to Springer search API

Example:

>> Springer.new('[METADATA KEY]', '[IMAGES_KEY]', '[OPENACCESS_KEY]',
    '[Referer]').search('nano fibers')
=> [ #<Result:...>, ... ]

Arguments:

metadata_key: (String)
images_key: (String)
openaccess_key: (String)
referer: (String)
num_results: (Integer+)
"http://api.springer.com/metadata/json"
API_URI =
URI.parse(API_PATH)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metadata_key, images_key = '', openaccess_key = '', referer = '', num_results = 50) ⇒ Springer

Returns a new instance of Springer.



31
32
33
34
35
36
37
38
# File 'lib/springer.rb', line 31

def initialize(, images_key='', openaccess_key='', referer='',
    num_results=50)
  @metadata_key = 
  @images_key = images_key
  @openaccess_key = openaccess_key
  @referer = referer
  @num_results = num_results < 100 ? num_results : 100
end

Instance Attribute Details

#images_keyObject

Returns the value of attribute images_key.



28
29
30
# File 'lib/springer.rb', line 28

def images_key
  @images_key
end

#metadata_keyObject

Returns the value of attribute metadata_key.



28
29
30
# File 'lib/springer.rb', line 28

def 
  @metadata_key
end

#num_resultsObject

Returns the value of attribute num_results.



28
29
30
# File 'lib/springer.rb', line 28

def num_results
  @num_results
end

#openaccess_keyObject

Returns the value of attribute openaccess_key.



28
29
30
# File 'lib/springer.rb', line 28

def openaccess_key
  @openaccess_key
end

#refererObject

Returns the value of attribute referer.



28
29
30
# File 'lib/springer.rb', line 28

def referer
  @referer
end

Instance Method Details

#create_abstract(result) ⇒ Object

TODO search images and openaccess apis



60
61
62
63
64
65
66
67
# File 'lib/springer.rb', line 60

def create_abstract(result)
  abstract = "#{result['publicationName']} &ndash; "
  result['creators'].each_with_index do |creator, i|
    abstract += " and" if i > 0
    abstract += " #{creator['creator']}"
  end
  return abstract
end

#search(query) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/springer.rb', line 40

def search(query)
  api = API_URI
  api_call = Net::HTTP.new(api.host)
  params = "?p=#{@num_results}&q=#{CGI.escape(query)}"
  params += "&api_key=#{@metadata_key}"
  response = api_call.get2(api.path + params, { 'Referer' => @referer })
  return nil if response.class.superclass == Net::HTTPServerError
  response = JSON.parse(response.body)
  response['records'].map do |result|
    SpringerResult.new(
      result['title'],
      create_abstract(result),
      result['url'],
      result['publicationDate']
    )
  end
end