Skip to content

Commit

Permalink
add options to configure deserialization of ProtoQueueMessage
Browse files Browse the repository at this point in the history
  • Loading branch information
tunderdomb committed Aug 3, 2022
1 parent 64e41ad commit 43b6158
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions src/ProtoQueueMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,22 @@ class ProtoQueueMessage extends QueueMessage {
return this.ContentSchema.encode(message).finish()
}

static getUnserializeOptions () {
return {
enums: String, // enums as string names
longs: Number, // longs as numbers
bytes: Buffer, // bytes as base64 encoded strings
defaults: true, // includes default values
arrays: true, // populates empty arrays (repeated fields) even if defaults=false
objects: true, // populates empty objects (map fields) even if defaults=false
oneofs: true // includes virtual oneof fields set to the present field's name
}
}

static unserialize (buffer, ContentSchema) {
try {
const message = ContentSchema.decode(buffer)
const data = ContentSchema.toObject(message, {
enums: String, // enums as string names
longs: Number, // longs as strings (requires long.js)
bytes: Buffer, // bytes as base64 encoded strings
defaults: true, // includes default values
arrays: true, // populates empty arrays (repeated fields) even if defaults=false
objects: true, // populates empty objects (map fields) even if defaults=false
oneofs: true // includes virtual oneof fields set to the present field's name
})
const data = ContentSchema.toObject(message, this.getUnserializeOptions())

return new ProtoQueueMessage('ok', data, null, ContentSchema)
} catch (err) {
Expand Down

0 comments on commit 43b6158

Please sign in to comment.