Client: Provide utility methods for binary transfer

Closes #25 (closed)

Changes

  • Fix bug in server-side UploadService.deleteBinary
  • Move BinaryInfo and BinaryTransferError from server_base to core
  • Add BinaryUploadHelper and BinaryDownloadHelper as client-side utilities
    • Wrap upload and download procedures into simple method calls
    • MR includes tests for these utilities

New API

// binary upload
BinaryUploadHelper uploader = new BinaryUploadHelper(channel)
BinaryInfo info = uploader.upload(byte[] bytes, String parameterId)  // for upload of in-memory data
BinaryInfo info = uploader.upload(InputStream byteStream, long length, String parameterId)  // for upload of bytes from a stream (e.g. file)
BinaryUploadHelper uploader = uploader.withMetadata(Message... metadataMessages)  // for sending metadata with CreateBinary
BinaryUploadHelper uploader = uploader.withMetadata(List<Message> metadataMessages)  // for sending metadata with CreateBinary
uploader.deleteBinary(UUID binaryTransferUuid)  // for deleting binaries on the server

// binary download
var downloader = new BinaryDownloadHelper(channel)
BinaryInfo info = downloader.getBinaryInfo(UUID binaryTransferUUID)  // for requesting information about a binary
byte[] bytes = downloader.download(UUID binaryTransferUUID)  // for download into memory
downloader.download(UUID binaryTransferUUID, Path downloadFile)  // for download in file
downloader.deleteBinary(UUID binaryTransferUUID)  // for deleting binaries on the server

Merge request reports

Loading