1 package info.mikethomas.fahservices.service;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import info.mikethomas.jfold.Connection;
26 import info.mikethomas.jfold.exceptions.SlotOptionsException;
27 import info.mikethomas.jfold.slot.SlotOptions;
28
29 import io.swagger.v3.oas.annotations.Operation;
30 import io.swagger.v3.oas.annotations.Parameter;
31 import io.swagger.v3.oas.annotations.media.Content;
32 import io.swagger.v3.oas.annotations.media.Schema;
33 import io.swagger.v3.oas.annotations.responses.ApiResponse;
34 import io.swagger.v3.oas.annotations.tags.Tag;
35
36 import org.springframework.beans.factory.annotation.Autowired;
37 import org.springframework.http.HttpStatus;
38 import org.springframework.http.MediaType;
39 import org.springframework.http.ResponseEntity;
40 import org.springframework.web.bind.annotation.ExceptionHandler;
41 import org.springframework.web.bind.annotation.PathVariable;
42 import org.springframework.web.bind.annotation.RequestMapping;
43 import org.springframework.web.bind.annotation.RequestMethod;
44 import org.springframework.web.bind.annotation.ResponseBody;
45 import org.springframework.web.bind.annotation.ResponseStatus;
46 import org.springframework.web.bind.annotation.RestController;
47
48
49
50
51
52
53
54 @RestController("slot-options")
55 @Tag(name = "Slot Options", description = "Get slot options.")
56 public class SlotOptionsResource {
57
58 @Autowired
59 private Connection connection;
60
61
62
63
64
65
66
67
68 @Operation(summary = "slot-options {slot}", description = "Get Slot Options at index.", responses = {
69 @ApiResponse(responseCode = "200", description = "OK", content = {
70 @Content(schema = @Schema(implementation = SlotOptions.class))
71 })
72 })
73 @RequestMapping(
74 value = "/slot-options/{slot}",
75 method = RequestMethod.GET,
76 produces = {
77 MediaType.APPLICATION_JSON_VALUE,
78 MediaType.APPLICATION_XML_VALUE,
79 MediaType.TEXT_XML_VALUE
80 })
81 @ResponseBody
82 public ResponseEntity<SlotOptions> getSlotOptions(
83 @Parameter(description = "slot number", required = true)
84 @PathVariable("slot") final int slot) throws SlotOptionsException {
85 return new ResponseEntity<>(connection.slotOptions(slot), HttpStatus.OK);
86 }
87
88
89
90
91
92
93
94 @ExceptionHandler(SlotOptionsException.class)
95 @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
96 public ResponseEntity<Exception> handleException(Exception ex) {
97 return new ResponseEntity<>(ex, HttpStatus.INTERNAL_SERVER_ERROR);
98 }
99 }