View Javadoc
1   package info.mikethomas.fahservices.service;
2   
3   /*
4    * #%L
5    * This file is part of FAHServices.
6    * %%
7    * Copyright (C) 2014 - 2024 Mike Thomas <mikepthomas@outlook.com>
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
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   * REST Web Service.
50   *
51   * @author Michael Thomas (mikepthomas@outlook.com)
52   * @version $Id: $Id
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       * Retrieves representation of an instance of
63       * info.mikethomas.fahservices.service.SlotOptionsResource.
64       *
65       * @param slot Slot number
66       * @return an instance of java.lang.String
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       * <p>handleException.</p>
90       *
91       * @param ex a {@link java.lang.Exception} object
92       * @return a {@link org.springframework.http.ResponseEntity} object
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  }