@@ -525,6 +525,46 @@ func (c CourseServer) ListCoursesForAccesscode(w http.ResponseWriter, r *http.Re
525
525
util .ReturnHTTPContent (w , r , 200 , "success" , encodedCourses )
526
526
}
527
527
528
+ func (c CourseServer ) ListCourseCatalog (w http.ResponseWriter , r * http.Request ) {
529
+ _ , err := rbac .AuthenticateRequest (r , c .authnClient )
530
+ if err != nil {
531
+ util .ReturnHTTPMessage (w , r , 401 , "unauthorized" , "authentication failed" )
532
+ return
533
+ }
534
+
535
+ tempCoursList , err := c .internalCourseServer .ListCourse (r .Context (), & generalpb.ListOptions {})
536
+ if err != nil {
537
+ glog .Errorf ("error listing courses: %v" , err )
538
+ util .ReturnHTTPMessage (w , r , 500 , "internalerror" , "error listing courses" )
539
+ return
540
+ }
541
+ tempCourses := tempCoursList .GetCourses ()
542
+
543
+ courses := make ([]PreparedCourse , 0 , len (tempCourses ))
544
+ for _ , course := range tempCourses {
545
+ if course .InCatalog {
546
+ course .Scenarios = util .AppendDynamicScenariosByCategories (
547
+ r .Context (),
548
+ course .Scenarios ,
549
+ course .Categories ,
550
+ c .listScenarios ,
551
+ )
552
+ courses = append (courses , convertToPreparedCourse (course ))
553
+ }
554
+ }
555
+
556
+ encodedCourses , err := json .Marshal (courses )
557
+ if err != nil {
558
+ glog .Errorf ("error marshalling prepared courses: %v" , err )
559
+ util .ReturnHTTPMessage (w , r , 500 , "internalerror" , "error listing courses" )
560
+ return
561
+ }
562
+
563
+ util .ReturnHTTPContent (w , r , 200 , "success" , encodedCourses )
564
+
565
+ glog .V (4 ).Infof ("listed courses" )
566
+ }
567
+
528
568
func (c CourseServer ) previewDynamicScenarios (w http.ResponseWriter , r * http.Request ) {
529
569
user , err := rbac .AuthenticateRequest (r , c .authnClient )
530
570
if err != nil {
0 commit comments