package ftps_protocol_crawler

import (
	"encoding/json"
	config "git.loafle.net/overflow/overflow_probe/agent_api/config_manager"
	"git.loafle.net/overflow/overflow_probe/crawler"
	"git.loafle.net/overflow/overflow_probe/matcher/ftp"
)

type FTPSHealthCrawler struct {
	crawler.SocketHeahthCrawler
}

func (r *FTPSHealthCrawler) Internal(params config.Config) ([]byte, error) {

	b, err := r.CheckHeahth(params)
	if err != nil {
		return nil, err
	}
	return json.Marshal(b)
}

func NewFTPSHealthCrawler() *FTPSHealthCrawler {
	r := &FTPSHealthCrawler{}
	r.SetInternal(r)
	r.SetMatcher(ftp.NewFTPMatcher())

	return r
}

////////////// Delegate.Get implement /////////////////
//type FTPSProtocol struct{}
//
//func (r *FTPSProtocol) Get(input *param.Input, output *param.Output) error {
//
//	rr := &protocol.HealthRequest{}
//	json.Unmarshal(input.Data, &rr)
//
//	match, err := ftp.StartCheckFTPS(input.Ip, strconv.Itoa(int(input.Port)))
//
//	if err != nil {
//		return err
//	}
//
//
//	retVal := &protocol.HealthResponse{}
//	retVal.IsMatch = match
//
//	b, err := json.Marshal(retVal)
//
//	if err != nil {
//		return err
//	}
//
//	*output = param.Output{Data: b}
//	return nil
//}
//
//func start() {
//
//	rpc.SetDelegate(new(FTPSProtocol))
//	err := rpc.StartJSONRPC()
//	if err != nil {
//		log.Fatal(err)
//	}
//}
//
//func main() {
//	start()
//}
