package com.reyun.bpu.dmp.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.core.sync.ResponseTransformer;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * @program: openapi_v1
 *
 * @description: a
 *
 * @author: Leo
 *
 * @create: 2019-07-02 16:48
 **/

public class S3FileUtil {

    private final Logger logger = LoggerFactory.getLogger(S3FileUtil.class);
    private String BUCKET = "test";
    private String UPLOADPATH = "s3://reyunbpu/fox/liyanbin_1986.log";

    /**
     *
     * @param buffer 本地文件流
     * @param filePath 本地文件路径
     * @return
     */
//    public void uploadToS3(String filePath, MappedByteBuffer buffer) {
//
//        try {
//
//            logger.info(String.format("s3 put , bulid S3Client begin ... params:[bucket=%s,fileKey=%s,localFilePath=%s]", BUCKET, UPLOADPATH, filePath));
//
//            //上传S3文件
//            S3Client s3 = S3Client.builder().credentialsProvider(InstanceProfileCredentialsProvider.builder().build()).build();
//
//            logger.info("s3 build S3Clent OK ! get path begin ... ");
//
//            // 上传文件
//            Path path = Paths.get(filePath);
//
//            logger.info("s3 get path OK ! putObject begin ... ");
//
//            //1、写文件:这种方式需要用上传的文件先写到本地,在从本地上传到S3,因此换一种流的方式直接写到S3
//            /**s3.putObject(PutObjectRequest.builder().bucket(BUCKET).key(uploadPath).build(), path);*/
//            //2、写流到s3
//            s3.putObject(PutObjectRequest.builder().bucket(BUCKET).key(UPLOADPATH)
//                            .build(), RequestBody.fromByteBuffer(buffer));
//            logger.info("s3 putObject end ... ");
//
//        } catch (Exception e) {
//
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     *
//     * @param filePath 本地文件路径及名称(/file/images/test.jpg)
//     * @param downLoadPath S3存放路径及名称(/yubin/image/aa.jpg)
//     * @throws IOException
//     */
//    public  void loadFromS3(String filePath, String downLoadPath) throws IOException {
//        //下载S3文件
//        try {
//            S3Client s3 = S3Client.builder()
//                    .credentialsProvider(InstanceProfileCredentialsProvider.builder().build())
//                    .build();
//            // 下载文件
//            Path path = Paths.get(filePath);
//            s3.getObject(GetObjectRequest.builder().bucket(BUCKET).key("/"+downLoadPath).build(),
//                    ResponseTransformer.toFile(path));
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
}