package test

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"strings"
	"testing"
)

//// 删除除了 callback 文件之外的所有文件
//func TestDeleteExceptCallback(t *testing.T) {
//	// Define OSS configuration
//	endpoint := "http://pji-bucket1.oss.icvdc.com"
//	accessKeyID := "n8glvFGS25MrLY7j"
//	accessKeySecret := "xZ2Fozoarpfw0z28FUhtg8cu0yDc5d"
//	bucketName := "pji-bucket1"
//
//	// Create an OSS client
//	client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(true))
//	if err != nil {
//		fmt.Printf("Failed to create OSS client: %v\n", err)
//		return
//	}
//
//	// Get the bucket
//	bucket, err := client.Bucket(bucketName)
//	if err != nil {
//		fmt.Printf("Failed to get bucket: %v\n", err)
//		return
//	}
//
//	// Define an array of directories (prefixes) to scan
//	//directories := []string{
//	//	"pjibot_delivery/pjibot-P1YVPS1M22CM00020/data_parse/",
//	//	"pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse/",
//	//}
//	directories := []string{
//		"pjibot_patrol/pjibot-P1YVXJ1M231M00022/data_parse",
//		"pjibot_patrol/pjibot-P1YVXJ1M231M00023/data_parse",
//	}
//
//	for _, dir := range directories {
//		// List objects in the directory
//		marker := ""
//		for {
//			lsRes, err := bucket.ListObjects(oss.Prefix(dir), oss.Marker(marker))
//			if err != nil {
//				fmt.Printf("Failed to list objects in directory %s: %v\n", dir, err)
//				break
//			}
//
//			for _, object := range lsRes.Objects {
//				objectKey := object.Key
//
//				// Process files not containing "callback"
//				if !strings.Contains(objectKey, "callback") {
//					err := bucket.DeleteObject(objectKey)
//					if err != nil {
//						fmt.Printf("Failed to delete object %s: %v\n", objectKey, err)
//					} else {
//						fmt.Printf("Deleted object: %s\n", objectKey)
//					}
//					continue
//				}
//
//				// Rename files containing "callback_done" to "callback"
//				if strings.Contains(objectKey, "callback_done") {
//					newKey := strings.Replace(objectKey, "callback_done", "callback", 1)
//					err, _ = bucket.CopyObject(objectKey, newKey)
//					if err != nil {
//						fmt.Printf("Failed to copy object %s to %s: %v\n", objectKey, newKey, err)
//						err = bucket.DeleteObject(objectKey)
//					} else {
//						err = bucket.DeleteObject(objectKey)
//						if err != nil {
//							fmt.Printf("Failed to delete original object %s after renaming: %v\n", objectKey, err)
//						} else {
//							fmt.Printf("Renamed object: %s to %s\n", objectKey, newKey)
//						}
//					}
//				}
//			}
//
//			// Exit the loop if all objects are processed
//			if !lsRes.IsTruncated {
//				break
//			}
//			marker = lsRes.NextMarker
//		}
//	}
//}

// 删除指定csv文件,为了重新升成 report.pdf
func TestDeleteAllTrajectoryPjiCsv(t *testing.T) {
	// Define OSS configuration
	endpoint := "http://pji-bucket1.oss.icvdc.com"
	accessKeyID := "n8glvFGS25MrLY7j"
	accessKeySecret := "xZ2Fozoarpfw0z28FUhtg8cu0yDc5d"
	bucketName := "pji-bucket1"

	// Create an OSS client
	client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(true))
	if err != nil {
		fmt.Printf("Failed to create OSS client: %v\n", err)
		return
	}

	// Get the bucket
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Printf("Failed to get bucket: %v\n", err)
		return
	}

	// Define directories to scan
	directories := []string{
		"pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse",
		"pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse",
	}

	for _, dir := range directories {
		// List objects in the given prefix
		hasNext := true
		marker := ""

		for hasNext {
			lsRes, err := bucket.ListObjects(oss.Prefix(dir), oss.Marker(marker))
			if err != nil {
				fmt.Printf("Failed to list objects in directory %s: %v\n", dir, err)
				break
			}

			for _, object := range lsRes.Objects {
				if strings.Contains(object.Key, "trajectory_pji.csv") {
					if err := bucket.DeleteObject(object.Key); err != nil {
						fmt.Printf("Failed to delete %s: %v\n", object.Key, err)
					} else {
						fmt.Printf("Deleted %s\n", object.Key)
					}
				}
			}

			hasNext = lsRes.IsTruncated
			marker = lsRes.NextMarker
		}
	}
}

// 删除
func TestDeletePcd(t *testing.T) {
	// Define OSS configuration
	endpoint := "http://pji-bucket1.oss.icvdc.com"
	accessKeyID := "n8glvFGS25MrLY7j"
	accessKeySecret := "xZ2Fozoarpfw0z28FUhtg8cu0yDc5d"
	bucketName := "pji-bucket1"

	// Create an OSS client
	client, err := oss.New(endpoint, accessKeyID, accessKeySecret, oss.UseCname(true))
	if err != nil {
		fmt.Printf("Failed to create OSS client: %v\n", err)
		return
	}

	// Get the bucket
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Printf("Failed to get bucket: %v\n", err)
		return
	}

	// Define directories to scan
	directories := []string{
		"pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse",
		"pjibot_delivery/pjibot-P1YYPS1M227M00107/data_parse",
	}

	for _, dir := range directories {
		// List objects in the given prefix
		hasNext := true
		marker := ""

		for hasNext {
			lsRes, err := bucket.ListObjects(oss.Prefix(dir), oss.Marker(marker))
			if err != nil {
				fmt.Printf("Failed to list objects in directory %s: %v\n", dir, err)
				break
			}

			for _, object := range lsRes.Objects {
				if strings.Contains(object.Key, "pcd_overlook.mp4") {
					if err := bucket.DeleteObject(object.Key); err != nil {
						fmt.Printf("Failed to delete %s: %v\n", object.Key, err)
					} else {
						fmt.Printf("Deleted %s\n", object.Key)
					}
				}
			}

			hasNext = lsRes.IsTruncated
			marker = lsRes.NextMarker
		}
	}
}