class Timdex
Timdex
modules wraps interaction with the public TIMDEX API
Constants
- VERSION
Public Class Methods
new(username, password)
click to toggle source
# File lib/timdex.rb, line 10 def initialize(username, password) @jwt = false @username = username @password = password end
Public Instance Methods
auth()
click to toggle source
# File lib/timdex.rb, line 27 def auth setup @conn.basic_auth(@username, @password) response = @conn.get('/api/v1/auth') @jwt = JSON.parse(response.body) end
parse_record(json_result, status)
click to toggle source
# File lib/timdex.rb, line 59 def 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)
click to toggle source
# File lib/timdex.rb, line 67 def 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()
click to toggle source
# File lib/timdex.rb, line 21 def ping setup response = @conn.get('/api/v1/ping') JSON.parse(response.body) end
retrieve(id)
click to toggle source
# File lib/timdex.rb, line 47 def 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)
click to toggle source
# File lib/timdex.rb, line 35 def 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()
click to toggle source
# File lib/timdex.rb, line 16 def setup timdex_url = ENV.fetch('TIMDEX_URL', 'https://timdex.mit.edu') @conn = Faraday.new(url: timdex_url) end
validate_jwt()
click to toggle source
# File lib/timdex.rb, line 79 def 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