github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/internal/server/controller/mock.go (about) 1 package controller 2 3 import ( 4 consts "github.com/easysoft/zendata/internal/pkg/const" 5 "github.com/easysoft/zendata/internal/pkg/domain" 6 "github.com/easysoft/zendata/internal/pkg/model" 7 serverService "github.com/easysoft/zendata/internal/server/service" 8 "github.com/kataras/iris/v12" 9 "github.com/kataras/iris/v12/context" 10 ) 11 12 type MockCtrl struct { 13 MockService *serverService.MockService `inject:""` 14 BaseCtrl 15 } 16 17 func (c *MockCtrl) List(ctx iris.Context) { 18 req := model.ReqData{} 19 20 err := ctx.ReadQuery(&req) 21 if err != nil { 22 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 23 return 24 } 25 26 list, total, _ := c.MockService.List(req.Keywords, req.Page) 27 28 ctx.JSON(c.SuccessResp(iris.Map{"list": list, "total": total})) 29 } 30 31 func (c *MockCtrl) Get(ctx iris.Context) { 32 id, _ := ctx.Params().GetInt("id") 33 34 data, _ := c.MockService.Get(id) 35 36 ctx.JSON(c.SuccessResp(data)) 37 } 38 39 func (c *MockCtrl) Upload(ctx iris.Context) { 40 f, fh, err := ctx.FormFile("file") 41 if err != nil { 42 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 43 return 44 } 45 defer f.Close() 46 47 name, spec, mockConf, dataConf, pth, err, dataPath := c.MockService.Upload(ctx, fh) 48 if err != nil { 49 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 50 return 51 } 52 53 ctx.JSON(c.SuccessResp(iris.Map{"name": name, "spec": spec, "mock": mockConf, "data": dataConf, "path": pth, "dataPath": dataPath})) 54 } 55 56 func (c *MockCtrl) GetPreviewData(ctx iris.Context) { 57 id, _ := ctx.URLParamInt("id") 58 mock, _ := c.MockService.Get(id) 59 60 item, _ := c.MockService.GetPreviewData(id) 61 62 data := iris.Map{"item": item, "path": mock.Path} 63 64 ctx.JSON(c.SuccessResp(data)) 65 } 66 67 func (c *MockCtrl) GetPreviewResp(ctx iris.Context) { 68 req := domain.MockPreviewReq{} 69 if err := ctx.ReadJSON(&req); err != nil { 70 ctx.JSON(c.ErrResp(consts.ParamErr, err.Error())) 71 } 72 73 data, _ := c.MockService.GetPreviewResp(req) 74 75 ctx.JSON(c.SuccessResp(data)) 76 } 77 78 func (c *MockCtrl) Save(ctx iris.Context) { 79 req := model.ZdMock{} 80 if err := ctx.ReadJSON(&req); err != nil { 81 ctx.JSON(c.ErrResp(consts.ParamErr, err.Error())) 82 } 83 84 err := c.MockService.Save(&req) 85 if err != nil { 86 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 87 return 88 } 89 90 ctx.JSON(c.SuccessResp(iris.Map{"id": req.ID})) 91 } 92 93 func (c *MockCtrl) Remove(ctx iris.Context) { 94 id, err := ctx.Params().GetInt("id") 95 if err != nil { 96 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 97 return 98 } 99 100 err = c.MockService.Remove(id) 101 if err != nil { 102 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 103 return 104 } 105 106 ctx.JSON(c.SuccessResp(nil)) 107 } 108 109 func (c *MockCtrl) StartMockService(ctx iris.Context) { 110 id, err := ctx.URLParamInt("id") 111 if err != nil { 112 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 113 return 114 } 115 116 act := ctx.URLParam("act") 117 118 if act != "stop" { 119 err = c.MockService.StartMockService(id) 120 } else { 121 err = c.MockService.StopMockService(id) 122 } 123 124 if err != nil { 125 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 126 return 127 } 128 129 ctx.JSON(c.SuccessResp(nil)) 130 } 131 132 func (c *MockCtrl) Mock(ctx iris.Context) { 133 paths := ctx.Params().Get("paths") 134 mediaType := ctx.URLParam("contentType") 135 code := ctx.URLParam("code") 136 if code == "" { 137 code = "200" 138 } 139 if mediaType == "" { 140 mediaType = ctx.GetHeader("Content-Type") 141 if mediaType == "" { 142 mediaType = "application/json" 143 } 144 } 145 146 resp, err := c.MockService.GetResp(paths, ctx.Method(), code, mediaType) 147 if err != nil { 148 resp = iris.Map{"err": err.Error()} 149 } 150 151 ctx.JSON(resp, context.JSON{Indent: " "}) 152 } 153 154 // SampleSrc 155 func (c *MockCtrl) ListSampleSrc(ctx iris.Context) { 156 mockId, _ := ctx.Params().GetInt("id") 157 158 mp, err := c.MockService.ListSampleSrc(mockId) 159 if err != nil { 160 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 161 return 162 } 163 164 ctx.JSON(c.SuccessResp(mp)) 165 } 166 func (c *MockCtrl) ChangeSampleSrc(ctx iris.Context) { 167 mockId, _ := ctx.Params().GetInt("id") 168 169 req := model.ZdMockSampleSrc{} 170 if err := ctx.ReadJSON(&req); err != nil { 171 ctx.JSON(c.ErrResp(consts.ParamErr, err.Error())) 172 } 173 174 err := c.MockService.ChangeSampleSrc(mockId, req) 175 if err != nil { 176 ctx.JSON(c.ErrResp(consts.CommErr, err.Error())) 177 return 178 } 179 180 ctx.JSON(c.SuccessResp(nil)) 181 }