From ba6d9b24a447fba00e26cdb209152b85d8d189ee Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Sat, 9 May 2020 15:56:44 +0200 Subject: [PATCH] Implement detail page for courses --- app/controllers/courses_crawler_controller.rb | 13 +++++++++++++ app/views/courses_crawler/show_detail.html.erb | 6 ++++++ lib/tiss/tiss_crawler.rb | 11 +++++++++++ 3 files changed, 30 insertions(+) diff --git a/app/controllers/courses_crawler_controller.rb b/app/controllers/courses_crawler_controller.rb index aa13750..d1459bf 100644 --- a/app/controllers/courses_crawler_controller.rb +++ b/app/controllers/courses_crawler_controller.rb @@ -11,6 +11,19 @@ class CoursesCrawlerController < TissCrawlerController end def show_detail + params[:api] = '/api/course/' + regex = params[:detail_url].match(/courseNr=(?\d{6})/) + params[:number] = regex[:number] + regex = params[:detail_url].match(/semester=(?\d{4}[SW])/) + params[:semester] = regex[:semester] + + puts params + + # TissCrawler fetches the course's detail information + @course = TissCrawler.get_course_details(params) + puts @course + # Host is needed for image rendering + @host = TissCrawler.get_host end def add_to_fav diff --git a/app/views/courses_crawler/show_detail.html.erb b/app/views/courses_crawler/show_detail.html.erb index e69de29..bc59d07 100644 --- a/app/views/courses_crawler/show_detail.html.erb +++ b/app/views/courses_crawler/show_detail.html.erb @@ -0,0 +1,6 @@ +<% if @course != nil %> + <%-# TODO parse more fields and style them appropriately -%> +

<%= @course['tuvienna']['course']['title']['en'] %>

+
<%= @course['tuvienna']['course']['courseType'] %> <%= @course['tuvienna']['course']['semesterCode'] %>
+ <%= button_to 'Add to favorites', action: :add_to_fav, number: @course['tuvienna']['course']['courseNumber'], semester: @course['tuvienna']['course']['semesterCode'] %> +<% end %> diff --git a/lib/tiss/tiss_crawler.rb b/lib/tiss/tiss_crawler.rb index dfabff7..ba4bbac 100644 --- a/lib/tiss/tiss_crawler.rb +++ b/lib/tiss/tiss_crawler.rb @@ -25,6 +25,17 @@ class TissCrawler 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 + end + def self.get_host $host end