StatusCodesController.java
package com.jibi.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/** The type Status codes controller. */
@Tag(name = "Status code Api", description = "Status code Api")
@RestController(value = "Status codes Api")
@RequestMapping("/status")
public class StatusCodesController {
/** The Random. */
Random random = new Random(new Date().getTime());
/**
* Status code response entity.
*
* @param code the code
* @return the response entity
*/
@Operation(
summary = "Status code api",
description = "Api to respond with the status code in uri",
tags = {"status"})
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "Successful operation",
content =
@Content(array = @ArraySchema(schema = @Schema(implementation = Void.class)))),
@ApiResponse(responseCode = "500", description = "Internal server error")
})
@Parameter(name = "code", schema = @Schema(description = "Code", type = "integer"))
@RequestMapping(value = "/{code}", method = RequestMethod.GET)
public ResponseEntity<Void> statusCode(@PathVariable Integer code) {
HttpStatus httpStatus = HttpStatus.valueOf(code);
return new ResponseEntity<Void>(httpStatus);
}
/**
* Status random codes response entity.
*
* @param strCodes the str codes
* @return the response entity
*/
@Operation(
summary = "Status code api",
description = "Status random code api",
tags = {"status"})
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "Successful operation",
content =
@Content(array = @ArraySchema(schema = @Schema(implementation = Void.class)))),
@ApiResponse(responseCode = "500", description = "Internal server error")
})
@Parameter(name = "codes", schema = @Schema(description = "Codes", type = "integer"))
@RequestMapping(value = "/random/{codes}", method = RequestMethod.GET)
public ResponseEntity<Void> statusRandomCodes(@PathVariable("codes") String strCodes) {
String[] arrayCodes = strCodes.split(",");
List<Integer> codes =
Arrays.stream(arrayCodes).map(str -> Integer.parseInt(str)).collect(Collectors.toList());
Integer randomRangeIndex = random.ints(0, arrayCodes.length).limit(1).findFirst().getAsInt();
HttpStatus httpStatus = HttpStatus.valueOf(codes.get(randomRangeIndex));
return new ResponseEntity<Void>(httpStatus);
}
}