code: private void writeObject(WebContext ctx, String bucketName, String objectId, InputStreamHandler in)
              throws IOException {
          Bucket bucket = storage.getBucket(bucketName);
          String id = objectId.replace('/', '_');
          String uploadId = ctx.get("uploadId").asString();
  
          if (!checkObjectRequest(ctx, bucket, id)) {
              return;
          }
  
          HttpMethod method = ctx.getRequest().method();
          if (PUT == method) {
              Value copy = ctx.getHeaderValue("x-amz-copy-source");
              if (copy.isFilled()) {
                  copyObject(ctx, bucket, id, copy.asString());
              } else if (ctx.hasParameter("partNumber") && Strings.isFilled(uploadId)) {
                  multiObject(ctx, uploadId, ctx.get("partNumber").asString(), in);
              } else {
                  putObject(ctx, bucket, id, in);
              }
          } else if (POST == method) {
              if (ctx.hasParameter("uploads")) {
                  startMultipartUpload(ctx, bucket, id);
              } else if (Strings.isFilled(uploadId)) {
                  completeMultipartUpload(ctx, bucket, id, uploadId, in);
              }
          } else {
              throw new IllegalArgumentException(ctx.getRequest().method().name());
          }
      }
docs: Dispatching method handling all object specific calls which write / provide data.
  
  @param ctx        the context describing the current request
  @param bucketName name of the bucket which contains the object (must exist)
  @param objectId   name of the object of interest
  @param in         the data to process
  @throws IOException in case of IO errors and there like