import { NextResponse } from 'next/server' import { S3Client, PutObjectCommand, DeleteObjectCommand } from '@aws-sdk/client-s3' const Bucket = process.env.AMPLIFY_BUCKET const s3 = new S3Client({ region: process.env.AWS_REGION, credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, }, }) export async function GET(req) { try { const searchParams = req.nextUrl.searchParams const q = searchParams.get('q') const fileNm = searchParams.get('fileNm') const zoom = searchParams.get('zoom') /** 구글 맵을 이미지로 변경하기 위한 API */ const API_KEY = 'AIzaSyDO7nVR1N_D2tKy60hgGFavpLaXkHpiHpc' const targetUrl = `https://maps.googleapis.com/maps/api/staticmap?center=${q}&zoom=${zoom}&maptype=satellite&size=640x640&scale=1&key=${API_KEY}` const decodeUrl = decodeURIComponent(targetUrl) /** 구글 맵을 이미지로 변경하기 위한 API 호출 */ const response = await fetch(decodeUrl) const data = await response.arrayBuffer() // const buffer = Buffer.from(data) /** 변경된 이미지를 S3에 업로드 */ const Body = Buffer.from(data) const Key = `maps/${fileNm}` const ContentType = 'image/png' await s3.send( new PutObjectCommand({ Bucket, Key, Body, ContentType, }), ) const result = { filePath: `https://${process.env.AMPLIFY_BUCKET}.s3.${process.env.AWS_REGION}.amazonaws.com/${Key}`, fileName: Key, } return NextResponse.json(result) } catch (error) { console.error(error) return NextResponse.json({ error: 'Failed to upload image' }, { status: 500 }) } } export async function DELETE(req) { try { const searchParams = req.nextUrl.searchParams const Key = `maps/${searchParams.get('fileName')}` console.log('🚀 ~ DELETE ~ Key:', Key) if (!Key) { return NextResponse.json({ error: 'fileName parameter is required' }, { status: 400 }) } await s3.send( new DeleteObjectCommand({ Bucket, Key, }), ) return NextResponse.json({ message: '이미지 삭제 성공' }, { status: 200 }) } catch (error) { console.error('S3 Delete Error:', error) return NextResponse.json({ error: 'Failed to delete image' }, { status: 500 }) } }