All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yamcs.protobuf.BucketsApiClient Maven / Gradle / Ivy

There is a newer version: 5.10.9
Show newest version
package org.yamcs.protobuf;

import com.google.protobuf.Empty;
import org.yamcs.api.HttpBody;
import org.yamcs.api.MethodHandler;
import org.yamcs.api.Observer;

/**
 * 
 *  Methods related to object storage.
 * 
 *  Buckets represent a simple mechanism for storing user objects (binary data
 *  chunks such as images, monitoring lists, displays...) together with some
 *  metadata.
 * 
 *  The metadata is represented by simple (key,value) pairs where both key and
 *  value are strings.
 * 
 *  By default each user has a bucket named ``user.username`` which can be used
 *  without extra privileges. Additional buckets may be created and used if the
 *  user has the required privileges. The user bucket will be created
 *  automatically when the user tries to access it.
 * 
 *  The following limitations are implemented in order to prevent disk over
 *  consumption and keep the service responsive:
 * 
 *  *   The maximum size of an upload including data and metadata is 5MB.
 *  *   The maximum number of objects in one bucket is 1000.
 *  *   The maximum size of an bucket 100MB (counted as the sum of the size of
 *      the objects within the bucket).
 *  *   The maximum size of the metadata is 16KB (counted as the sum of the
 *      length of the keys and values).
 * 
*/ @javax.annotation.processing.Generated(value = "org.yamcs.maven.ServiceGenerator", date = "2025-02-13T11:12:59.906508065Z") public class BucketsApiClient extends AbstractBucketsApi { private final MethodHandler handler; public BucketsApiClient(MethodHandler handler) { this.handler = handler; } /** *
     *  List buckets
     * 
*/ @Override public final void listBuckets(Void ctx, ListBucketsRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(0), request, ListBucketsResponse.getDefaultInstance(), observer); } /** *
     *  Get a bucket
     * 
*/ @Override public final void getBucket(Void ctx, GetBucketRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(1), request, BucketInfo.getDefaultInstance(), observer); } /** *
     *  Create a bucket
     * 
*/ @Override public final void createBucket(Void ctx, CreateBucketRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(2), request, BucketInfo.getDefaultInstance(), observer); } /** *
     *  Delete a bucket
     * 
     *  Deleting a bucket means also deleting all objects that are part of it.
     * 
*/ @Override public final void deleteBucket(Void ctx, DeleteBucketRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(3), request, Empty.getDefaultInstance(), observer); } /** *
     *  Get an object
     * 
     *  The body of the response represents the object data. The ``Content-Type``
     *  header is set to the content type of the object specified when uploading
     *  the object. If no ``Content-Type`` was specified when creating the object,
     *  the ``Content-Type`` of the response is set to
     *  ``application/octet-stream``.
     * 
*/ @Override public final void getObject(Void ctx, GetObjectRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(4), request, HttpBody.getDefaultInstance(), observer); } /** *
     *  Get object info
     * 
*/ @Override public final void getObjectInfo(Void ctx, GetObjectInfoRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(5), request, ObjectInfo.getDefaultInstance(), observer); } /** *
     *  Upload an object
     * 
     *  .. rubric:: Simple upload
     *  
     *  In case of simple upload, the objectName has to be specified as part of the URL
     *  and the ``Content-Type header`` has to be set to the type of the object. The body
     *  of the request is the object data.
     *  
     *  
     *  .. rubric:: Form upload
     *  
     *  The form based upload can be used to upload an object from an HTML form. In this
     *  case the Content-Type of the request is set to ``multipart/form-data``, and the
     *  body will contain at least one part which is the object data. This part includes
     *  a filename which is used as the object name as well as a ``Content-Type`` header.
     *  The name attribute for the file part is ignored.
     *  Additional parts (which do not specify a filename) will be used as metadata: the
     *  name is specified as part of the ``Content-Disposition`` and the value is the body
     *  of the part.
     *  
     *  This can be tested with curl using the ``-F`` option.
     *  
     *  
     *  .. rubric:: Example
     *  .. code-block:: http
     *  
     *      POST /api/storage/buckets/my_bucket/objects HTTP/1.1
     *      Host: localhost:8090
     *      User-Agent: curl/7.58.0
     *      Accept: *{@literal /}*
     *      Content-Length: 1090
     *      Content-Type: multipart/form-data; boundary=------------------------7109c709802f7ae4
     *  
     *      --------------------------7109c709802f7ae4
     *      Content-Disposition: form-data; name="file"; filename="object/name"
     *      Content-Type: text/plain
     *  
     *      [object data]
     *      --------------------------7109c709802f7ae4
     *      Content-Disposition: form-data; name="name1"
     *  
     *      value1
     *      --------------------------7109c709802f7ae4
     *      Content-Disposition: form-data; name="name2"
     *  
     *      value2
     *      --------------------------7109c709802f7ae4--
     *  
     *  
     *  This will create an object named ``object/name`` with two metadata properties:
     *  
     *  .. code-block:: json
     *  
     *      {
     *          "name1": "value1",
     *          "name2": "value2"
     *      }
     * 
*/ @Override public final void uploadObject(Void ctx, UploadObjectRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(6), request, Empty.getDefaultInstance(), observer); } /** *
     *  List objects
     * 
*/ @Override public final void listObjects(Void ctx, ListObjectsRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(7), request, ListObjectsResponse.getDefaultInstance(), observer); } /** *
     *  Delete an object
     * 
*/ @Override public final void deleteObject(Void ctx, DeleteObjectRequest request, Observer observer) { handler.call( getDescriptorForType().getMethods().get(8), request, Empty.getDefaultInstance(), observer); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy