Skip to content

Commit

Permalink
Merge pull request #51 from YAPP-Github/feature/MAFOO-46
Browse files Browse the repository at this point in the history
[MAFOO-46] feat: 여러 브랜드 추가
  • Loading branch information
CChuYong authored Jul 25, 2024
2 parents 77e2ded + 4a46508 commit a16f704
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ public enum BrandType {
DONT_LOOK_UP(Pattern.compile("https://x\\.dontlxxkup\\.kr/.*")),
MY_FOUR_CUT(Pattern.compile("https://firebasestorage\\.googleapis\\.com:443/v0/b/my4ccu\\.appspot\\.com/.*")),
PHOTOGRAY(Pattern.compile("https://pgshort\\.aprd\\.io/.*")),
MONOMANSION(Pattern.compile("https://monomansion\\.net/.*")),
PHOTO_SIGNATURE(Pattern.compile("http://photoqr3\\.kr/.*")),
PICDOT(Pattern.compile("https://picdot\\.kr/.*"))
;

private final Pattern urlPattern;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public class QrService {
private final HaruFilmQrVendor haruFilmQrVendor;
private final MyFourCutQrVendor myFourCutQrVendor;
private final PhotoGrayQrVendor photoGrayQrVendor;
private final MonoMansionQrVendor monoMansionQrVendor;
private final PhotoSignatureQrVendor photoSignatureQrVendor;
private final PicDotQrVendor picDotQrVendor;


public Mono<FileDto> getFileFromQrUrl(String qrUrl) {
Expand All @@ -34,6 +37,9 @@ public Mono<FileDto> getFileFromQrUrl(String qrUrl) {
case DONT_LOOK_UP -> dontLookUpQrVendor;
case MY_FOUR_CUT -> myFourCutQrVendor;
case PHOTOGRAY -> photoGrayQrVendor;
case MONOMANSION -> monoMansionQrVendor;
case PHOTO_SIGNATURE -> photoSignatureQrVendor;
case PICDOT -> picDotQrVendor;
};

return createFileDto(brandType, qrVendor.extractImageFromQrUrl(qrUrl));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package kr.mafoo.photo.service.vendors;

import kr.mafoo.photo.exception.PhotoQrUrlExpiredException;
import kr.mafoo.photo.util.WebClientUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.UriComponentsBuilder;
import reactor.core.publisher.Mono;

@RequiredArgsConstructor
@Component
public class MonoMansionQrVendor implements QrVendor {
private final WebClient webClient;

@Override
public Mono<byte[]> extractImageFromQrUrl(String qrUrl) {
String qrCode = extractQrCodeFromUrl(qrUrl);
String imageUrl = String.format("https://monomansion.net/api/download.php?qrcode=%s&type=P", qrCode);
return WebClientUtil
.getBlob(webClient, imageUrl)
.onErrorMap(e -> new PhotoQrUrlExpiredException());
}

private String extractQrCodeFromUrl(String url) {
return UriComponentsBuilder
.fromUriString(url)
.build()
.getQueryParams()
.getFirst("qrcode");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package kr.mafoo.photo.service.vendors;

import kr.mafoo.photo.exception.PhotoQrUrlExpiredException;
import kr.mafoo.photo.util.WebClientUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

@RequiredArgsConstructor
@Component
public class PhotoSignatureQrVendor implements QrVendor {
private final WebClient webClient;

@Override
public Mono<byte[]> extractImageFromQrUrl(String qrUrl) {
String imageUrl = qrUrl.replace("index.html", "a.jpg");
return WebClientUtil
.getBlobByAnyMediaType(webClient, imageUrl)
.onErrorMap(e -> new PhotoQrUrlExpiredException());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package kr.mafoo.photo.service.vendors;

import kr.mafoo.photo.exception.PhotoQrUrlExpiredException;
import kr.mafoo.photo.util.WebClientUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.UriComponentsBuilder;
import reactor.core.publisher.Mono;

@RequiredArgsConstructor
@Component
public class PicDotQrVendor implements QrVendor {
private final WebClient webClient;

@Override
public Mono<byte[]> extractImageFromQrUrl(String qrUrl) {
String qrCode = extractQrCodeFromUrl(qrUrl);
String imageUrl = String.format("https://picdot.kr/api/download.php?qrcode=%s&type=P", qrCode);
return WebClientUtil
.getBlob(webClient, imageUrl)
.onErrorMap(e -> new PhotoQrUrlExpiredException());
}

private String extractQrCodeFromUrl(String url) {
return UriComponentsBuilder
.fromUriString(url)
.build()
.getQueryParams()
.getFirst("qrcode");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,12 @@ public static Mono<byte[]> getBlob(WebClient client, String url) {
.retrieve()
.bodyToMono(byte[].class);
}

public static Mono<byte[]> getBlobByAnyMediaType(WebClient client, String url) {
return client
.get()
.uri(url)
.retrieve()
.bodyToMono(byte[].class);
}
}

0 comments on commit a16f704

Please sign in to comment.