package dingding

import (
	"encoding/json"
	"fmt"
	"net/http"
	"strings"
)

// DingClient
var (
//DingClient *DingConfig
)

type DingConfig struct {
	AccessToken string
	Url         string
}

type DingMsg struct {
	project string
	AppMode string
	Url     string
	Info    string
	Err     error
}
type DingText struct {
	Content string `json:"content"`
}

type DingMsgInfo struct {
	Msgtype string   `json:"msgtype"`
	Text    DingText `json:"text"`
}
var dingClient *DingConfig

func LoadAccessToken(accessToken string) {
	dingClient = &DingConfig{
		AccessToken: accessToken,
		Url:         "https://oapi.dingtalk.com/robot/send",
	}
}

func (d *DingConfig) SendMsg(text string) {

	url := d.Url + "?access_token=" + d.AccessToken

	dingMsgInfo := DingMsgInfo{
		Msgtype: "text",
		Text: DingText{
			Content: text,
		},
	}

	dingMsgInfoByte, _ := json.Marshal(dingMsgInfo)

	res, err := http.Post(
		url,
		"application/json",
		strings.NewReader(string(dingMsgInfoByte)))
	if err != nil {
		fmt.Println("发送错误:", url, err, string(dingMsgInfoByte))
	}

	defer res.Body.Close()

	return
}

func Send(info string) {
	msg := DingMsg{
		Info: info,
	}

	SendInfo(msg)
}

func SendInfo(msg DingMsg) {

	text := "通知:\n" + msg.Info

	if msg.Err != nil {
		text = text + "错误:" + msg.Err.Error() + "/n"
	}

	dingClient.SendMsg(text)

	return
}