Class: CrossrefQuery
- Inherits:
-
Sequel::Model
- Object
- Sequel::Model
- CrossrefQuery
- Defined in:
- model/crossref.rb
Overview
Class that query Crossref for a given text and stores the result
Class Method Summary collapse
-
.generate_query_from_text(t) ⇒ Object
Takes a text and returns a processed JSON.
Class Method Details
.generate_query_from_text(t) ⇒ Object
Takes a text and returns a processed JSON
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'model/crossref.rb', line 94 def self.generate_query_from_text(t) require 'digest' digest=Digest::SHA256.hexdigest t cq=CrossrefQuery[digest] if !cq url="https://search.crossref.org/dois?q=#{CGI.escape(t)}" uri = URI(url) res = Net::HTTP.get_response(uri) #$log.info(res) if res.code!="200" raise BadCrossrefResponseError, "El text #{t} no entrego una respuesta adecuada. Fue #{res.code}, #{res.body}" end json_raw = res.body CrossrefQuery.insert(:id=>digest.force_encoding(Encoding::UTF_8),:query=>t.force_encoding(Encoding::UTF_8),:json=>json_raw.force_encoding(Encoding::UTF_8)) else json_raw=cq[:json] end JSON.parse(json_raw) end |