1 line
2.3 KiB
JavaScript
1 line
2.3 KiB
JavaScript
"use strict";exports.id=9684,exports.ids=[9684],exports.modules={39684:(e,t,n)=>{n.r(t),n.d(t,{S3_CONFIG:()=>s,createUserFolderStructure:()=>d,deleteObject:()=>i,getObjectContent:()=>a,getPublicUrl:()=>u,listUserObjects:()=>l,putObject:()=>c,s3Client:()=>o,uploadMissionFile:()=>p});var r=n(91043);let s={endpoint:"https://dome-api.slm-lab.net",region:"us-east-1",bucket:process.env.S3_BUCKET||"pages",accessKey:"4aBT4CMb7JIMMyUtp4Pl",secretKey:"HGn39XhCIlqOjmDVzRK9MED2Fci2rYvDDgbLFElg"},o=new r.S3Client({region:s.region,endpoint:s.endpoint,credentials:{accessKeyId:s.accessKey,secretAccessKey:s.secretKey},forcePathStyle:!0});async function c(e,t,n){let c=new r.PutObjectCommand({Bucket:s.bucket,Key:e,Body:"string"==typeof t?Buffer.from(t,"utf-8"):t,ContentType:n||"text/plain"});return await o.send(c),{key:e}}async function a(e){try{let t=new r.GetObjectCommand({Bucket:s.bucket,Key:e}),n=await o.send(t);if(!n.Body)return null;let c=[];for await(let e of n.Body)c.push(e);return Buffer.concat(c).toString("utf-8")}catch(e){return console.error("Error getting object content:",e),null}}async function i(e){let t=new r.DeleteObjectCommand({Bucket:s.bucket,Key:e});await o.send(t)}async function l(e,t){let n=`user-${e}/${t}/`,c=new r.ListObjectsV2Command({Bucket:s.bucket,Prefix:n,Delimiter:"/"});return((await o.send(c)).Contents||[]).filter(e=>e.Key&&!e.Key.endsWith("/")&&!e.Key.includes(".placeholder")).map(e=>({key:e.Key,name:e.Key.split("/").pop()||e.Key,size:e.Size,lastModified:e.LastModified}))}function u(e,t){if(!e)return"";if(e.startsWith("http"))return e;let n=e.startsWith("/")?e.substring(1):e,r=s.endpoint?.replace(/\/$/,""),o=t||s.bucket;return r?`${r}/${o}/${n}`:n}async function d(e){for(let t of["notes","diary","health","contacts"])try{let n=`user-${e}/${t}/`;await c(n,"","application/x-directory");let r=`user-${e}/${t}/.placeholder`;await c(r,"Folder placeholder","text/plain"),console.log(`Created folder: ${n}`)}catch(n){console.error(`Error creating folder ${t} for user ${e}:`,n)}}async function p({missionId:e,file:t,type:n}){let r=new FormData;r.append("missionId",e),r.append("type",n),r.append("file",t);let s=await fetch("/api/missions/upload",{method:"POST",body:r});return s.ok?{success:!0,data:await s.json()}:{success:!1,error:(await s.json().catch(()=>({}))).error||"Upload failed"}}}}; |