54 lines
1.2 KiB
Ruby
54 lines
1.2 KiB
Ruby
class TissCrawler
|
|
|
|
require 'httparty'
|
|
|
|
$host = 'https://tiss.tuwien.ac.at'
|
|
|
|
def self.search(params)
|
|
api = params[:api]
|
|
search_parameter = params[:search_parameter]
|
|
search_term = params[:search_term].parameterize(separator: '+')
|
|
url = $host + api + '?' + search_parameter + '=' + search_term
|
|
puts(url)
|
|
|
|
response = HTTParty.get(url)
|
|
JSON.parse(response.body)["results"]
|
|
end
|
|
|
|
def self.get_details(params)
|
|
api = params[:api]
|
|
id = params[:tiss_id]
|
|
url = $host + api + id
|
|
puts(url)
|
|
|
|
response = HTTParty.get(url)
|
|
JSON.parse(response.body)
|
|
end
|
|
|
|
def self.get_course_details(params)
|
|
api = params[:api]
|
|
number = params[:number]
|
|
semester = params[:semester]
|
|
url = $host + api + number + '-' + semester
|
|
puts(url)
|
|
|
|
response = HTTParty.get(url)
|
|
response.parsed_response['tuvienna']['course']
|
|
end
|
|
|
|
def self.get_host
|
|
$host
|
|
end
|
|
|
|
def self.get_oid_name(item)
|
|
# Fetches a person's name based on the org id
|
|
# Example: https://tiss.tuwien.ac.at/api/person/v22/oid/250197
|
|
api = '/api/person/v22/oid/'
|
|
url = $host + api + item
|
|
puts(url)
|
|
|
|
response = HTTParty.get(url)
|
|
response.parsed_response['first_name'] + ' ' + response.parsed_response['last_name']
|
|
end
|
|
|
|
end |