tiss2go/app/controllers/crawlers/courses_crawler_controller.rb
Pfingstfrosch cfcbf5acdb Ad requirement 4
I have no idea how this requirement shall be implemented at the end, but at first step, the tiss_crawler.rb lib checks if the search_term is an empty string and returns an error msg if found

otherwise it returns the result, but appended to 'content' key
2020-05-31 15:48:17 +02:00

86 lines
2.8 KiB
Ruby

class Crawlers::CoursesCrawlerController < Crawlers::TissCrawlerController
def show_basic
params[:api] = '/api/search/course/v1.0/quickSearch'
params[:search_parameter] = 'searchterm'
puts params[:search_context]
@host = TissCrawler.host
# TissCrawler performs general search over the available courses
result = TissCrawler.search(params)
if result.has_key? :error
flash[:alert] = 'Something went wrong! ' + result[:error]
redirect_back(fallback_location: crawlers_tiss_crawler_search_path)
else
# TissCrawler performs general search over the available people
@courses = result[:content]
end
end
def show_detail
params[:api] = '/api/course/'
if (params[:number] || params[:semester]) == nil
regex = params[:detail_url].match(/courseNr=(?<number>\S{6})/)
params[:number] = regex[:number]
regex = params[:detail_url].match(/semester=(?<semester>\d{4}[SW])/)
params[:semester] = regex[:semester]
end
puts params
# TissCrawler fetches the course's detail information
@course = TissCrawler.get_course_details(params)
puts @course
# Get all the org ids into one array
@lecturers_oid = @course['lecturers']['oid']
@lecturers_names = []
puts @lecturers_oid
if @lecturers_oid != nil
if @lecturers_oid.is_a?(Array)
# In case @lecturers_oid contains multiple items
@lecturers_oid.each do |item|
# For each org id get the associated name
puts TissCrawler.get_oid_name(item)
@lecturers_names << (TissCrawler.get_oid_name(item))
end
else
# In case @lecturers_oid only contains one item
@lecturers_names << (TissCrawler.get_oid_name(@lecturers_oid))
end
end
# Host is needed for image rendering
@host = TissCrawler.host
end
def add_to_fav
params[:api] = '/api/course/'
if (params[:number] || params[:semester]) == nil
regex = params[:detail_url].match(/courseNr=(?<number>\S{6})/)
params[:number] = regex[:number]
regex = params[:detail_url].match(/semester=(?<semester>\d{4}[SW])/)
params[:semester] = regex[:semester]
end
@course = TissCrawler.get_course_details(params)
# create stores the object to the db after creation
favorite_hash = {number: @course['courseNumber'],
semester: @course['semesterCode'],
title: @course['title']['de'],
# the user who is currently active
user_id: current_user.id}
if FavoriteCourse.create(favorite_hash).valid?
FavoriteCourse.create(favorite_hash)
flash[:alert] = 'Course added to your favorites!'
else
flash[:alert] = 'Course is already favorited!'
end
redirect_back(fallback_location: search)
end
end