Skip to content

Commit

Permalink
feat: add dummy service (#394)
Browse files Browse the repository at this point in the history
  • Loading branch information
lvalentine6 committed Nov 13, 2023
2 parents 9ef6fee + a972c5d commit b477c31
Show file tree
Hide file tree
Showing 7 changed files with 248 additions and 202 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public WebMvcConfig(BearerAuthInterceptor bearerAuthInterceptor) {
this.bearerAuthInterceptor = bearerAuthInterceptor;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(bearerAuthInterceptor)
.addPathPatterns(
Expand All @@ -27,7 +28,8 @@ public void addInterceptors(InterceptorRegistry registry) {
"/api/items",
"/api/members/items",
"/api/members/interest",
"/api/members/interest/category"
"/api/members/interest/category",
"/api/dummy/**"
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package codesquad.secondhand.controller;

import static codesquad.secondhand.exception.code.CommonResponseCode.*;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import codesquad.secondhand.dto.ResponseDto;
import codesquad.secondhand.service.DummyService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/dummy")
public class DummyController {

private final DummyService dummyService;

@GetMapping
public ResponseDto<?> creatDummy() {
log.info("더미호출");
dummyService.creatDummy();
return ResponseDto.of(RESPONSE_SUCCESS, null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@

import org.springframework.web.multipart.MultipartFile;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Getter
@RequiredArgsConstructor
@AllArgsConstructor
public class ItemDetailDto {

private final String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package codesquad.secondhand.interceptor;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

Expand Down Expand Up @@ -28,9 +30,25 @@ public BearerAuthInterceptor(AuthorizationExtractor authExtractor, JwtTokenProvi
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) {
Object handler) throws IOException {
log.info("[BearerAuthInterceptor.preHandle 호출]");

String token = authExtractor.extract(request, "Bearer");
log.info("토큰 : " + token);

String requestURI = request.getRequestURI();
if (requestURI.startsWith("/api/dummy")) {
if(token.isEmpty()) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access is allowed for powerUser only");
return false;
}
String loginId = jwtTokenProvider.getLoginId(token);
if (!"powerUser".equals(loginId)) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access is allowed for powerUser only");
return false;
}
}

if (StringUtils.isEmpty(token)) {
return true;
}
Expand All @@ -39,6 +57,7 @@ public boolean preHandle(HttpServletRequest request,
throw new RestApiException(TokenErrorCode.TOKEN_INVALID);
}


Long memberIdx = jwtTokenProvider.getMemberIdx(token);
request.setAttribute("memberIdx", memberIdx);
return true;
Expand Down
66 changes: 66 additions & 0 deletions be/src/main/java/codesquad/secondhand/service/DummyService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package codesquad.secondhand.service;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Random;

import org.apache.commons.io.IOUtils;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.github.javafaker.Faker;

import codesquad.secondhand.dto.item.ItemDetailDto;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class DummyService {

private final ItemService itemService;

public void creatDummy() {
Random random = new Random();
for (int i = 1; i <= 10; i++) {
Long randomMemberIdx = (long) random.nextInt(5) + 1;
int randomImageNumber = random.nextInt(10);
String randomImageURL = "https://codesquadsecondhandteam01.s3.ap-northeast-2.amazonaws.com/dummy-image/"
+ randomImageNumber + ".jpg";

Faker faker = new Faker(new Locale("ko"));

List<MultipartFile> list = new ArrayList<>();
list.add(downloadImageAsMultipartFile(randomImageURL, "tempImageName"));

ItemDetailDto itemDetailDto = new ItemDetailDto(
faker.commerce().productName(),
faker.number().randomDigitNotZero() * 1000,
faker.lorem().sentence(),
(long)faker.number().numberBetween(1, 6),
(long)faker.number().numberBetween(1, 18),
list,
"판매중",
randomMemberIdx);

itemService.creatItem(itemDetailDto);
}
}

private MultipartFile downloadImageAsMultipartFile(String imageUrl, String imageName) {
try {
URL url = new URL(imageUrl);
InputStream in = url.openStream();
byte[] imageBytes = IOUtils.toByteArray(in);
in.close();

return new MockMultipartFile("image", imageName, "image/jpeg", imageBytes);
} catch (IOException e) {
throw new RuntimeException("Failed to download image from URL", e);
}
}
}

0 comments on commit b477c31

Please sign in to comment.