Module: Timdex
- Defined in:
- lib/timdex.rb,
lib/timdex/version.rb
Overview
Timdex modules wraps interaction with the public TIMDEX API
Constant Summary collapse
- TIMDEX_BASE =
'https://timdex.mit.edu/api'.freeze
- TIMDEX_VERSION =
'/v1'.freeze
- TIMDEX_URL =
TIMDEX_BASE + TIMDEX_VERSION
- TIMDEX_USER =
ENV['TIMDEX_USER']
- TIMDEX_PASS =
ENV['TIMDEX_PASS']
- VERSION =
"0.1.2"
Class Method Summary collapse
- .auth ⇒ Object
- .parse_record(json_result, status) ⇒ Object
- .parse_results(json_results, status) ⇒ Object
- .ping ⇒ Object
- .retrieve(id) ⇒ Object
- .search(term) ⇒ Object
- .setup ⇒ Object
- .validate_jwt ⇒ Object
Class Method Details
.auth ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/timdex.rb', line 26 def self.auth setup @conn.basic_auth(TIMDEX_USER, TIMDEX_PASS) response = @conn.get('/api/v1/auth') @jwt = JSON.parse(response.body) end |
.parse_record(json_result, status) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/timdex.rb', line 58 def self.parse_record(json_result, status) response = {} response['status'] = status response['record'] = Record.new(json_result) response['raw'] = json_result response end |
.parse_results(json_results, status) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/timdex.rb', line 66 def self.parse_results(json_results, status) results = {} results['status'] = status results['hits'] = json_results['hits'] records = [] json_results['results'].each do |result| records << Record.new(result) end results['records'] = records results end |
.ping ⇒ Object
20 21 22 23 24 |
# File 'lib/timdex.rb', line 20 def self.ping setup response = @conn.get('/api/v1/ping') JSON.parse(response.body) end |
.retrieve(id) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/timdex.rb', line 46 def self.retrieve(id) setup auth unless validate_jwt @conn.token_auth(@jwt) response = @conn.get do |req| req.url '/api/v1/record/' + id req.headers['Authorization'] = "Bearer #{@jwt}" end json_result = JSON.parse(response.body) parse_record(json_result, response.status) end |
.search(term) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/timdex.rb', line 34 def self.search(term) setup auth unless validate_jwt @conn.token_auth(@jwt) response = @conn.get do |req| req.url '/api/v1/search', q: term req.headers['Authorization'] = "Bearer #{@jwt}" end json_results = JSON.parse(response.body) parse_results(json_results, response.status) end |
.setup ⇒ Object
16 17 18 |
# File 'lib/timdex.rb', line 16 def self.setup @conn = Faraday.new(url: TIMDEX_URL) end |
.validate_jwt ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/timdex.rb', line 78 def self.validate_jwt return false unless @jwt decoded_token = JWT.decode(@jwt, nil, false) expires = decoded_token[0]['exp'] return @jwt if Time.now.to_i < expires @jwt = nil end |