package uploader

import (
	"bytes"
	Encryption "cf-experian/module_server/handlers/Modules/Encryption"
	"net/http"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
)

func Upload(sb string, path string) string {

	//return "S3 Commented"
	log.Print("Upload func")
	aws_access_key_id := Encryption.Get(os.Getenv("CFAK"))
	aws_secret_access_key := Encryption.Get(os.Getenv("CFSA"))
	token := ""
	creds := credentials.NewStaticCredentials(aws_access_key_id, aws_secret_access_key, token)
	_, err := creds.Get()
	if err != nil {
		log.Error().Err(err).Msg(err.Error())
	}
	cfg := aws.NewConfig().WithRegion(Encryption.Get(os.Getenv("CFRG"))).WithCredentials(creds)
	svc := s3.New(session.New(), cfg)

	//file, err := os.Open("go.sum")
	//if err != nil {
	//  log.Error().Err(err).Msg(err.Error())
	//}
	//defer file.Close()
	//fileInfo, _ := file.Stat()
	//size := fileInfo.Size()
	buffer := []byte(sb) //make([]byte, size) // read file content to buffer

	fileBytes := bytes.NewReader(buffer)
	fileType := http.DetectContentType(buffer)
	params := &s3.PutObjectInput{
		Bucket:        aws.String(Encryption.Get(os.Getenv("CFBK"))),
		Key:           aws.String(path),
		Body:          fileBytes,
		ContentLength: aws.Int64(int64(len(sb))),
		ContentType:   aws.String(fileType),
	}
	log.Print("Upload : PutObjectInput")
	log.Print(params)
	log.Print("AWS : 403")
	resp, _err_res := svc.PutObject(params)
	log.Print(_err_res)
	log.Print("Upload : PutObject Called")
	if _err_res != nil {
		log.Print(_err_res.Error())
		log.Print("Error Upload : PutObject Called")
	}
	log.Print("response %s", awsutil.StringValue(resp))
	return awsutil.StringValue(resp)
}
