final var id = ns.getString("id");
try (InputStream attachment = m.retrieveAttachment(id)) {
+ final var bytes = attachment.readAllBytes();
+ final var base64 = Base64.getEncoder().encodeToString(bytes);
if (outputWriter instanceof PlainTextWriter writer) {
- final var bytes = attachment.readAllBytes();
- final var base64 = Base64.getEncoder().encodeToString(bytes);
writer.println(base64);
} else if (outputWriter instanceof JsonWriter writer) {
- writer.write(new JsonAttachmentData(attachment));
+ writer.write(new JsonAttachmentData(base64));
}
} catch (FileNotFoundException ex) {
throw new UserErrorException("Could not find attachment with ID: " + id, ex);
package org.asamk.signal.json;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-import java.io.InputStream;
-
public record JsonAttachmentData(
- @JsonSerialize(using = JsonStreamSerializer.class) InputStream data
+ String data
) {}
+++ /dev/null
-package org.asamk.signal.json;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-public class JsonStreamSerializer extends JsonSerializer<InputStream> {
-
- @Override
- public void serialize(
- final InputStream value, final JsonGenerator jsonGenerator, final SerializerProvider serializers
- ) throws IOException {
- jsonGenerator.writeBinary(value, -1);
- }
-}