Class: Timdex
- Inherits:
-
Object
- Object
- Timdex
- Defined in:
- lib/timdex.rb,
lib/timdex/version.rb
Overview
Timdex modules wraps interaction with the public TIMDEX API
Constant Summary collapse
- VERSION =
"0.1.4"
Instance Method Summary collapse
- #auth ⇒ Object
-
#initialize(username, password) ⇒ Timdex
constructor
A new instance of Timdex.
- #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
Constructor Details
#initialize(username, password) ⇒ Timdex
Returns a new instance of Timdex.
10 11 12 13 14 |
# File 'lib/timdex.rb', line 10 def initialize(username, password) @jwt = false @username = username @password = password end |
Instance Method Details
#auth ⇒ Object
27 28 29 30 31 32 33 |
# 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) ⇒ Object
59 60 61 62 63 64 65 |
# 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) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 |
# 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 ⇒ Object
21 22 23 24 25 |
# File 'lib/timdex.rb', line 21 def ping setup response = @conn.get('/api/v1/ping') JSON.parse(response.body) end |
#retrieve(id) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# 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 ⇒ Object
16 17 18 19 |
# 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 ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# 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 |