package v1

import (
	"github.com/IceWhaleTech/CasaOS/model"
	"github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err"
	"github.com/IceWhaleTech/CasaOS/service"
	model2 "github.com/IceWhaleTech/CasaOS/service/model"
	"github.com/gin-gonic/gin"
	"net/http"
	"net/url"
)

// @Summary 获取短链列表
// @Produce  application/json
// @Accept application/json
// @Tags shortcuts
// @Param username formData string true "User name"
// @Param pwd  formData string true "password"
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /shortcuts/list [get]
func GetShortcutsList(c *gin.Context) {
	list := service.MyService.Shortcuts().GetList()
	c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: list})
}

// @Summary 添加shortcuts
// @Produce  application/json
// @Accept application/json
// @Tags shortcuts
// @Param title formData string true "title"
// @Param url  formData string true "url"
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /shortcuts/add [post]
func PostShortcutsAdd(c *gin.Context) {
	var m model2.ShortcutsDBModel

	c.BindJSON(&m)
	if len(m.Url) == 0 || len(m.Title) == 0 {
		c.JSON(http.StatusOK, model.Result{Success: oasis_err.INVALID_PARAMS, Message: oasis_err.GetMsg(oasis_err.INVALID_PARAMS)})
		return
	}
	u, err := url.Parse(m.Url)
	if err != nil {
		c.JSON(http.StatusOK, model.Result{Success: oasis_err.SHORTCUTS_URL_ERROR, Message: oasis_err.GetMsg(oasis_err.SHORTCUTS_URL_ERROR), Data: err.Error()})
		return
	}
	m.Icon = "https://api.faviconkit.com/" + u.Host + "/57"
	service.MyService.Shortcuts().AddData(m)
	c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS)})

}

// @Summary 删除shortcuts
// @Produce  application/json
// @Accept application/json
// @Tags shortcuts
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /shortcuts/del/{id} [post]
func DeleteShortcutsDelete(c *gin.Context) {
	id := c.Param("id")
	service.MyService.Shortcuts().DeleteData(id)
	c.JSON(http.StatusOK, model.Result{
		Success: oasis_err.SUCCESS,
		Message: oasis_err.GetMsg(oasis_err.SUCCESS),
		Data:    "",
	})
}

// @Summary 编辑shortcuts
// @Produce  application/json
// @Accept application/json
// @Tags shortcuts
// @Param title formData string true "title"
// @Param url  formData string true "url"
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /shortcuts/edit [put]
func PutShortcutsEdit(c *gin.Context) {
	var m model2.ShortcutsDBModel
	c.BindJSON(&m)
	if len(m.Url) == 0 || len(m.Title) == 0 {
		c.JSON(http.StatusOK, model.Result{Success: oasis_err.INVALID_PARAMS, Message: oasis_err.GetMsg(oasis_err.INVALID_PARAMS)})
		return
	}
	u, err := url.Parse(m.Url)
	if err != nil {
		c.JSON(http.StatusOK, model.Result{Success: oasis_err.SHORTCUTS_URL_ERROR, Message: oasis_err.GetMsg(oasis_err.SHORTCUTS_URL_ERROR), Data: err.Error()})
		return
	}
	m.Icon = "https://api.faviconkit.com/" + u.Host + "/57"
	service.MyService.Shortcuts().EditData(m)
	c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: ""})
}
