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  }