Skip to content

Commit

Permalink
Merge pull request #40 from Nice-Duck/feature/urlvalidator
Browse files Browse the repository at this point in the history
[url 유효성 검사] 기능
  • Loading branch information
myeongju-kim authored Nov 2, 2022
2 parents 8686e70 + b011316 commit e2db09e
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,39 +17,39 @@

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/accounts")
public class AccountController {
private final AccountService accountService;
private final MailService mailService;
private final JwtService jwtService;
@ApiOperation(value="중복확인",notes = "<strong>이메일 중복을 확인한다.</strong>")
@RequestMapping(value="/api/v1/accounts/register", method = RequestMethod.GET)
@GetMapping("/register")
public ResponseEntity<ServerResponse<Void>> duplicationUser(@RequestParam("email") String email){
return ResponseEntity.ok().body(accountService.dupUser(email));
}
@ApiOperation(value="인증 메일 전송",notes = "<strong>인증메일전송</strong>")
@RequestMapping(value="/api/v1/accounts/mails/send", method = RequestMethod.POST)
@PostMapping("/mails/send")
public ResponseEntity<ServerResponse<Void>> checkUser(@RequestBody MailSendRequest mailSendRequest) {
return ResponseEntity.ok().body(mailService.sendMail(mailSendRequest));
}
@ApiOperation(value="인증 메일 확인",notes = "<strong>인증메일확인</strong>")
@RequestMapping(value="/api/v1/accounts/mails/confirm", method = RequestMethod.POST)
@PostMapping("/mails/confirm")
public ResponseEntity<ServerResponse<Void>> confirmUser(@RequestBody MailCheckRequest mailCheckRequest){
return ResponseEntity.ok().body(mailService.checkMail(mailCheckRequest));
}
@ApiOperation(value="회원가입",notes = "<strong>이메일과 패스워드를 입력받아 회원 가입을 진행한다.</strong>")
@RequestMapping(value="/api/v1/accounts/register", method = RequestMethod.POST)
@PostMapping("/register")
public ResponseEntity<ServerResponse<TokenDto>> joinUser(@RequestBody AuthRequest authRequest){
return ResponseEntity.ok().body(accountService.joinUser(authRequest));
}

@ApiOperation(value="로그인",notes = "<strong>이메일과 패스워드를 입력받아 성공 여부를 알린다.</strong>")
@RequestMapping(value="/api/v1/accounts", method = RequestMethod.POST)
@PostMapping("")
public ResponseEntity<ServerResponse<TokenDto>> loginUser(@RequestBody LoginRequest loginRequest){
return ResponseEntity.ok().body(accountService.checkUser(loginRequest));
}

@ApiOperation(value="회원탈퇴",notes = "<strong>회원 탈퇴</strong>")
@RequestMapping(value="/api/v1/accounts", method = RequestMethod.DELETE)
@DeleteMapping("")
public ResponseEntity<ServerResponse<Void>> deleteUser(@RequestHeader("Authorization") String token){
jwtService.validateToken(token);
String email=jwtService.getUser(token);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,18 @@
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequiredArgsConstructor
@RequestMapping("/api/v1/token")
public class JwtController {
private final JwtService jwtService;
@ApiOperation(value="Access Token 새로 발급",notes = "<strong>refresh 토큰이 유효하다면 access 새로 발급</strong>")
@RequestMapping(value="/api/v1/accounts/token", method = RequestMethod.POST)
@PostMapping("")
public ResponseEntity<ServerResponse<AcTokenResponse>> createAccessToken(@RequestHeader("Authorization") String token){
return ResponseEntity.ok().body(jwtService.reissueAcToken(token));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public enum ErrorCode {
// default HTTP Status : 404 (Not Found)
INVALID_USER("F000", "회원 탈퇴한 이메일입니다."), //탈퇴 후 6개월 뒤 다시 회원가입 가능
INVALID_TAG("F001", "태그가 존재하지 않습니다."),
INVALID_URL("F002", "URL이 존재하지 않습니다."),

// default HTTP Status : 409 (Conflict)
DUPLICATE_EMAIL("C001", "이메일이 중복되었습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@

@Controller
@RequiredArgsConstructor
@RequestMapping("/api/v1/scraps")
public class ScrapController {

private final ScrapService scrapService;
private final JwtService jwtService;
private final UserService userService;
@ApiOperation(value="스크랩 저장",notes = "<strong>스크랩을 저장한다.</strong>")
@RequestMapping(value="/api/v1/scraps", method = RequestMethod.POST)
@PostMapping("")
public ResponseEntity<ServerResponse<SaveResponse>> scrapSave(@RequestHeader("Authorization") String token,
@RequestBody ScrapRequest scrapRequest){
jwtService.validateToken(token);
Long userId=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.saveScrap(userService.findUser(userId),scrapRequest));
}
@ApiOperation(value="스크랩 수정",notes = "<strong>스크랩을 수정한다.</strong>")
@RequestMapping(value="/api/v1/scraps", method = RequestMethod.PATCH)
@PatchMapping("")
public ResponseEntity<ServerResponse<Void>> scrapUpdate(@RequestHeader("Authorization") String token,
@RequestParam("scrapId") Long scrapId
,@RequestBody ScrapRequest scrapRequest){
Expand All @@ -38,7 +39,7 @@ public ResponseEntity<ServerResponse<Void>> scrapUpdate(@RequestHeader("Authoriz
}

@ApiOperation(value="스크랩 불러오기",notes = "<strong>스크랩을 불러온다.</strong>")
@RequestMapping(value="/api/v1/scraps", method = RequestMethod.GET)
@GetMapping("")
public ResponseEntity<ServerResponse<HomeResponse>> scrapLoad(@RequestHeader("Authorization") String token,
@RequestParam(value = "type",defaultValue = "0") Integer type){
jwtService.validateToken(token);
Expand All @@ -47,37 +48,28 @@ public ResponseEntity<ServerResponse<HomeResponse>> scrapLoad(@RequestHeader("Au
}

@ApiOperation(value="스크랩 삭제하기",notes = "<strong>스크랩을 삭제한다.</strong>")
@RequestMapping(value="/api/v1/scraps", method = RequestMethod.DELETE)
@DeleteMapping("")
public ResponseEntity<ServerResponse<Void>> scrapLoad(@RequestHeader("Authorization") String token,
@RequestParam("scrapId") Long scrapId) {
jwtService.validateToken(token);
return ResponseEntity.ok().body(scrapService.deleteScrap(scrapId));
}

@ApiOperation(value="모든 태그 조회",notes = "<strong>자신이 등록한 태그 전부 조회 (최신순)</strong>")
@RequestMapping(value="/api/v1/tags", method = RequestMethod.GET)
public ResponseEntity<ServerResponse<TagsResponse>> tagSearch(@RequestHeader("Authorization") String token){
jwtService.validateToken(token);
Long uid=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.loadTags(uid));
}

@ApiOperation(value="태그 저장하기",notes = "<strong>태그가 없는 경우 저장함</strong>")
@RequestMapping(value="/api/v1/tags", method = RequestMethod.POST)
public ResponseEntity<ServerResponse<TagResponse>> tagSave(@RequestHeader("Authorization") String token,
@RequestBody TagRequest tagRequest){
jwtService.validateToken(token);
Long uid=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.saveTag(uid,tagRequest));
}

@ApiOperation(value="스크랩 검색",notes = "<strong>스크랩 검색</strong>")
@RequestMapping(value="/api/v1/scraps/search", method = RequestMethod.POST)
@PostMapping("/search")
public ResponseEntity<ServerResponse<List<ScrapResponse>>> scrapsSearch(@RequestHeader("Authorization") String token,
@RequestBody SearchRequest searchRequest) {
jwtService.validateToken(token);
Long uid=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.searchScraps(uid,searchRequest));
}
@ApiOperation(value="스크랩 url 유효성",notes = "<strong>스크랩 유효한지</strong>")
@GetMapping("/validation")
public ResponseEntity<ServerResponse<Void>> scrapsValidate(@RequestHeader("Authorization") String token,
@RequestParam("url")String url) {
jwtService.validateToken(token);
return ResponseEntity.ok().body(scrapService.urlValidator(url));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.cmc.sparky.scrap.controller;

import com.cmc.sparky.common.dto.ServerResponse;
import com.cmc.sparky.common.service.JwtService;
import com.cmc.sparky.scrap.dto.TagRequest;
import com.cmc.sparky.scrap.dto.TagResponse;
import com.cmc.sparky.scrap.dto.TagsResponse;
import com.cmc.sparky.scrap.service.ScrapService;
import com.cmc.sparky.user.service.UserService;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequiredArgsConstructor
@RequestMapping("/api/v1/tags")
public class TagController {
private final ScrapService scrapService;
private final JwtService jwtService;
@ApiOperation(value="모든 태그 조회",notes = "<strong>자신이 등록한 태그 전부 조회 (최신순)</strong>")
@GetMapping("")
public ResponseEntity<ServerResponse<TagsResponse>> tagSearch(@RequestHeader("Authorization") String token){
jwtService.validateToken(token);
Long uid=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.loadTags(uid));
}
@ApiOperation(value="태그 저장하기",notes = "<strong>태그가 없는 경우 저장함</strong>")
@PostMapping("")
public ResponseEntity<ServerResponse<TagResponse>> tagSave(@RequestHeader("Authorization") String token,
@RequestBody TagRequest tagRequest){
jwtService.validateToken(token);
Long uid=jwtService.getUserId(token);
return ResponseEntity.ok().body(scrapService.saveTag(uid,tagRequest));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -33,6 +36,18 @@ public class ScrapService {
private final ScrapMapRepository scrapMapRepository;
private final UserRepository userRepository;
private ServerResponse serverResponse =new ServerResponse();
public ServerResponse urlValidator(String url){
try {
URL urlCheck = new URL(url);
URLConnection connection=urlCheck.openConnection();
HttpURLConnection exitCode = (HttpURLConnection)connection;
System.out.println(exitCode.getResponseCode());
return serverResponse.success("존재하는 URL 입니다.");
}catch(Exception e){
throw new NotFoundException(ErrorCode.INVALID_URL);
}

}
public void saveMapping(Scrap scrap, List<Long> tags){
List<ScrapMap> scrapMaps=new ArrayList<>();
for(Long tag:tags){
Expand Down

0 comments on commit e2db09e

Please sign in to comment.