diff --git a/handler/class.go b/handler/class.go index a078d19..70c6b20 100644 --- a/handler/class.go +++ b/handler/class.go @@ -219,3 +219,32 @@ func JoinClass(cc echo.Context) error { return c.JSON(http.StatusOK, class) } + +func SubmitAssignment(cc echo.Context) error { + req := struct { + submissionPID string `json:"submissionPID"`// PID of the program being submitted + assignmentPID string `json:"assignmentPID"` // PID of the program/assignment this is being submitted to. Potentially optional + uid string `json:"uid"` // UID of the submitting user + cid string `json:"cid"` // Class ID + }{} + + c := cc.(*db.DBContext) + + // read JSON from request body + if err := httpext.RequestBodyTo(c.Request(), &req); err != nil { + return c.String(http.StatusInternalServerError, err.Error()) + } + if req.submissionPID.uid == "" { + return c.String(http.StatusBadRequest, "submission PID is required") + } + if req.assignmentPID.uid == "" { + return c.String(http.StatusBadRequest, "assignment PID is required") + } + if req.uid == "" { + return c.String(http.StatusBadRequest, "uid is required") + } + if req.cid == "" { + return c.String(http.StatusBadRequest, "cid is required") + } + return nil +} diff --git a/server.go b/server.go index f944a87..e083914 100755 --- a/server.go +++ b/server.go @@ -89,6 +89,7 @@ func serve(c *cli.Context) error { e.PUT("/class/join", handler.JoinClass) e.PUT("/class/leave", d.LeaveClass) e.POST("/class/members", d.GetClassMembers) + e.POST("/class/submit", handler.SubmitAssignment) // collaborative coding management e.POST("/collab/create", d.CreateCollab)