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