public JSONObject postRegisterSns(HttpServletRequest request, @RequestBody ObjectNode obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Long tripNo = obj.get("tripNo").asLong();
Long expNo = obj.get("expNo").asLong();
SnsVO sns = mapper.treeToValue(obj.get("sns"), SnsVO.class);
}
// AWS - S3Client 생성
public AwsUtil() {
ProfileCredentialsProvider credentialsProvider = ProfileCredentialsProvider.create();
Region region = Region.AP_NORTHEAST_2;
this.s3 = S3Client.builder().region(region).credentialsProvider(credentialsProvider).build();
}
// AWS - object url 얻기
public static String getImageURL(String keyName) {
AwsUtil awsUtil = new AwsUtil();
GetUrlRequest request = GetUrlRequest.builder().bucket(BUCKET_NAME).key(keyName).build();
URL url = awsUtil.s3.utilities().getUrl(request);
awsUtil.s3.close();
return url.toString();
}
// AWS - objects 삭제
public static void deleteBucketObjects(String[] keyName) {
AwsUtil awsUtil = new AwsUtil();
ArrayList<ObjectIdentifier> toDelete = new ArrayList<>();
for(String key : keyName) {
toDelete.add(ObjectIdentifier.builder().key(key).build());
}
DeleteObjectsRequest dor = DeleteObjectsRequest.builder().bucket(BUCKET_NAME)
.delete(Delete.builder().objects(toDelete).build()).build();
awsUtil.s3.deleteObjects(dor);
awsUtil.s3.close();
}
// 토큰 - userNo 받아오기
public static Long getUserNo(HttpServletRequest request) {
String jwt = request.getHeader("Authorization");
String decodeStr = EncodingUtil.getDecodedStr(jwt.replace('.', '@').split("@")[1]);
JSONObject jsonObj = JsonUtil.getStringToJsonObj(decodeStr);
return (Long) jsonObj.get("userno");
}
// JSON - Java 객체를 Json 문자열로 변환
public static String getObjectToJsonString(Object obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(obj);
}
String profile = prepo.findById(user.getUserNo()).orElse(null).getProfilePhoto();
String profileUrl = AwsUtil.getImageURL(profile);
@PostMapping("/register")
public SnsVO postRegisterSns(@RequestBody ObjectNode obj) throws JsonProcessingException {
// Object로부터 각 값을 뽑아옴
ObjectMapper mapper = new ObjectMapper();
Long tripNo = obj.get("tripNo").asLong();
Long expNo = obj.get("expNo").asLong();
String hashtag = obj.get("hashtag").asText();
SnsVO sns = mapper.treeToValue(obj.get("sns"), SnsVO.class);
// 해시태그는 배열로 들어가기 때문에 List 선언 후 '#'을 추가해 저장
List<HashtagVO> tagList = new ArrayList<>();
String[] tags = hashtag.split("@");
for(String tag : tags) {
HashtagVO t = HashtagVO.builder().htHashtag("#" + tag).sns(sns).build();
tagList.add(t);
}
// 해시태그가 없는 경우 설정하지 않음
if(tagList.size() > 1) {
sns.setHashtag(tagList);
}
trepo.findById(tripNo).ifPresent(trip -> sns.setSns(trip));
SnsVO savedSns = srepo.save(sns);
// 미리 작성된 영수증이 있는 경우 현재 작성한 게시글과 연결
erepo.findById(expNo).ifPresent(exp -> {
exp.setSns(savedSns);
erepo.save(exp);
});
return sns;
}