Skip to content

Commit

Permalink
Merge pull request #37 from evrentan/staging
Browse files Browse the repository at this point in the history
merge(main): merge staging into main
  • Loading branch information
evrentan authored Mar 9, 2024
2 parents b7d9aea + 1a3a163 commit d15377a
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 13 deletions.
13 changes: 8 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ buildscript {
}

plugins {
id 'org.springframework.boot' version '2.6.7'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
Expand All @@ -22,6 +22,9 @@ targetCompatibility = JavaVersion.VERSION_17

repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "https://repo.spring.io/release" }
}

configurations {
Expand All @@ -31,18 +34,18 @@ configurations {
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator:2.6.7'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
implementation 'org.springframework.boot:spring-boot-starter-web:2.6.7'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.4'
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.7'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'com.google.zxing:core:3.5.0'
implementation 'com.google.zxing:javase:3.5.0'
}

task stage {
tasks.register('stage') {
dependsOn build
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

import com.google.zxing.WriterException;
import evrentan.qrcodegenerator.qrcodegeneratorbackend.dto.shared.CustomRestError;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
Expand Down Expand Up @@ -36,11 +36,33 @@ public class GlobalRestExceptionHandler {
})
public ResponseEntity<CustomRestError> processIOException(final Exception exception, final HttpServletRequest request) {
var customRestError = CustomRestError.builder()
.message(exception.getCause()
.getMessage())
.message(exception.getCause().getMessage())
.status(HttpStatus.INTERNAL_SERVER_ERROR.value())
.build();


return responseEntity(customRestError);
}

/**
* To handle error cases in request validation and return a bad request.
*
* @param exception QrCodeTextValidationException
* @param request Web request
*
* @return ResponseEntity
*
* @author <a href="https://github.com/nmarulo">nmarulo</a>
* @since 1.0.0
*/
@ExceptionHandler(value = {
QrCodeTextValidationException.class
})
public ResponseEntity<CustomRestError> processBadRequestException(final QrCodeTextValidationException exception, final HttpServletRequest request) {
var customRestError = CustomRestError.builder()
.message(exception.getMessage())
.status(HttpStatus.BAD_REQUEST.value())
.build();

return responseEntity(customRestError);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package evrentan.qrcodegenerator.qrcodegeneratorbackend.exception;

public class QrCodeTextValidationException extends RuntimeException {

private final String message;

public QrCodeTextValidationException(String message) {
this.message = message;
}

@Override
public String getMessage() {
return message;
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package evrentan.qrcodegenerator.qrcodegeneratorbackend.filter;

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Objects;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import evrentan.qrcodegenerator.qrcodegeneratorbackend.dto.GenerateQrCodeRequest;
import evrentan.qrcodegenerator.qrcodegeneratorbackend.exception.QrCodeTextValidationException;
import evrentan.qrcodegenerator.qrcodegeneratorbackend.message.ExceptionMessages;
import evrentan.qrcodegenerator.qrcodegeneratorbackend.service.QrCodeService;
import org.springframework.stereotype.Service;

Expand Down Expand Up @@ -61,6 +63,8 @@ public String generateQrCodeString(GenerateQrCodeRequest qrCodeGenerateRequest)
*/
@Override
public byte[] generateQrCodeByteArray(GenerateQrCodeRequest qrCodeGenerateRequest) {
this.validateQrCodeText(qrCodeGenerateRequest.getQrCodeText());

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

this.completeGenerateQrCodeRequest(qrCodeGenerateRequest);
Expand All @@ -79,6 +83,8 @@ public byte[] generateQrCodeByteArray(GenerateQrCodeRequest qrCodeGenerateReques
* @since 1.0.0
*/
private void completeGenerateQrCodeRequest(GenerateQrCodeRequest qrCodeGenerateRequest) {
this.validateQrCodeText(qrCodeGenerateRequest.getQrCodeText());

if (Objects.isNull(qrCodeGenerateRequest.getSize()))
qrCodeGenerateRequest.setSize(QR_CODE_SIZE);

Expand Down Expand Up @@ -111,4 +117,10 @@ private void generateByteArrayOutputStream(ByteArrayOutputStream byteArrayOutput
throw new RuntimeException(e);
}
}

private void validateQrCodeText(String qrCodeText) {
if (qrCodeText.isBlank()) {
throw new QrCodeTextValidationException(ExceptionMessages.QR_CODE_TEXT_VALIDATION_EXCEPTION);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package evrentan.qrcodegenerator.qrcodegeneratorbackend.message;

public class ExceptionMessages {

public static final String QR_CODE_TEXT_VALIDATION_EXCEPTION = "Qr code text is not valid";
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package evrentan.qrcodegenerator.qrcodegeneratorbackend.spring.config;

import evrentan.qrcodegenerator.qrcodegeneratorbackend.filter.CORSFilter;
import jakarta.servlet.Filter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Filter;

@Configuration
public class SecurityConfig {
Expand Down

0 comments on commit d15377a

Please sign in to comment.