diff --git a/app/controllers/heartbeat_controller.rb b/app/controllers/heartbeat_controller.rb new file mode 100644 --- /dev/null +++ b/app/controllers/heartbeat_controller.rb @@ -0,0 +1,46 @@ +class HeartbeatController < ApplicationController + before_filter :admin_authorization, :only => ['index'] + + def edit + #@user = User.find_by_login(params[:id]) + #unless @user + # render text: "LOGIN_NOT_FOUND" + # return + #end + + #hb = HeartBeat.where(user_id: @user.id, ip_address: request.remote_ip).first + #puts "status = #{params[:status]}" + #if hb + # if params[:status] + # hb.status = params[:status] + # hb.save + # end + # hb.touch + #else + # HeartBeat.creae(user_id: @user.id, ip_address: request.remote_ip) + #end + #HeartBeat.create(user_id: @user.id, ip_address: request.remote_ip, status: params[:status]) + + res = GraderConfiguration['right.heartbeat_response'] + res.strip! if res + full = GraderConfiguration['right.heartbeat_response_full'] + full.strip! if full + + if full and full != '' + l = Login.where(ip_address: request.remote_ip).last + @user = l.user + if @user.solve_all_available_problems? + render text: (full || 'OK') + else + render text: (res || 'OK') + end + else + render text: (GraderConfiguration['right.heartbeat_response'] || 'OK') + end + end + + def index + @hb = HeartBeat.where("updated_at >= ?",Time.zone.now-2.hours).includes(:user).order(:user_id).all + @num = HeartBeat.where("updated_at >= ?",Time.zone.now-5.minutes).count(:user_id,distinct: true) + end +end