package lambdasub

import (
	"context"
	"encoding/base64"
	"fmt"
	"lark-section/parsing"
	"lark-section/secretRU"
	larkalarm "lark-section/sendlark"
	"os"
	"strings"

	"github.com/aws/aws-lambda-go/events"
)

var (
	secretName = "storage-aws-security-bulletin"
	region     = "us-west-2"
)

var Larkid = func() string {
	if v, ok := os.LookupEnv("LARKID"); ok {
		return strings.TrimSpace(v)
	}
	return ""
}()

func Handler(ctx context.Context, request events.APIGatewayV2HTTPRequest) {

	//1、获取最新漏洞
	vulstr := ""
	if s, err := parsing.RunByCount(1); err == nil {
		vulstr = s
	} else {
		vulstr = "error:" + err.Error()
		fmt.Println(vulstr)
		return
	}

	//2、读取 secret manager 中存储的漏洞信息

	vulstr_b64 := base64.StdEncoding.EncodeToString([]byte(vulstr))
	vulstr_b64_secret, err := secretRU.ReadSecret(secretName, region)
	if err != nil {
		fmt.Println("Read error:" + err.Error())
		return
	}

	//3、判断漏洞是否相同
	if vulstr_b64 == vulstr_b64_secret {
		fmt.Println("no new vul")
		return
	} else {
		//update secret manager,vulstr 为漏洞的明文信息，函数会自动处理 base64 编码
		secretRU.UpdateSecret(secretName, region, vulstr)
		//send lark message function
		//fmt.Println(" send lark message")
		larkalarm.Send_alarm_to_lark(Larkid, vulstr)
	}

}
