-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrouting.go
More file actions
238 lines (202 loc) · 12.8 KB
/
routing.go
File metadata and controls
238 lines (202 loc) · 12.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
package main
import (
"github.com/cizup/backend_v2/handlers/account"
admincategories "github.com/cizup/backend_v2/handlers/admin/categories"
"github.com/cizup/backend_v2/handlers/admin/cizuprange"
adminCourse "github.com/cizup/backend_v2/handlers/admin/course"
"github.com/cizup/backend_v2/handlers/admin/notifications"
"github.com/cizup/backend_v2/handlers/cizup"
"github.com/cizup/backend_v2/handlers/cloud"
"github.com/cizup/backend_v2/handlers/courses"
"github.com/cizup/backend_v2/handlers/instructor"
"github.com/cizup/backend_v2/handlers/instructor/course"
"github.com/cizup/backend_v2/handlers/instructor/course/exercises"
coursefields "github.com/cizup/backend_v2/handlers/instructor/course/fields"
"github.com/cizup/backend_v2/handlers/is"
"github.com/cizup/backend_v2/handlers/paymention"
"github.com/cizup/backend_v2/middleware"
"github.com/cizup/backend_v2/structs"
"github.com/gofiber/fiber/v2"
"github.com/google/uuid"
fiberSwagger "github.com/swaggo/fiber-swagger"
)
func (b *Backend) RegisterRouting() {
// vttDirectory := "./vtt_files"
// b.App.Static("/vtts", vttDirectory)
app := b.App.Group("/api")
// Swagger documentation
b.App.Get("/swagger/*", fiberSwagger.WrapHandler)
app.Get("/test1/:id/:cid", func(c *fiber.Ctx) error {
structs.CheckCizUPReq(uuid.MustParse(c.Params("id")), uuid.MustParse(c.Params("cid")))
return nil
})
app.Get("/generate_signed_url", middleware.Protected(), cloud.GenerateSignedURL)
app.Post("/pay/notification", paymention.Notification)
app.Get("/pay/:locale", middleware.Protected(), paymention.PaymentTokenizer)
app.Get("/courses", courses.Courses)
app.Get("/courses/my", middleware.Protected(), courses.MyCourses)
app.Get("/courses/my/:path", middleware.Protected(), courses.MyCourse)
//Deprecated: app.Get("/courses/see/:id", courses.SeeItem)
app.Get("/courses/my/article/:id", middleware.Protected(), courses.MarkdownByUser)
app.Get("/courses/my/video/:id", middleware.Protected(), courses.VideoByUser)
app.Get("/courses/my/podcast/:id", middleware.Protected(), courses.PodcastByUser)
app.Get("/courses/my/quiz/:id", middleware.Protected(), courses.QuizByUser)
app.Post("/courses/my/quiz/:id", middleware.Protected(), courses.SolveQuiz)
app.Delete("/courses/my/quiz/:id", middleware.Protected(), courses.ResetQuiz)
app.Get("/courses/my/code_exercise/:id", middleware.Protected(), courses.ExerciseByUser)
app.Get("/courses/my/code_exercise/:id/info", middleware.Protected(), courses.Info)
app.Post("/courses/my/code_exercise/:id/info/:hint_id", middleware.Protected(), courses.BuyHint)
app.Put("/courses/my/code_exercise/:id", middleware.Protected(), courses.SaveExercise)
app.Post("/courses/my/code_exercise/:id", middleware.Protected(), courses.RunExercise)
app.Delete("/courses/my/code_exercise/:id", middleware.Protected(), courses.ResetExercise)
app.Get("/courses/:path", courses.CourseByPath)
//app.Get("/courses/:id/buy", middleware.Protected(), courses.Buy)
app.Get("/courses/:course_id/add_to_cart", middleware.Protected(), account.AddToCard)
app.Get("/courses/:course_id/remove_from_cart", middleware.Protected(), account.RemoveToCard)
app.Get("/courses/:path/w", middleware.Protected(), courses.CourseByPathWish)
app.Post("/courses/:course/wish", middleware.Protected(), courses.WishACourse)
app.Get("/courses/:path/metadata", courses.CourseNameByPath)
app.Get("/categories", course.Categories)
app.Get("/categories/:id", course.Subcategories)
// TODO: Buradaki kurslarin yayinlanmasini admin protected middlewaresi ile yap!
// app.Get("/courses/:path/unpublish", func(c *fiber.Ctx) error {
// s := structs.Course{URLPath: c.Params("path")}
// return s.Unpublish()
// })
// app.Get("/courses/:path/publish", func(c *fiber.Ctx) error {
// s := structs.Course{URLPath: c.Params("path")}
// return s.Publish()
// })
app.Get("/search", courses.Search)
accountGroup := app.Group("/account")
accountGroup.Post("/signup", account.SignUp)
accountGroup.Post("/signin", account.SignIn)
accountGroup.Post("/activate", middleware.Protected(), account.Activate)
accountGroup.Get("/is_admin", middleware.Protected(), account.IsAdmin)
accountGroup.Get("/is_available", middleware.Protected(), account.TokenAvailable)
accountGroup.Get("/activate_with_link/:activationId", account.ActivateWithLink)
accountGroup.Get("/is_available_f", middleware.Protected(), account.ResetTokenAvailable)
accountGroup.Post("/forgotpassword", account.ForgotPassword)
accountGroup.Post("/resetpassword", middleware.Protected(), account.ResetPassword)
accountGroup.Post("/update", middleware.Protected(), account.UpdateProfile)
accountGroup.Post("/update_settings", middleware.Protected(), account.UpdateSettings)
accountGroup.Get("/profile", middleware.Protected(), account.Profile)
accountGroup.Get("/get_course/:course_id", middleware.Protected(), account.GetCourse)
accountGroup.Get("/events", middleware.Protected(), account.Events)
accountGroup.Get("/cart", middleware.Protected(), account.Cart)
accountGroup.Get("/notifications", middleware.Protected(), account.GetNotifications)
accountGroup.Delete("/notifications/:id", middleware.Protected(), account.DeleteNotification)
accountGroup.Get("/notifications/:id", middleware.Protected(), account.Notification)
accountGroup.Get("/notifications/:id/read", middleware.Protected(), account.ReadNotification)
// Instructor routes - requires Instructor or Admin role
instructorGroup := app.Group("/instructor", middleware.Protected(), middleware.RequireInstructorOrAdmin())
instructorGroup.Get("/", instructor.Instructor)
instructorGroup.Get("/is_instructor", instructor.IsInstructor)
instructorGroup.Post("/update/admin", instructor.UpdateAdmin)
instructorGroup.Get("/login/:id", instructor.LoginAdmin)
instructorGroup.Get("/list", instructor.Instructors)
instructorGroup.Get("/requests", instructor.InstructorRequests)
instructorGroup.Post("/requests", instructor.InstructorRequest)
instructorGroup.Get("/requests/status", instructor.InstructorRequestStatus)
instructorGroup.Post("/requests/evaluate", instructor.EvaluateRequest)
exercisesGroup := instructorGroup.Group("/exercises")
exercisesGroup.Post("/compile_js", exercises.JsCompile)
exercisesGroup.Post("/compile_java", exercises.JavaCompile)
exercisesGroup.Post("/compile_py", exercises.PyCompile)
instructorCoursesGroup := instructorGroup.Group("/course")
instructorCoursesGroup.Get("/list", course.ListCourses)
instructorCoursesGroup.Post("/search/:id?", course.SearchCourses)
instructorCoursesGroup.Get("/:id/publish", course.PublishRequestCourse)
instructorCoursesGroup.Get("/:id/goals", coursefields.GetCourseGoal)
instructorCoursesGroup.Post("/:id/goals", coursefields.SetGoalData)
instructorCoursesGroup.Get("/:id/curriculum", coursefields.GetCurriculum)
instructorCoursesGroup.Get("/curriculum/content/:id/video", coursefields.GetVideos)
instructorCoursesGroup.Post("/curriculum/content/:content_id/video/vtt", coursefields.Vtt)
instructorCoursesGroup.Get("/curriculum/content/:content_id/video/vtt", coursefields.GetVtt)
instructorCoursesGroup.Post("/:id/curriculum/index/course", coursefields.UpdateCourseIndex)
instructorCoursesGroup.Post("/:id/curriculum/index/chapter", coursefields.UpdateChapterIndex)
instructorCoursesGroup.Post("/:id/curriculum/chapter", coursefields.CreateNewChapter)
instructorCoursesGroup.Delete("/:id/curriculum/chapter/:chapter_id", coursefields.DeleteChapter)
instructorCoursesGroup.Patch("/:id/curriculum/chapter/:chapter_id", coursefields.RenameChapter)
instructorCoursesGroup.Post("/:id/curriculum/content/:chapter_id", coursefields.CreateNewContent)
instructorCoursesGroup.Delete("/:id/curriculum/content/:content_id", coursefields.DeleteContent)
instructorCoursesGroup.Patch("/:id/curriculum/content/:content_id", coursefields.RenameContent)
instructorCoursesGroup.Post("/curriculum/content/:content_id/video", coursefields.UpdateVideoContent)
instructorCoursesGroup.Post("/curriculum/content/:content_id/podcast", coursefields.UpdatePodcastContent)
instructorCoursesGroup.Post("/curriculum/content/:content_id/xp", coursefields.UpdateContentXp)
instructorCoursesGroup.Get("/curriculum/content/:content_id/badge", coursefields.GetContentBadge)
instructorCoursesGroup.Put("/curriculum/content/:content_id/badge", coursefields.UpdateBadge)
instructorCoursesGroup.Get("/curriculum/content/:content_id/hint", coursefields.GetHints)
instructorCoursesGroup.Patch("/curriculum/content/:content_id/hint", coursefields.UpdateHints)
instructorCoursesGroup.Delete("/curriculum/content/:content_id/hint/:id", coursefields.DeleteHint)
instructorCoursesGroup.Get("/curriculum/content/:content_id/badge/define", coursefields.BadgeDefine)
instructorCoursesGroup.Delete("/curriculum/content/:content_id/badge", coursefields.BadgeDelete)
instructorCoursesGroup.Get("/:id/basics", coursefields.GetBasics)
instructorCoursesGroup.Patch("/:id/basics", coursefields.SetBasics)
instructorCoursesGroup.Get("/:id/messages", coursefields.GetCourseMessages)
instructorCoursesGroup.Patch("/:id/messages", coursefields.SetMessages)
instructorCoursesGroup.Get("/:id/price", coursefields.GetPricing)
instructorCoursesGroup.Patch("/:id/price", coursefields.SetPricing)
instructorCoursesGroup.Get("/:id/promotions", coursefields.GetPromotions)
instructorCoursesGroup.Post("/:id/promotions/coupons", coursefields.CreateCoupon)
instructorCoursesGroup.Delete("/:id/promotions/coupons", coursefields.DeleteAllCoupons)
instructorCoursesGroup.Delete("/:id/promotions/coupons/:couponId", coursefields.DeleteCoupon)
instructorCoursesGroup.Get("/content/:id/course", coursefields.GetContentCourse)
instructorCoursesGroup.Get("/article/:id/name", coursefields.GetArticleName)
instructorCoursesGroup.Get("/article/:id", coursefields.GetArticle)
instructorCoursesGroup.Post("/article/:id", coursefields.SetArticle)
instructorCoursesGroup.Get("/quiz/:id/name", coursefields.GetQuizName)
instructorCoursesGroup.Get("/quiz/:id", coursefields.GetQuiz)
instructorCoursesGroup.Post("/quiz/:id", coursefields.SetQuiz)
instructorCoursesGroup.Get("/exercise/:id/name", coursefields.GetExerciseName)
instructorCoursesGroup.Get("/exercise/:id/settings", coursefields.ExerciseSettings)
instructorCoursesGroup.Put("/exercise/:id/settings", coursefields.SetExerciseSettings)
instructorCoursesGroup.Delete("/exercise/:id/settings/:qid", coursefields.DeleteExerciseSettings)
instructorCoursesGroup.Get("/exercise/:id", coursefields.GetExercise)
instructorCoursesGroup.Post("/exercise/:id", coursefields.SetExercise)
instructorCoursesGroup.Get("/:id", course.GetCourse)
instructorCoursesGroup.Delete("/:id", course.DeleteCourse)
instructorCoursesGroup.Post("/", course.CreateCourse)
// Admin routes - requires Admin role only
adminGroup := app.Group("/admin", middleware.Protected(), middleware.RequireAdmin())
adminGroup.Post("/notifications", notifications.Send)
adminCourseGroup := adminGroup.Group("/course")
adminCourseGroup.Get("/paths", adminCourse.GetPaths)
adminCourseGroup.Post("/paths/:id", adminCourse.SetPath)
adminCourseGroup.Delete("/paths/:id", adminCourse.DeletePath)
adminCategoryGroup := adminGroup.Group("/category")
adminCategoryGroup.Post("/", admincategories.CreateCategory)
adminCategoryGroup.Get("/search", admincategories.SearchCategory)
adminCategoryGroup.Get("/parents", admincategories.GetParent)
adminCategoryGroup.Post("/update", admincategories.UpdateCategory)
adminCategoryGroup.Get("/:id", admincategories.GetCategory)
adminCategoryGroup.Delete("/:id", admincategories.DeleteCategory)
adminRangeGroup := adminGroup.Group("/range")
adminRangeGroup.Post("/", cizuprange.CreateCizUPRange)
adminRangeGroup.Delete("/:id", cizuprange.DeleteCizUPRange)
cizUpGroup := app.Group("/cizup", middleware.Protected())
cizUpGroup.Get("/range", cizup.Range)
cizUpGroup.Get("/range/:day", cizup.RangeByDay)
cizUpGroup.Get("/requires", cizup.Requires)
cizUpGroup.Get("/available", cizup.Available)
cizUpGroup.Get("/meet/:meet", cizup.CizupByMeet)
// cizUpGroup.Post("/ciz", cizup.Ciz)
cizUpGroup.Post("/ciz", cizup.CreateTimeSlot)
cizUpGroup.Patch("/ciz/:id", cizup.EditTimeSlot)
cizUpGroup.Delete("/ciz/:id", cizup.DeleteTimeSlot)
cizUpGroup.Post("/up/:slot/:chapter", cizup.Up)
cizUpGroup.Get("/cancel/:cizupId", cizup.Cancel)
cizUpGroup.Get("/upmeta/:cizup_id", cizup.UpMeta)
cizUpGroup.Get("/upinfo/:cizup_id", cizup.UpInfo)
cizUpGroup.Get("/cizinfo/:cizup_id", cizup.CizInfo)
cizUpGroup.Get("/use_passcode/:cizup_id", cizup.UsePasscode)
cizUpGroup.Post("/evaluate/:cizup_id", cizup.Evaluate)
infoSessionGroup := app.Group("/info_session", middleware.Protected())
infoSessionGroup.Get("/listener/:id", is.ListenerInfo)
infoSessionGroup.Post("/listener/:id", is.Create)
infoSessionGroup.Delete("/listener/:id", is.Cancel)
infoSessionGroup.Get("/narrator", is.NarratorInfo)
infoSessionGroup.Get("/narrator/:id", is.Match)
infoSessionGroup.Delete("/narrator/:id", is.NarratorCancel)
infoSessionGroup.Post("/evaluate/:id", is.Evaluate)
}