diff --git a/app/controllers/lecture_controller.rb b/app/controllers/lecture_controller.rb index 84a0b45..2413728 100644 --- a/app/controllers/lecture_controller.rb +++ b/app/controllers/lecture_controller.rb @@ -1,4 +1,16 @@ class LectureController < ApplicationController + # TODO: Pass the CSRF token to Pushcut + skip_before_action :verify_authenticity_token, only: [:checkin] + + def checkin + lecture = Lecture.find(params[:id]) + + Toggl::start_time_entry( + description: lecture.title, + project_id: lecture.course.toggl_project, + ) + end + def start lecture = Lecture.find(params[:id]) diff --git a/app/jobs/lecture_checkin_job.rb b/app/jobs/lecture_checkin_job.rb new file mode 100644 index 0000000..3d6c335 --- /dev/null +++ b/app/jobs/lecture_checkin_job.rb @@ -0,0 +1,18 @@ +class LectureCheckinJob < ApplicationJob + queue_as :default + + def perform(*args) + lecture = Lecture.find_by(start_time: Time.now - 5.minutes..Time.now + 5.minutes) + return if lecture.empty? + + puts(HTTParty.post( + "https://api.pushcut.io/2Kdtb5V7SoDXQOPxCJetk/notifications/Checkin", + body: { + input: lecture.id.to_s, + text: lecture.title, + title: "Checkin to #{lecture.course.title}" + }.to_json, + headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' } + )) + end +end diff --git a/app/lib/panopto.rb b/app/lib/panopto.rb index 955e2c6..989109b 100644 --- a/app/lib/panopto.rb +++ b/app/lib/panopto.rb @@ -1,7 +1,7 @@ module Panopto # @param [String] folder_id def self.list_folder(folder_id) - HTTParty.get("https://lectures.joshuacoles.me/list", query: { + HTTParty.get("https://lectures.joshuacoles.me/api/list", query: { folderId: folder_id }) end diff --git a/config/application.rb b/config/application.rb index 72bc127..14fa22f 100644 --- a/config/application.rb +++ b/config/application.rb @@ -13,6 +13,8 @@ module LectureAttendanceManager config.active_job.queue_adapter = :sidekiq + config.hosts << "lectures.joshuacoles.me" + # Configuration for the application, engines, and railties goes here. # # These settings can be overridden in specific environments using the files diff --git a/config/routes.rb b/config/routes.rb index f40dfe5..9acf507 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,4 +13,6 @@ Rails.application.routes.draw do post '/lectures/:id/start', to: 'lecture#start', as: :lectures_start post '/lectures/:id/start_preparation', to: 'lecture#start_preparation', as: :lecture_start_preparation post '/lectures/:id/start_review', to: 'lecture#start_review', as: :lecture_start_review + + post '/lectures/:id/checkin', to: 'lecture#checkin', as: :lecture_checkin end diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 0803d7d..f310a96 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -11,3 +11,7 @@ production: # These are the cron jobs :scheduler: :schedule: + :lecture_checkin_job: + cron: '15 * * * 1,2,3,4,5' + class: 'LectureCheckinJob' + queue: default diff --git a/test/jobs/lecture_checkin_job_test.rb b/test/jobs/lecture_checkin_job_test.rb new file mode 100644 index 0000000..6d43dd9 --- /dev/null +++ b/test/jobs/lecture_checkin_job_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class LectureCheckinJobTest < ActiveJob::TestCase + # test "the truth" do + # assert true + # end +end