xref: /OpenGrok/plugins/src/main/java/opengrok/auth/plugin/util/RestfulClient.java (revision 0ec550ccbbcccee5cc0a7caf1de73b7f1c4f3887)
1b28a5538SAdam Hornacek /*
2b28a5538SAdam Hornacek  * CDDL HEADER START
3b28a5538SAdam Hornacek  *
4b28a5538SAdam Hornacek  * The contents of this file are subject to the terms of the
5b28a5538SAdam Hornacek  * Common Development and Distribution License (the "License").
6b28a5538SAdam Hornacek  * You may not use this file except in compliance with the License.
7b28a5538SAdam Hornacek  *
8b28a5538SAdam Hornacek  * See LICENSE.txt included in this distribution for the specific
9b28a5538SAdam Hornacek  * language governing permissions and limitations under the License.
10b28a5538SAdam Hornacek  *
11b28a5538SAdam Hornacek  * When distributing Covered Code, include this CDDL HEADER in each
12b28a5538SAdam Hornacek  * file and include the License file at LICENSE.txt.
13b28a5538SAdam Hornacek  * If applicable, add the following below this CDDL HEADER, with the
14b28a5538SAdam Hornacek  * fields enclosed by brackets "[]" replaced with your own identifying
15b28a5538SAdam Hornacek  * information: Portions Copyright [yyyy] [name of copyright owner]
16b28a5538SAdam Hornacek  *
17b28a5538SAdam Hornacek  * CDDL HEADER END
18b28a5538SAdam Hornacek  */
19b28a5538SAdam Hornacek 
20b28a5538SAdam Hornacek /*
21*0ec550ccSAdam Hornacek  * Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
222173ed7bSChris Fraire  * Portions Copyright (c) 2020, Chris Fraire <cfraire@me.com>.
23b28a5538SAdam Hornacek  */
24b28a5538SAdam Hornacek package opengrok.auth.plugin.util;
25b28a5538SAdam Hornacek 
26aa6abf42SAdam Hornacek import jakarta.servlet.http.HttpServletResponse;
27aa6abf42SAdam Hornacek import jakarta.ws.rs.client.Client;
28aa6abf42SAdam Hornacek import jakarta.ws.rs.client.ClientBuilder;
29aa6abf42SAdam Hornacek import jakarta.ws.rs.client.Entity;
30aa6abf42SAdam Hornacek import jakarta.ws.rs.core.MediaType;
31aa6abf42SAdam Hornacek import jakarta.ws.rs.core.Response;
32aa6abf42SAdam Hornacek 
33b28a5538SAdam Hornacek import java.util.logging.Level;
34b28a5538SAdam Hornacek import java.util.logging.Logger;
35b28a5538SAdam Hornacek 
36b28a5538SAdam Hornacek /**
37e0c3b7e9SVladimir Kotal  * Simple RESTful client.
38b28a5538SAdam Hornacek  */
39b28a5538SAdam Hornacek public class RestfulClient {
40b28a5538SAdam Hornacek     private static final Logger LOGGER = Logger.getLogger(RestfulClient.class.getName());
41b28a5538SAdam Hornacek 
RestfulClient()42b28a5538SAdam Hornacek     private RestfulClient() {
43b28a5538SAdam Hornacek         // private to ensure static
44b28a5538SAdam Hornacek     }
45b28a5538SAdam Hornacek 
46b28a5538SAdam Hornacek     /**
47ff44f24aSAdam Hornáček      * Perform HTTP PUT request.
48*0ec550ccSAdam Hornacek      * @param uri URI
49b28a5538SAdam Hornacek      * @param input JSON string contents
50b28a5538SAdam Hornacek      * @return HTTP status or -1
51b28a5538SAdam Hornacek      */
postIt(String uri, String input)52*0ec550ccSAdam Hornacek     public static int postIt(String uri, String input) {
53b28a5538SAdam Hornacek         try {
54b28a5538SAdam Hornacek             Client client = ClientBuilder.newClient();
55b28a5538SAdam Hornacek 
56b28a5538SAdam Hornacek             LOGGER.log(Level.FINEST, "sending REST POST request to {0}: {1}",
57*0ec550ccSAdam Hornacek                     new Object[]{uri, input});
58*0ec550ccSAdam Hornacek             Response response = client.target(uri)
59b28a5538SAdam Hornacek                     .request(MediaType.APPLICATION_JSON)
60b28a5538SAdam Hornacek                     .post(Entity.entity(input, MediaType.APPLICATION_JSON));
61b28a5538SAdam Hornacek 
62b28a5538SAdam Hornacek             int status = response.getStatus();
63b28a5538SAdam Hornacek             if (status != HttpServletResponse.SC_CREATED) {
64b28a5538SAdam Hornacek                 LOGGER.log(Level.WARNING, "REST request failed: HTTP error code : {0}", status);
65b28a5538SAdam Hornacek             }
66b28a5538SAdam Hornacek 
67b28a5538SAdam Hornacek             return status;
68b28a5538SAdam Hornacek         } catch (Exception e) {
692173ed7bSChris Fraire             LOGGER.log(Level.WARNING, "REST request failed", e);
70b28a5538SAdam Hornacek             return -1;
71b28a5538SAdam Hornacek         }
72b28a5538SAdam Hornacek     }
73b28a5538SAdam Hornacek }
74