MCPcopy
hub / github.com/yusing/godoxy / Set

Function Set

internal/api/v1/file/set.go:28–59  ·  view source on GitHub ↗

@x-id "set" @BasePath /api/v1 @Summary Set file content @Description Set file content @Tags file @Accept text/plain @Produce json @Param type query FileType true "Type" @Param filename query string true "Filename" @Param file body string true "File" @Success 200 {object} ap

(c *gin.Context)

Source from the content-addressed store, hash-verified

26// @Failure 500 {object} apitypes.ErrorResponse
27// @Router /file/content [put]
28func Set(c *gin.Context) {
29 var request SetFileContentRequest
30 if err := c.ShouldBindQuery(&request); err != nil {
31 c.JSON(http.StatusBadRequest, apitypes.Error("invalid request", err))
32 return
33 }
34
35 content, err := c.GetRawData()
36 if err != nil {
37 c.Error(apitypes.InternalServerError(err, "failed to read file"))
38 return
39 }
40
41 if valErr := validateFile(request.FileType, content); valErr != nil {
42 c.JSON(http.StatusBadRequest, apitypes.Error("invalid file", valErr))
43 return
44 }
45
46 f, err := request.FileType.OpenFile(request.Filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
47 if err != nil {
48 c.Error(apitypes.InternalServerError(err, "failed to open file"))
49 return
50 }
51 defer f.Close()
52
53 _, err = f.Write(content)
54 if err != nil {
55 c.Error(apitypes.InternalServerError(err, "failed to write file"))
56 return
57 }
58 c.JSON(http.StatusOK, apitypes.Success("file set"))
59}

Callers

nothing calls this directly

Calls 5

validateFileFunction · 0.85
OpenFileMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected