package main

import (
	"Lambda-Test/lib"
	"bytes"
	"compress/gzip"
	"context"
	"encoding/base64"
	"fmt"
	"github.com/aws/aws-lambda-go/lambda"
	"io"
)

type cloudwatchLogsEvent struct {
	AWSLogs struct {
		Data string `json:"data"`
	} `json:"awslogs"`
}

func handleRequest(ctx context.Context, event cloudwatchLogsEvent) (string, error) {
	// Decode from base64
	data, err := base64.StdEncoding.DecodeString(event.AWSLogs.Data)
	if err != nil {
		return "", fmt.Errorf("error while decoding cloudwatch logs data: %v", err)
	}

	// Decompress the data
	buffer := bytes.NewBuffer(data)
	reader, err := gzip.NewReader(buffer)
	if err != nil {
		return "", fmt.Errorf("error while creating gzip reader: %v", err)
	}
	defer reader.Close()

	// Read the uncompressed data
	uncompressedData, err := io.ReadAll(reader)
	if err != nil {
		return "", fmt.Errorf("error while reading uncompressed data: %v", err)
	}

	// Print the uncompressed data
	fmt.Println(string(uncompressedData))
	lib.SendMsg(string(uncompressedData))

	return "CloudWatch Logs data processed successfully", nil
}

func main() {
	lambda.Start(handleRequest)
}
