|
5 | 5 |
|
6 | 6 | "github.com/codern-org/codern/domain" |
7 | 7 | errs "github.com/codern-org/codern/domain/error" |
| 8 | + "github.com/codern-org/codern/internal/validator" |
8 | 9 | "github.com/codern-org/codern/platform/server/middleware" |
9 | 10 | "github.com/codern-org/codern/platform/server/payload" |
10 | 11 | "github.com/codern-org/codern/platform/server/response" |
@@ -39,18 +40,29 @@ func (c *AssignmentController) Create(ctx *fiber.Ctx) error { |
39 | 40 | user := middleware.GetUserFromCtx(ctx) |
40 | 41 | testcaseFiles := domain.CreateTestcaseFiles(pl.TestcaseInputFiles, pl.TestcaseOutputFiles) |
41 | 42 |
|
| 43 | + fileMimeType, err := validator.GetMimeType(pl.DetailFile) |
| 44 | + if err != nil { |
| 45 | + return err |
| 46 | + } |
| 47 | + if fileMimeType != "text/plain" && fileMimeType != "application/pdf" { |
| 48 | + return errs.New(errs.ErrBodyParser, "unsupported file type") |
| 49 | + } |
| 50 | + |
42 | 51 | if err := c.assignmentUsecase.Create( |
43 | 52 | user.Id, |
44 | 53 | pl.WorkspaceId, |
45 | 54 | &domain.CreateAssignment{ |
46 | | - Name: pl.Name, |
47 | | - Description: pl.Description, |
48 | | - MemoryLimit: pl.MemoryLimit, |
49 | | - TimeLimit: pl.TimeLimit, |
50 | | - Level: pl.Level, |
51 | | - PublishDate: pl.PublishDate, |
52 | | - DueDate: pl.DueDate, |
53 | | - DetailFile: pl.DetailFile, |
| 55 | + Name: pl.Name, |
| 56 | + Description: pl.Description, |
| 57 | + MemoryLimit: pl.MemoryLimit, |
| 58 | + TimeLimit: pl.TimeLimit, |
| 59 | + Level: pl.Level, |
| 60 | + PublishDate: pl.PublishDate, |
| 61 | + DueDate: pl.DueDate, |
| 62 | + DetailFile: &domain.File{ |
| 63 | + Reader: pl.DetailFile, |
| 64 | + MimeType: fileMimeType, |
| 65 | + }, |
54 | 66 | TestcaseFiles: testcaseFiles, |
55 | 67 | }, |
56 | 68 | ); err != nil { |
@@ -202,18 +214,29 @@ func (c *AssignmentController) Update(ctx *fiber.Ctx) error { |
202 | 214 | user := middleware.GetUserFromCtx(ctx) |
203 | 215 | testcaseFiles := domain.CreateTestcaseFiles(pl.TestcaseInputFiles, pl.TestcaseOutputFiles) |
204 | 216 |
|
| 217 | + fileMimeType, err := validator.GetMimeType(pl.DetailFile) |
| 218 | + if err != nil { |
| 219 | + return err |
| 220 | + } |
| 221 | + if fileMimeType != "text/plain" && fileMimeType != "application/pdf" { |
| 222 | + return errs.New(errs.ErrBodyParser, "unsupported file type") |
| 223 | + } |
| 224 | + |
205 | 225 | if err := c.assignmentUsecase.Update( |
206 | 226 | user.Id, |
207 | 227 | pl.AssignmentId, |
208 | 228 | &domain.UpdateAssignment{ |
209 | | - Name: pl.Name, |
210 | | - Description: pl.Description, |
211 | | - MemoryLimit: pl.MemoryLimit, |
212 | | - TimeLimit: pl.TimeLimit, |
213 | | - Level: pl.Level, |
214 | | - PublishDate: pl.PublishDate, |
215 | | - DueDate: pl.DueDate, |
216 | | - DetailFile: pl.DetailFile, |
| 229 | + Name: pl.Name, |
| 230 | + Description: pl.Description, |
| 231 | + MemoryLimit: pl.MemoryLimit, |
| 232 | + TimeLimit: pl.TimeLimit, |
| 233 | + Level: pl.Level, |
| 234 | + PublishDate: pl.PublishDate, |
| 235 | + DueDate: pl.DueDate, |
| 236 | + DetailFile: &domain.File{ |
| 237 | + Reader: pl.DetailFile, |
| 238 | + MimeType: fileMimeType, |
| 239 | + }, |
217 | 240 | TestcaseFiles: &testcaseFiles, |
218 | 241 | }, |
219 | 242 | ); err != nil { |
|
0 commit comments