diff JavaSDK/be/uclouvain/orthanc/RestOutput.java @ 0:3ecef5782f2c

initial commit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 18 Oct 2023 17:59:44 +0200
parents
children 26c08ff926a3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaSDK/be/uclouvain/orthanc/RestOutput.java	Wed Oct 18 17:59:44 2023 +0200
@@ -0,0 +1,271 @@
+package be.uclouvain.orthanc;
+
+/**
+ * SPDX-FileCopyrightText: 2023 Sebastien Jodogne, UCLouvain, Belgium
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+/**
+ * Java plugin for Orthanc
+ * Copyright (C) 2023 Sebastien Jodogne, UCLouvain, Belgium
+ *
+ * This program is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see http://www.gnu.org/licenses/.
+ **/
+
+
+/**
+ * Output for a call to the REST API of Orthanc
+ **/
+public class RestOutput {
+    private long self;
+
+    /**
+     * Construct a Java object wrapping a C object that is managed by Orthanc.
+     * @param self Pointer to the C object.
+     **/
+    protected RestOutput(long self) {
+        if (self == 0) {
+            throw new IllegalArgumentException("Null pointer");
+        } else {
+            this.self = self;
+        }
+    }
+
+    /**
+     * Return the C object that is associated with this Java wrapper.
+     * @return Pointer to the C object.
+     **/
+    protected long getSelf() {
+        return self;
+    }
+
+
+
+    /**
+     * Answer to a REST request.
+     * 
+     * This function answers to a REST request with the content of a memory buffer.
+     * 
+     * @param answer Pointer to the memory buffer containing the answer.
+     * @param mimeType The MIME type of the answer.
+     **/
+    public void answerBuffer(
+        byte[] answer,
+        String mimeType) {
+        NativeSDK.OrthancPluginAnswerBuffer(self, answer, mimeType);
+    }
+
+    /**
+     * Answer to a REST request with a PNG image.
+     * 
+     * This function answers to a REST request with a PNG image. The parameters of this
+     * function describe a memory buffer that contains an uncompressed image. The image
+     * will be automatically compressed as a PNG image by the core system of Orthanc.
+     * 
+     * @param format The memory layout of the uncompressed image.
+     * @param width The width of the image.
+     * @param height The height of the image.
+     * @param pitch The pitch of the image (i.e. the number of bytes between 2
+     * successive lines of the image in the memory buffer).
+     * @param buffer The memory buffer containing the uncompressed image.
+     **/
+    public void compressAndAnswerPngImage(
+        PixelFormat format,
+        int width,
+        int height,
+        int pitch,
+        byte[] buffer) {
+        NativeSDK.OrthancPluginCompressAndAnswerPngImage(self, format.getValue(), width, height, pitch, buffer);
+    }
+
+    /**
+     * Redirect a REST request.
+     * 
+     * This function answers to a REST request by redirecting the user to another URI
+     * using HTTP status 301.
+     * 
+     * @param redirection Where to redirect.
+     **/
+    public void redirect(
+        String redirection) {
+        NativeSDK.OrthancPluginRedirect(self, redirection);
+    }
+
+    /**
+     * Send a HTTP status code.
+     * 
+     * This function answers to a REST request by sending a HTTP status code (such as
+     * "400 - Bad Request"). Note that: - Successful requests (status 200) must use
+     * ::OrthancPluginAnswerBuffer(). - Redirections (status 301) must use
+     * ::OrthancPluginRedirect(). - Unauthorized access (status 401) must use
+     * ::OrthancPluginSendUnauthorized(). - Methods not allowed (status 405) must use
+     * ::OrthancPluginSendMethodNotAllowed().
+     * 
+     * @param status The HTTP status code to be sent.
+     **/
+    public void sendHttpStatusCode(
+        short status) {
+        NativeSDK.OrthancPluginSendHttpStatusCode(self, status);
+    }
+
+    /**
+     * Signal that a REST request is not authorized.
+     * 
+     * This function answers to a REST request by signaling that it is not authorized.
+     * 
+     * @param realm The realm for the authorization process.
+     **/
+    public void sendUnauthorized(
+        String realm) {
+        NativeSDK.OrthancPluginSendUnauthorized(self, realm);
+    }
+
+    /**
+     * Signal that this URI does not support this HTTP method.
+     * 
+     * This function answers to a REST request by signaling that the queried URI does
+     * not support this method.
+     * 
+     * @param allowedMethods The allowed methods for this URI (e.g. "GET,POST" after a
+     * PUT or a POST request).
+     **/
+    public void sendMethodNotAllowed(
+        String allowedMethods) {
+        NativeSDK.OrthancPluginSendMethodNotAllowed(self, allowedMethods);
+    }
+
+    /**
+     * Set a cookie.
+     * 
+     * This function sets a cookie in the HTTP client.
+     * 
+     * @param cookie The cookie to be set.
+     * @param value The value of the cookie.
+     **/
+    public void setCookie(
+        String cookie,
+        String value) {
+        NativeSDK.OrthancPluginSetCookie(self, cookie, value);
+    }
+
+    /**
+     * Set some HTTP header.
+     * 
+     * This function sets a HTTP header in the HTTP answer.
+     * 
+     * @param key The HTTP header to be set.
+     * @param value The value of the HTTP header.
+     **/
+    public void setHttpHeader(
+        String key,
+        String value) {
+        NativeSDK.OrthancPluginSetHttpHeader(self, key, value);
+    }
+
+    /**
+     * Start an HTTP multipart answer.
+     * 
+     * Initiates a HTTP multipart answer, as the result of a REST request.
+     * 
+     * @param subType The sub-type of the multipart answer ("mixed" or "related").
+     * @param contentType The MIME type of the items in the multipart answer.
+     **/
+    public void startMultipartAnswer(
+        String subType,
+        String contentType) {
+        NativeSDK.OrthancPluginStartMultipartAnswer(self, subType, contentType);
+    }
+
+    /**
+     * Send an item as a part of some HTTP multipart answer.
+     * 
+     * This function sends an item as a part of some HTTP multipart answer that was
+     * initiated by OrthancPluginStartMultipartAnswer().
+     * 
+     * @param answer Pointer to the memory buffer containing the item.
+     **/
+    public void sendMultipartItem(
+        byte[] answer) {
+        NativeSDK.OrthancPluginSendMultipartItem(self, answer);
+    }
+
+    /**
+     * Send a HTTP status, with a custom body.
+     * 
+     * This function answers to a HTTP request by sending a HTTP status code (such as
+     * "400 - Bad Request"), together with a body describing the error. The body will
+     * only be returned if the configuration option "HttpDescribeErrors" of Orthanc is
+     * set to "true".
+     * 
+     * Note that: - Successful requests (status 200) must use
+     * ::OrthancPluginAnswerBuffer(). - Redirections (status 301) must use
+     * ::OrthancPluginRedirect(). - Unauthorized access (status 401) must use
+     * ::OrthancPluginSendUnauthorized(). - Methods not allowed (status 405) must use
+     * ::OrthancPluginSendMethodNotAllowed().
+     * 
+     * @param status The HTTP status code to be sent.
+     * @param body The body of the answer.
+     **/
+    public void sendHttpStatus(
+        short status,
+        byte[] body) {
+        NativeSDK.OrthancPluginSendHttpStatus(self, status, body);
+    }
+
+    /**
+     * Answer to a REST request with a JPEG image.
+     * 
+     * This function answers to a REST request with a JPEG image. The parameters of
+     * this function describe a memory buffer that contains an uncompressed image. The
+     * image will be automatically compressed as a JPEG image by the core system of
+     * Orthanc.
+     * 
+     * @param format The memory layout of the uncompressed image.
+     * @param width The width of the image.
+     * @param height The height of the image.
+     * @param pitch The pitch of the image (i.e. the number of bytes between 2
+     * successive lines of the image in the memory buffer).
+     * @param buffer The memory buffer containing the uncompressed image.
+     * @param quality The quality of the JPEG encoding, between 1 (worst quality, best
+     * compression) and 100 (best quality, worst compression).
+     **/
+    public void compressAndAnswerJpegImage(
+        PixelFormat format,
+        int width,
+        int height,
+        int pitch,
+        byte[] buffer,
+        byte quality) {
+        NativeSDK.OrthancPluginCompressAndAnswerJpegImage(self, format.getValue(), width, height, pitch, buffer, quality);
+    }
+
+    /**
+     * Provide a detailed description for an HTTP error.
+     * 
+     * This function sets the detailed description associated with an HTTP error. This
+     * description will be displayed in the "Details" field of the JSON body of the
+     * HTTP answer. It is only taken into consideration if the REST callback returns an
+     * error code that is different from "OrthancPluginErrorCode_Success", and if the
+     * "HttpDescribeErrors" configuration option of Orthanc is set to "true".
+     * 
+     * @param details The details of the error message.
+     * @param log Whether to also write the detailed error to the Orthanc logs.
+     **/
+    public void setHttpErrorDetails(
+        String details,
+        byte log) {
+        NativeSDK.OrthancPluginSetHttpErrorDetails(self, details, log);
+    }
+
+}