Skip to content

Commit 456a34d

Browse files
committed
Add a endpoint for getting exercise details
1 parent c29f579 commit 456a34d

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

app/controllers/api/v8/organizations/courses/exercises_controller.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,26 @@ def index
7474
present(presentable)
7575
end
7676

77+
def show
78+
unauthorize_guest!
79+
organization = Organization.find_by!(slug: params[:organization_slug])
80+
course = organization.courses.find_by(name: "#{params[:organization_slug]}-#{params[:course_name]}")
81+
course = organization.courses.find_by!(name: params[:course_name]) unless course
82+
ex = course.exercises.find_by!(name: params[:name])
83+
authorize! :read, ex
84+
present({
85+
id: ex.id,
86+
available_points: ex.available_points,
87+
name: ex.name,
88+
publish_time: ex.publish_time,
89+
deadline: ex.deadline_for(current_user),
90+
soft_deadline: ex.soft_deadline_for(current_user),
91+
expired: ex.expired_for?(current_user),
92+
disabled: ex.disabled?,
93+
completed: ex.completed_by?(current_user)
94+
})
95+
end
96+
7797
def download
7898
course = Course.find_by!(name: "#{params[:organization_slug]}-#{params[:course_name]}")
7999
exercise = Exercise.find_by!(name: params[:name], course_id: course.id)

config/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
resources :points, module: :users, only: :index
6161
end
6262

63-
resources :exercises, module: :courses, param: :name, only: :index do
63+
resources :exercises, module: :courses, param: :name, only: %i[index show], constraints: { name: /.*/ } do
6464
resources :points, module: :exercises, only: :index
6565
resources :users, module: :exercises, only: [] do
6666
resources :points, module: :users, only: :index

0 commit comments

Comments
 (0)