code: private void bucket(WebContext ctx, String bucketName) {
          Bucket bucket = storage.getBucket(bucketName);
  
          if (!objectCheckAuth(ctx, bucket)) {
              return;
          }
  
          HttpMethod method = ctx.getRequest().method();
  
          if (HEAD == method) {
              if (bucket.exists()) {
                  signalObjectSuccess(ctx);
                  ctx.respondWith().status(HttpResponseStatus.OK);
              } else {
                  signalObjectError(ctx, HttpResponseStatus.NOT_FOUND, ERROR_BUCKET_DOES_NOT_EXIST);
              }
          } else if (GET == method) {
              if (bucket.exists()) {
                  listObjects(ctx, bucket);
              } else {
                  signalObjectError(ctx, HttpResponseStatus.NOT_FOUND, ERROR_BUCKET_DOES_NOT_EXIST);
              }
          } else if (DELETE == method) {
              bucket.delete();
              signalObjectSuccess(ctx);
              ctx.respondWith().status(HttpResponseStatus.OK);
          } else if (PUT == method) {
              bucket.create();
              signalObjectSuccess(ctx);
              ctx.respondWith().status(HttpResponseStatus.OK);
          } else {
              throw new IllegalArgumentException(ctx.getRequest().method().name());
          }
      }
docs: Dispatching method handling bucket specific calls without content (HEAD, DELETE, GET and PUT)
  
  @param ctx        the context describing the current request
  @param bucketName name of the bucket of interest