From e1b208c532c60132d08ef866ad84565352e117af Mon Sep 17 00:00:00 2001 From: Aaron de Mello Date: Thu, 10 Apr 2025 09:52:47 -0400 Subject: [PATCH] fix: updated notetaker media response model --- .../com/nylas/examples/NotetakerExample.java | 14 +++- src/main/kotlin/com/nylas/models/Notetaker.kt | 64 ++++++++++++++++++- .../com/nylas/resources/NotetakersTests.kt | 50 +++++++++++++++ 3 files changed, 124 insertions(+), 4 deletions(-) diff --git a/examples/src/main/java/com/nylas/examples/NotetakerExample.java b/examples/src/main/java/com/nylas/examples/NotetakerExample.java index f64c9e38..aedb66aa 100644 --- a/examples/src/main/java/com/nylas/examples/NotetakerExample.java +++ b/examples/src/main/java/com/nylas/examples/NotetakerExample.java @@ -217,13 +217,23 @@ private static void getNotetakerMedia(NylasClient nylas, String notetakerId) thr if (media.getData().getRecording() != null) { System.out.println("Recording:"); System.out.println(" • URL: " + media.getData().getRecording().getUrl()); - System.out.println(" • Size: " + media.getData().getRecording().getSize() + " MB"); + System.out.println(" • Size: " + (media.getData().getRecording().getSize() / (1024.0 * 1024.0)) + " MB"); + System.out.println(" • Name: " + media.getData().getRecording().getName()); + System.out.println(" • Type: " + media.getData().getRecording().getType()); + System.out.println(" • Created At: " + media.getData().getRecording().getCreatedAt()); + System.out.println(" • Expires At: " + media.getData().getRecording().getExpiresAt()); + System.out.println(" • TTL: " + media.getData().getRecording().getTtl() + " seconds"); } if (media.getData().getTranscript() != null) { System.out.println("Transcript:"); System.out.println(" • URL: " + media.getData().getTranscript().getUrl()); - System.out.println(" • Size: " + media.getData().getTranscript().getSize() + " MB"); + System.out.println(" • Size: " + (media.getData().getTranscript().getSize() / (1024.0 * 1024.0)) + " MB"); + System.out.println(" • Name: " + media.getData().getTranscript().getName()); + System.out.println(" • Type: " + media.getData().getTranscript().getType()); + System.out.println(" • Created At: " + media.getData().getTranscript().getCreatedAt()); + System.out.println(" • Expires At: " + media.getData().getTranscript().getExpiresAt()); + System.out.println(" • TTL: " + media.getData().getTranscript().getTtl() + " seconds"); } } diff --git a/src/main/kotlin/com/nylas/models/Notetaker.kt b/src/main/kotlin/com/nylas/models/Notetaker.kt index 92655700..0e62458d 100644 --- a/src/main/kotlin/com/nylas/models/Notetaker.kt +++ b/src/main/kotlin/com/nylas/models/Notetaker.kt @@ -174,10 +174,40 @@ data class NotetakerMediaResponse( val url: String, /** - * The size of the file, in MB + * The size of the file, in bytes */ @Json(name = "size") val size: Int, + + /** + * The file name + */ + @Json(name = "name") + val name: String, + + /** + * The file type/MIME type + */ + @Json(name = "type") + val type: String, + + /** + * When the file was created (Unix timestamp) + */ + @Json(name = "created_at") + val createdAt: Long, + + /** + * When the file will expire (Unix timestamp) + */ + @Json(name = "expires_at") + val expiresAt: Long, + + /** + * Time-to-live in seconds until the file will be deleted off Nylas' storage server + */ + @Json(name = "ttl") + val ttl: Int, ) /** @@ -191,9 +221,39 @@ data class NotetakerMediaResponse( val url: String, /** - * The size of the file, in MB + * The size of the file, in bytes */ @Json(name = "size") val size: Int, + + /** + * The file name + */ + @Json(name = "name") + val name: String, + + /** + * The file type/MIME type + */ + @Json(name = "type") + val type: String, + + /** + * When the file was created (Unix timestamp) + */ + @Json(name = "created_at") + val createdAt: Long, + + /** + * When the file will expire (Unix timestamp) + */ + @Json(name = "expires_at") + val expiresAt: Long, + + /** + * Time-to-live in seconds until the file will be deleted off Nylas' storage server + */ + @Json(name = "ttl") + val ttl: Int, ) } diff --git a/src/test/kotlin/com/nylas/resources/NotetakersTests.kt b/src/test/kotlin/com/nylas/resources/NotetakersTests.kt index 0d0c8f57..d58a65dd 100644 --- a/src/test/kotlin/com/nylas/resources/NotetakersTests.kt +++ b/src/test/kotlin/com/nylas/resources/NotetakersTests.kt @@ -74,6 +74,56 @@ class NotetakersTests { assertEquals(true, notetaker.meetingSettings?.transcription) } + @Test + fun `NotetakerMediaResponse serializes properly`() { + val adapter = JsonHelper.moshi().adapter(NotetakerMediaResponse::class.java) + val jsonBuffer = Buffer().writeUtf8( + """ + { + "recording": { + "size": 21550491, + "name": "meeting_recording.mp4", + "type": "video/mp4", + "created_at": 1744222418, + "expires_at": 1744481618, + "url": "url_for_recording", + "ttl": 259106 + }, + "transcript": { + "size": 862, + "name": "raw_transcript.json", + "type": "application/json", + "created_at": 1744222418, + "expires_at": 1744481618, + "url": "url_for_transcript", + "ttl": 259106 + } + } + """.trimIndent(), + ) + + val mediaResponse = adapter.fromJson(jsonBuffer)!! + assertIs(mediaResponse) + + // Check recording + assertEquals(21550491, mediaResponse.recording?.size) + assertEquals("meeting_recording.mp4", mediaResponse.recording?.name) + assertEquals("video/mp4", mediaResponse.recording?.type) + assertEquals(1744222418, mediaResponse.recording?.createdAt) + assertEquals(1744481618, mediaResponse.recording?.expiresAt) + assertEquals("url_for_recording", mediaResponse.recording?.url) + assertEquals(259106, mediaResponse.recording?.ttl) + + // Check transcript + assertEquals(862, mediaResponse.transcript?.size) + assertEquals("raw_transcript.json", mediaResponse.transcript?.name) + assertEquals("application/json", mediaResponse.transcript?.type) + assertEquals(1744222418, mediaResponse.transcript?.createdAt) + assertEquals(1744481618, mediaResponse.transcript?.expiresAt) + assertEquals("url_for_transcript", mediaResponse.transcript?.url) + assertEquals(259106, mediaResponse.transcript?.ttl) + } + @Test fun `DeleteResponse serializes properly`() { val adapter = JsonHelper.moshi().adapter(DeleteResponse::class.java)