diff --git a/app/assets/stylesheets/favorites.scss b/app/assets/stylesheets/favorites.scss index 2baf7cb..8cb2d3a 100644 --- a/app/assets/stylesheets/favorites.scss +++ b/app/assets/stylesheets/favorites.scss @@ -22,4 +22,25 @@ a:hover, a:active { background-color: #009688; } +} + +.thumb { + width: 3em; +} + +.table_wrapper { + overflow-x: auto; + + table { + border-collapse: collapse; + width: 100%; + } + + th, td { + padding: 8px; + text-align: left; + border-bottom: 1px solid #ddd; + } + + } \ No newline at end of file diff --git a/app/assets/stylesheets/theses_crawler.scss b/app/assets/stylesheets/theses_crawler.scss index 25c9a4a..2c28234 100644 --- a/app/assets/stylesheets/theses_crawler.scss +++ b/app/assets/stylesheets/theses_crawler.scss @@ -1,3 +1,49 @@ -// Place all the styles related to the ThesesCrawler controller here. +// Place all the styles related to the thesesCrawler controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ + +.theses-list { + list-style: none; + padding: 0; + margin: 0; + + a { + text-decoration: none; + color: black; + } + + .thesis { + line-height: 72px; + width: 100%; + padding: 8px 0 8px 0; + + .list-link { + float: left; + width: 89%; + height: 72px; + } + + .thesis-title { + width: 100%; + display: inline-block; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .add-to-fav { + display: inline-block; + vertical-align: middle; + float: right; + width: 36px; + height: 36px; + + svg { + width: 100%; + height: auto; + vertical-align: middle; + } + } + } +} diff --git a/app/controllers/crawlers/courses_crawler_controller.rb b/app/controllers/crawlers/courses_crawler_controller.rb index 69f47ea..3526a4f 100644 --- a/app/controllers/crawlers/courses_crawler_controller.rb +++ b/app/controllers/crawlers/courses_crawler_controller.rb @@ -1,4 +1,4 @@ -class Crawlers::CoursesCrawlerController < TissCrawlerController +class Crawlers::CoursesCrawlerController < Crawlers::TissCrawlerController def show_basic params[:api] = '/api/search/course/v1.0/quickSearch' @@ -12,10 +12,12 @@ class Crawlers::CoursesCrawlerController < TissCrawlerController def show_detail params[:api] = '/api/course/' - regex = params[:detail_url].match(/courseNr=(?\S{6})/) - params[:number] = regex[:number] - regex = params[:detail_url].match(/semester=(?\d{4}[SW])/) - params[:semester] = regex[:semester] + if (params[:number] || params[:semester]) == nil + regex = params[:detail_url].match(/courseNr=(?\S{6})/) + params[:number] = regex[:number] + regex = params[:detail_url].match(/semester=(?\d{4}[SW])/) + params[:semester] = regex[:semester] + end puts params @@ -27,11 +29,19 @@ class Crawlers::CoursesCrawlerController < TissCrawlerController @lecturers_oid = @course['lecturers']['oid'] @lecturers_names = [] + puts @lecturers_oid + if @lecturers_oid != nil - @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)) + 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 @@ -40,6 +50,29 @@ class Crawlers::CoursesCrawlerController < TissCrawlerController end def add_to_fav + params[:api] = '/api/course/' + if (params[:number] || params[:semester]) == nil + regex = params[:detail_url].match(/courseNr=(?\S{6})/) + params[:number] = regex[:number] + regex = params[:detail_url].match(/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 diff --git a/app/controllers/crawlers/people_crawler_controller.rb b/app/controllers/crawlers/people_crawler_controller.rb index a9de30a..4117991 100644 --- a/app/controllers/crawlers/people_crawler_controller.rb +++ b/app/controllers/crawlers/people_crawler_controller.rb @@ -1,4 +1,4 @@ -class Crawlers::PeopleCrawlerController < TissCrawlerController +class Crawlers::PeopleCrawlerController < Crawlers::TissCrawlerController def show_basic params[:api] = '/api/person/v22/psuche' @@ -27,14 +27,19 @@ class Crawlers::PeopleCrawlerController < TissCrawlerController @person = TissCrawler.get_details(params) # create stores the object to the db after creation - if FavoritePerson.create(tiss_id: @person['tiss_id'], first_name: @person['first_name'], last_name: @person['last_name'], picture_uri: @person['picture_uri']).valid? - FavoritePerson.create(tiss_id: @person['tiss_id'], first_name: @person['first_name'], last_name: @person['last_name'], picture_uri: @person['picture_uri']) - flash[:alert] = "Person added to your favorites!" - redirect_back(fallback_location: search) + favorite_hash = { tiss_id: @person['tiss_id'], + # the user who is currently active + user_id: current_user.id, + first_name: @person['first_name'], + last_name: @person['last_name'], + picture_uri: @person['picture_uri'] } + if FavoritePerson.create(favorite_hash).valid? + FavoritePerson.create(favorite_hash) + flash[:alert] = 'Person added to your favorites!' else - flash[:alert] = "Person is already favorited!" - redirect_back(fallback_location: search) + flash[:alert] = 'Person is already favorited!' end + redirect_back(fallback_location: search) end end diff --git a/app/controllers/crawlers/projects_crawler_controller.rb b/app/controllers/crawlers/projects_crawler_controller.rb index d5f9089..13688c9 100644 --- a/app/controllers/crawlers/projects_crawler_controller.rb +++ b/app/controllers/crawlers/projects_crawler_controller.rb @@ -1,4 +1,4 @@ -class Crawlers::ProjectsCrawlerController < TissCrawlerController +class Crawlers::ProjectsCrawlerController < Crawlers::TissCrawlerController def show_basic end diff --git a/app/controllers/crawlers/theses_crawler_controller.rb b/app/controllers/crawlers/theses_crawler_controller.rb index 9e2df8e..a90ca3a 100644 --- a/app/controllers/crawlers/theses_crawler_controller.rb +++ b/app/controllers/crawlers/theses_crawler_controller.rb @@ -1,13 +1,42 @@ -class Crawlers::ThesesCrawlerController < TissCrawlerController +class Crawlers::ThesesCrawlerController < Crawlers::TissCrawlerController def show_basic + params[:api] = '/api/search/thesis/v1.0/quickSearch' + params[:search_parameter] = 'searchterm' + puts params[:search_context] + @host = TissCrawler.get_host + # TissCrawler performs general search over the available theses + @theses = TissCrawler.search(params) end def show_detail + params[:api] = '/api/thesis/' + @id = params[:id] + + puts params + # TissCrawler fetches the thesis' detail information + @thesis = TissCrawler.get_thesis_details(params) + # Host is needed for image rendering + @host = TissCrawler.get_host end def add_to_fav + params[:api] = '/api/thesis/' + puts params[:id] + @thesis = TissCrawler.get_thesis_details(params) + # create stores the object to the db after creation + favorite_hash = {id: params[:id], + # the user who is currently active + user_id: current_user.id, + title: @thesis['title']['de']} + if FavoriteThesis.create(favorite_hash).valid? + FavoriteThesis.create(favorite_hash) + flash[:alert] = 'Thesis added to your favorites!' + else + flash[:alert] = 'Thesis is already favorited!' + end + redirect_back(fallback_location: search) end end diff --git a/app/controllers/crawlers/tiss_crawler_controller.rb b/app/controllers/crawlers/tiss_crawler_controller.rb index fac3647..d7f2368 100644 --- a/app/controllers/crawlers/tiss_crawler_controller.rb +++ b/app/controllers/crawlers/tiss_crawler_controller.rb @@ -16,8 +16,10 @@ class Crawlers::TissCrawlerController < ApplicationController # redirect to courses_show_basic, propagate the search_term redirect_to :controller => 'crawlers/courses_crawler', :action => :show_basic, :search_term => params[:search_term] when 'Theses' + # redirect to thesis_show_basic, propagate the search_term + redirect_to :controller => 'crawlers/theses_crawler', :action => :show_basic, :search_term => params[:search_term] when 'Projects' - else + else puts 'Undefined search context' end end diff --git a/app/controllers/favorites_controller.rb b/app/controllers/favorites_controller.rb index 0a426dc..1ea293a 100644 --- a/app/controllers/favorites_controller.rb +++ b/app/controllers/favorites_controller.rb @@ -1,19 +1,50 @@ class FavoritesController < ApplicationController + helper_method :sort_column, :sort_direction def people - @favoritePeople = FavoritePerson.all + @favorite_people = FavoritePerson.where('user_id': current_user.id) + .order(sort_column + " " + sort_direction) @host = 'https://tiss.tuwien.ac.at' end - def courses + def delete_person + FavoritePerson.find_by_tiss_id(params[:tiss_id]).destroy + redirect_back(fallback_location: people) + end + def courses + @favorite_courses = FavoriteCourse.where('user_id': current_user.id) + .order(sort_column + " " + sort_direction) + @host = 'https://tiss.tuwien.ac.at' + end + + def delete_course + FavoriteCourse.find_by(number: params[:number], semester: params[:semester]).destroy + redirect_back(fallback_location: courses) end def theses + @favorite_theses = FavoriteThesis.where('user_id': current_user.id) + .order(sort_column + " " + sort_direction) + @host = 'https://tiss.tuwien.ac.at' + end + def delete_thesis + FavoriteThesis.find_by(id: params[:id]).destroy + redirect_back(fallback_location: theses) end def projects end + + private + + def sort_column + params[:sort] || '' + end + + def sort_direction + params[:direction] || '' + end end diff --git a/app/helpers/courses_crawler_helper.rb b/app/helpers/courses_crawler_helper.rb deleted file mode 100644 index 6800321..0000000 --- a/app/helpers/courses_crawler_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CoursesCrawlerHelper -end diff --git a/app/helpers/crawlers/courses_crawler_helper.rb b/app/helpers/crawlers/courses_crawler_helper.rb new file mode 100644 index 0000000..eb9da6d --- /dev/null +++ b/app/helpers/crawlers/courses_crawler_helper.rb @@ -0,0 +1,2 @@ +module Crawlers::CoursesCrawlerHelper +end diff --git a/app/helpers/crawlers/people_crawler_helper.rb b/app/helpers/crawlers/people_crawler_helper.rb new file mode 100644 index 0000000..b56f897 --- /dev/null +++ b/app/helpers/crawlers/people_crawler_helper.rb @@ -0,0 +1,2 @@ +module Crawlers::PeopleCrawlerHelper +end diff --git a/app/helpers/crawlers/projects_crawler_helper.rb b/app/helpers/crawlers/projects_crawler_helper.rb new file mode 100644 index 0000000..3fc4feb --- /dev/null +++ b/app/helpers/crawlers/projects_crawler_helper.rb @@ -0,0 +1,2 @@ +module Crawlers::ProjectsCrawlerHelper +end diff --git a/app/helpers/crawlers/theses_crawler_helper.rb b/app/helpers/crawlers/theses_crawler_helper.rb new file mode 100644 index 0000000..1b0e136 --- /dev/null +++ b/app/helpers/crawlers/theses_crawler_helper.rb @@ -0,0 +1,2 @@ +module Crawlers::ThesesCrawlerHelper +end diff --git a/app/helpers/crawlers/tiss_crawler_helper.rb b/app/helpers/crawlers/tiss_crawler_helper.rb new file mode 100644 index 0000000..b730a09 --- /dev/null +++ b/app/helpers/crawlers/tiss_crawler_helper.rb @@ -0,0 +1,2 @@ +module Crawlers::TissCrawlerHelper +end diff --git a/app/helpers/favorites_helper.rb b/app/helpers/favorites_helper.rb index 4e9a950..d8e38d2 100644 --- a/app/helpers/favorites_helper.rb +++ b/app/helpers/favorites_helper.rb @@ -1,2 +1,6 @@ module FavoritesHelper + def sortable(title, column) + direction = column == sort_column && sort_direction == 'asc' ? 'desc' : 'asc' + link_to title, :sort => column, :direction => direction + end end diff --git a/app/helpers/people_crawler_helper.rb b/app/helpers/people_crawler_helper.rb deleted file mode 100644 index f0357b4..0000000 --- a/app/helpers/people_crawler_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module PeopleCrawlerHelper -end diff --git a/app/helpers/projects_crawler_helper.rb b/app/helpers/projects_crawler_helper.rb deleted file mode 100644 index 5c75729..0000000 --- a/app/helpers/projects_crawler_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ProjectsCrawlerHelper -end diff --git a/app/helpers/theses_crawler_helper.rb b/app/helpers/theses_crawler_helper.rb deleted file mode 100644 index e2f404e..0000000 --- a/app/helpers/theses_crawler_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ThesesCrawlerHelper -end diff --git a/app/helpers/tiss_crawler_helper.rb b/app/helpers/tiss_crawler_helper.rb deleted file mode 100644 index ef4a1b8..0000000 --- a/app/helpers/tiss_crawler_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module TissCrawlerHelper -end diff --git a/app/models/favorite_course.rb b/app/models/favorite_course.rb new file mode 100644 index 0000000..60d0d1f --- /dev/null +++ b/app/models/favorite_course.rb @@ -0,0 +1,4 @@ +class FavoriteCourse < ApplicationRecord + validates :title, :semester, :number, presence: true + validates :semester, :number, uniqueness: {scope: [:semester, :number]} +end diff --git a/app/models/favorite_thesis.rb b/app/models/favorite_thesis.rb new file mode 100644 index 0000000..f1618f9 --- /dev/null +++ b/app/models/favorite_thesis.rb @@ -0,0 +1,5 @@ +class FavoriteThesis < ApplicationRecord + self.primary_key = 'id' + + validates :id, uniqueness: true +end diff --git a/app/views/crawlers/theses_crawler/show_basic.html.erb b/app/views/crawlers/theses_crawler/show_basic.html.erb new file mode 100644 index 0000000..02ba658 --- /dev/null +++ b/app/views/crawlers/theses_crawler/show_basic.html.erb @@ -0,0 +1,20 @@ +

Results for "<%= params[:search_term] %>"

+ +
    + <% @theses.each_with_index do |thesis| %> +
  • + <%= link_to crawlers_theses_crawler_show_detail_url(:id => thesis['id'], :title => thesis['title']) do %> + + + <%= thesis['title'] %> + + + <% end %> + + <%= link_to crawlers_theses_crawler_add_to_fav_url(:id => thesis['id'], :title => thesis['title']) do %> + <%= show_svg('favorite-24px.svg') %> + <% end %> + +
  • + <% end %> +
diff --git a/app/views/crawlers/theses_crawler/show_detail.html.erb b/app/views/crawlers/theses_crawler/show_detail.html.erb new file mode 100644 index 0000000..24f1a83 --- /dev/null +++ b/app/views/crawlers/theses_crawler/show_detail.html.erb @@ -0,0 +1,13 @@ +<% if @thesis != nil %> +

<%= @thesis['title']['de'] %>

+
<%= @thesis['thesisType'] %>, <%= @thesis['instituteCode'] %> <%= @thesis['instituteName']['de'] %>
+ <%= button_to 'Add to favorites', action: :add_to_fav, id: @id, title: @thesis['title']['de'] %> + <% if @thesis['advisor'] != nil %> +

Advisor

+

<%= @thesis['advisor']['familyName'] %> <%= @thesis['advisor']['givenName'] %>

+ <% end %> + <% if @thesis['assistant'] != nil %> +

Assistant

+

<%= @thesis['assistant']['familyName'] %> <%= @thesis['assistant']['givenName'] %>

+ <% end %> +<% end %> diff --git a/app/views/favorites/courses.html.erb b/app/views/favorites/courses.html.erb index 8509c2d..bad85bf 100644 --- a/app/views/favorites/courses.html.erb +++ b/app/views/favorites/courses.html.erb @@ -1,3 +1,34 @@ -<%= render(:partial => "nav")%> +<%= render(:partial => "nav") %> -

Fav Courses

\ No newline at end of file +

Favorite Courses

+ +<% if !@favorite_courses[0].blank? %> +
+ + + + + + + + <% for course in @favorite_courses %> + + + + + + + <% end %> +
<%= sortable "Title", "title" %><%= sortable "Registration Date", "created_at" %>
+ <%= course['title'] %> + + <%= course['created_at'] %> + + <%= button_to 'Details', crawlers_courses_crawler_show_detail_url(:number => course['number'], :semester => course['semester']) %> + + <%= button_to 'Delete', {:action => "delete_course", :number => course['number'], :semester => course['semester']}, :method => 'delete' %> +
+
+<% else %> + No favorite courses added yet! +<% end %> diff --git a/app/views/favorites/people.html.erb b/app/views/favorites/people.html.erb index eeadd54..c0db7db 100644 --- a/app/views/favorites/people.html.erb +++ b/app/views/favorites/people.html.erb @@ -1,25 +1,72 @@ -<%= render(:partial => "nav")%> +<%= render(:partial => "nav") %>

Favorite People

-
    - <% @favoritePeople.each do |person| %> -
  • - <%= link_to crawlers_people_crawler_show_detail_url(:tiss_id => person['tiss_id']) do %> - - - <% if person['picture_uri'] != nil %> - <%= image_tag @host + person['picture_uri'] %> - <% else %> - <%= show_svg('account_circle-black-48dp.svg') %> - <% end %> - - - <%= person['first_name'] %> + + <%# @favorite_people.each do |person| %> + + <%#= link_to crawlers_people_crawler_show_detail_url(:tiss_id => person['tiss_id']) do %> + + + <%# if person['picture_uri'] != nil %> + <%#= image_tag @host + person['picture_uri'] %> + <%# else %> + <%#= show_svg('account_circle-black-48dp.svg') %> + <%# end %> + + + <%#= person['first_name'] %> + <%#= person['last_name'] %> + + + <%# end %> + + <%# end %> + + +<% if !@favorite_people[0].blank? %> +
    + + + + + + + + + + <% for person in @favorite_people %> + + + + + + + + <% end %> - - <% end %> - +
    <%= sortable "First Name", "first_name" %><%= sortable "Last Name", "last_name" %><%= sortable "Registration Date", "created_at" %>
    + <%= link_to crawlers_people_crawler_show_detail_url(:tiss_id => person['tiss_id']) do %> + + <% if person['picture_uri'] != nil %> + <%= image_tag @host + person['picture_uri'], class: 'thumb'%> + <% else %> + <%= show_svg('account_circle-black-48dp.svg')%> + <% end %> + + <% end %> + + <%= person['first_name'] %> + <%= person['last_name'] %> - - + + <%= person['created_at'] %> + + <%= button_to 'Details', crawlers_people_crawler_show_detail_url(:tiss_id => person['tiss_id']) %> + + <%= button_to "Delete", {:action => "delete_person", :tiss_id => person['tiss_id']}, :method => 'delete' %> +
    +
    +<% else %> + No favorite people added yet! +<% end %> \ No newline at end of file diff --git a/app/views/favorites/theses.html.erb b/app/views/favorites/theses.html.erb index dc46c61..d552232 100644 --- a/app/views/favorites/theses.html.erb +++ b/app/views/favorites/theses.html.erb @@ -1,3 +1,34 @@ -<%= render(:partial => "nav")%> +<%= render(:partial => "nav") %> -

    Fav Theses

    \ No newline at end of file +

    Favorite Theses

    + +<% if !@favorite_theses[0].blank? %> +
    + + + + + + + + <% for thesis in @favorite_theses %> + + + + + + + <% end %> +
    <%= sortable "Title", "title" %><%= sortable "Registration Date", "created_at" %>
    + <%= thesis['title'] %> + + <%= thesis['created_at'] %> + + <%= button_to 'Details', crawlers_theses_crawler_show_detail_url(:id => thesis['id']) %> + + <%= button_to 'Delete', {:action => "delete_thesis", :id => thesis['id']}, :method => 'delete' %> +
    +
    +<% else %> + No favorite theses added yet! +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 2becac5..946e698 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -22,12 +22,23 @@ Rails.application.routes.draw do get 'add_to_fav' post 'add_to_fav' end + + namespace :theses_crawler do + get 'show_basic' + get 'show_detail' + post 'show_detail' + get 'add_to_fav' + post 'add_to_fav' + end end namespace :favorites do get 'people' + delete 'delete_person' get 'courses' + delete 'delete_course' get 'theses' + delete 'delete_thesis' get 'projects' end diff --git a/db/migrate/20200421152314_create_favorite_people.rb b/db/migrate/20200421152314_create_favorite_people.rb index 6dd479a..d1a00b0 100644 --- a/db/migrate/20200421152314_create_favorite_people.rb +++ b/db/migrate/20200421152314_create_favorite_people.rb @@ -1,10 +1,10 @@ class CreateFavoritePeople < ActiveRecord::Migration[6.0] def change create_table :favorite_people, id: false do |t| - t.string :tiss_id, null: false + t.integer :tiss_id, null: false + t.integer :user_id, null: false t.string :first_name t.string :last_name - t.string :picture_uri t.timestamps diff --git a/db/migrate/20200521091231_create_favorite_courses.rb b/db/migrate/20200521091231_create_favorite_courses.rb new file mode 100644 index 0000000..4937ab0 --- /dev/null +++ b/db/migrate/20200521091231_create_favorite_courses.rb @@ -0,0 +1,13 @@ +class CreateFavoriteCourses < ActiveRecord::Migration[6.0] + def change + create_table :favorite_courses do |t| + t.string :number, null: false + t.string :semester, null: false + t.string :title, null: false + t.integer :user_id, null: false + + t.timestamps + end + add_index :favorite_courses, [:number, :semester], unique: true + end +end diff --git a/db/migrate/20200525132942_create_favorite_theses.rb b/db/migrate/20200525132942_create_favorite_theses.rb new file mode 100644 index 0000000..64c63db --- /dev/null +++ b/db/migrate/20200525132942_create_favorite_theses.rb @@ -0,0 +1,12 @@ +class CreateFavoriteTheses < ActiveRecord::Migration[6.0] + def change + create_table :favorite_theses, id: false do |t| + t.integer :id, null: false + t.integer :user_id, null: false + t.string :title + + t.timestamps + end + add_index :favorite_theses, :id, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 5425113..c1cc81e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,10 +10,21 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_04_21_152314) do +ActiveRecord::Schema.define(version: 2020_05_25_132942) do + + create_table "favorite_courses", force: :cascade do |t| + t.string "number", null: false + t.string "semester", null: false + t.string "title", null: false + t.integer "user_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["number", "semester"], name: "index_favorite_courses_on_number_and_semester", unique: true + end create_table "favorite_people", id: false, force: :cascade do |t| - t.string "tiss_id", null: false + t.integer "tiss_id", null: false + t.integer "user_id", null: false t.string "first_name" t.string "last_name" t.string "picture_uri" @@ -22,6 +33,15 @@ ActiveRecord::Schema.define(version: 2020_04_21_152314) do t.index ["tiss_id"], name: "index_favorite_people_on_tiss_id", unique: true end + create_table "favorite_theses", id: false, force: :cascade do |t| + t.integer "id", null: false + t.integer "user_id", null: false + t.string "title" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["id"], name: "index_favorite_theses_on_id", unique: true + end + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false diff --git a/lib/tiss/tiss_crawler.rb b/lib/tiss/tiss_crawler.rb index c402b54..bc764cb 100644 --- a/lib/tiss/tiss_crawler.rb +++ b/lib/tiss/tiss_crawler.rb @@ -36,6 +36,16 @@ class TissCrawler response.parsed_response['tuvienna']['course'] end + def self.get_thesis_details(params) + api = params[:api] + id = params[:id] + url = $host + api + id + puts(url) + + response = HTTParty.get(url) + response.parsed_response['tuvienna']['thesis'] + end + def self.get_host $host end diff --git a/test/fixtures/favorite_courses.yml b/test/fixtures/favorite_courses.yml new file mode 100644 index 0000000..5181636 --- /dev/null +++ b/test/fixtures/favorite_courses.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +# This model initially had no columns defined. If you add columns to the +# model remove the '{}' from the fixture names and add the columns immediately +# below each fixture, per the syntax in the comments below +# +one: {} +# column: value +# +two: {} +# column: value diff --git a/test/fixtures/favorite_theses.yml b/test/fixtures/favorite_theses.yml new file mode 100644 index 0000000..5181636 --- /dev/null +++ b/test/fixtures/favorite_theses.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +# This model initially had no columns defined. If you add columns to the +# model remove the '{}' from the fixture names and add the columns immediately +# below each fixture, per the syntax in the comments below +# +one: {} +# column: value +# +two: {} +# column: value diff --git a/test/models/favorite_course_test.rb b/test/models/favorite_course_test.rb new file mode 100644 index 0000000..6dc9720 --- /dev/null +++ b/test/models/favorite_course_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class FavoriteCourseTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/favorite_thesis_test.rb b/test/models/favorite_thesis_test.rb new file mode 100644 index 0000000..6c675a7 --- /dev/null +++ b/test/models/favorite_thesis_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class FavoriteThesisTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end