Skip to content

Commit d63a3c9

Browse files
authored
feat: add dedicated conferencing provider enums for create and update operations (#292)
# What did you do? ### Added * `CreateEventAutoConferencingProvider` enum for autocreate conferencing providers in event creation * `CreateEventManualConferencingProvider` enum for manual conferencing providers in event creation * `UpdateEventAutoConferencingProvider` enum for autocreate conferencing providers in event updates * `UpdateEventManualConferencingProvider` enum for manual conferencing providers in event updates ### Changed * Enhanced `CreateEventRequest.Conferencing` to use dedicated provider enums while maintaining backward compatibility * Enhanced `UpdateEventRequest.Conferencing` to use dedicated provider enums while maintaining backward compatibility ### Deprecated * `CreateEventRequest.Conferencing.Autocreate.fromConferencingProvider()` - Use `CreateEventAutoConferencingProvider` instead * `CreateEventRequest.Conferencing.Details.fromConferencingProvider()` - Use `CreateEventManualConferencingProvider` instead * `UpdateEventRequest.Conferencing.Autocreate.fromConferencingProvider()` - Use `UpdateEventAutoConferencingProvider` instead * `UpdateEventRequest.Conferencing.Details.fromConferencingProvider()` - Use `UpdateEventManualConferencingProvider` instead # License <!-- Your PR comment must contain the following line for us to merge the PR. --> I confirm that this contribution is made under the terms of the MIT license and that I have the authority necessary to make this contribution on behalf of its copyright owner.
1 parent 603dc64 commit d63a3c9

File tree

9 files changed

+597
-17
lines changed

9 files changed

+597
-17
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Nylas Java SDK Changelog
22

3+
## [Unreleased]
4+
5+
### Added
6+
* `CreateEventAutoConferencingProvider` enum for autocreate conferencing providers in event creation
7+
* `CreateEventManualConferencingProvider` enum for manual conferencing providers in event creation
8+
* `UpdateEventAutoConferencingProvider` enum for autocreate conferencing providers in event updates
9+
* `UpdateEventManualConferencingProvider` enum for manual conferencing providers in event updates
10+
11+
### Changed
12+
* Enhanced `CreateEventRequest.Conferencing` to use dedicated provider enums while maintaining backward compatibility
13+
* Enhanced `UpdateEventRequest.Conferencing` to use dedicated provider enums while maintaining backward compatibility
14+
15+
### Deprecated
16+
* `CreateEventRequest.Conferencing.Autocreate.fromConferencingProvider()` - Use `CreateEventAutoConferencingProvider` instead
17+
* `CreateEventRequest.Conferencing.Details.fromConferencingProvider()` - Use `CreateEventManualConferencingProvider` instead
18+
* `UpdateEventRequest.Conferencing.Autocreate.fromConferencingProvider()` - Use `UpdateEventAutoConferencingProvider` instead
19+
* `UpdateEventRequest.Conferencing.Details.fromConferencingProvider()` - Use `UpdateEventManualConferencingProvider` instead
20+
321
## [2.12.0]
422

523
### Added

src/main/kotlin/com/nylas/models/ConferencingProvider.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,20 @@ import com.squareup.moshi.Json
66
* Enum for the different conferencing providers.
77
*/
88
enum class ConferencingProvider {
9-
@Json(name = "Zoom Meeting")
10-
ZOOM_MEETING,
11-
129
@Json(name = "Google Meet")
1310
GOOGLE_MEET,
1411

12+
@Json(name = "GoToMeeting")
13+
GOTOMEETING,
14+
1515
@Json(name = "Microsoft Teams")
1616
MICROSOFT_TEAMS,
1717

1818
@Json(name = "WebEx")
1919
WEBEX,
2020

21-
@Json(name = "GoToMeeting")
22-
GOTOMEETING,
23-
24-
@Json(name = "skypeForConsumer")
25-
SKYPE_FOR_CONSUMER,
21+
@Json(name = "Zoom Meeting")
22+
ZOOM_MEETING,
2623

2724
@Json(name = "unknown")
2825
UNKNOWN,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.nylas.models
2+
3+
import com.squareup.moshi.Json
4+
5+
/**
6+
* Enum for the different conferencing providers that can be used to auto-create a meeting.
7+
*/
8+
enum class CreateEventAutoConferencingProvider {
9+
@Json(name = "Google Meet")
10+
GOOGLE_MEET,
11+
12+
@Json(name = "Zoom Meeting")
13+
ZOOM_MEETING,
14+
15+
@Json(name = "Microsoft Teams")
16+
MICROSOFT_TEAMS,
17+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.nylas.models
2+
3+
import com.squareup.moshi.Json
4+
5+
/**
6+
* Enum for the different conferencing providers that can be used to manually create a meeting.
7+
*/
8+
enum class CreateEventManualConferencingProvider {
9+
@Json(name = "Google Meet")
10+
GOOGLE_MEET,
11+
12+
@Json(name = "Zoom Meeting")
13+
ZOOM_MEETING,
14+
15+
@Json(name = "Microsoft Teams")
16+
MICROSOFT_TEAMS,
17+
18+
@Json(name = "Teams for Business")
19+
TEAMS_FOR_BUSINESS,
20+
21+
@Json(name = "Skype for Business")
22+
SKYPE_FOR_BUSINESS,
23+
24+
@Json(name = "Skype for Consumer")
25+
SKYPE_FOR_CONSUMER,
26+
}

src/main/kotlin/com/nylas/models/CreateEventRequest.kt

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,14 +321,41 @@ data class CreateEventRequest(
321321
* The conferencing provider.
322322
*/
323323
@Json(name = "provider")
324-
val provider: ConferencingProvider,
324+
val provider: CreateEventAutoConferencingProvider,
325325
/**
326326
* Empty dict to indicate an intention to autocreate a video link.
327327
* Additional provider settings may be included in autocreate.settings, but Nylas does not validate these.
328328
*/
329329
@Json(name = "autocreate")
330330
val autocreate: Map<String, Any> = emptyMap(),
331-
) : Conferencing()
331+
) : Conferencing() {
332+
companion object {
333+
/**
334+
* Create an Autocreate conferencing object using the original ConferencingProvider enum.
335+
* @param provider The conferencing provider from the original enum
336+
* @param autocreate Empty dict to indicate an intention to autocreate a video link
337+
* @return Autocreate object with converted provider
338+
* @deprecated Use CreateEventAutoConferencingProvider instead. This method will be removed in a future version.
339+
*/
340+
@Deprecated(
341+
message = "Use CreateEventAutoConferencingProvider instead of ConferencingProvider",
342+
replaceWith = ReplaceWith("Autocreate(CreateEventAutoConferencingProvider.fromConferencingProvider(provider), autocreate)"),
343+
)
344+
@JvmStatic
345+
fun fromConferencingProvider(
346+
provider: ConferencingProvider,
347+
autocreate: Map<String, Any> = emptyMap(),
348+
): Autocreate {
349+
val newProvider = when (provider) {
350+
ConferencingProvider.GOOGLE_MEET -> CreateEventAutoConferencingProvider.GOOGLE_MEET
351+
ConferencingProvider.ZOOM_MEETING -> CreateEventAutoConferencingProvider.ZOOM_MEETING
352+
ConferencingProvider.MICROSOFT_TEAMS -> CreateEventAutoConferencingProvider.MICROSOFT_TEAMS
353+
else -> throw IllegalArgumentException("Provider $provider is not supported for autocreate conferencing. Use CreateEventAutoConferencingProvider instead.")
354+
}
355+
return Autocreate(newProvider, autocreate)
356+
}
357+
}
358+
}
332359

333360
/**
334361
* Class representation of a conferencing details object
@@ -338,13 +365,42 @@ data class CreateEventRequest(
338365
* The conferencing provider.
339366
*/
340367
@Json(name = "provider")
341-
val provider: ConferencingProvider,
368+
val provider: CreateEventManualConferencingProvider,
342369
/**
343370
* The conferencing details
344371
*/
345372
@Json(name = "details")
346373
val details: Config,
347374
) : Conferencing() {
375+
companion object {
376+
/**
377+
* Create a Details conferencing object using the original ConferencingProvider enum.
378+
* @param provider The conferencing provider from the original enum
379+
* @param details The conferencing details config
380+
* @return Details object with converted provider
381+
* @deprecated Use CreateEventManualConferencingProvider instead. This method will be removed in a future version.
382+
*/
383+
@Deprecated(
384+
message = "Use CreateEventManualConferencingProvider instead of ConferencingProvider",
385+
replaceWith = ReplaceWith("Details(CreateEventManualConferencingProvider.fromConferencingProvider(provider), details)"),
386+
)
387+
@JvmStatic
388+
fun fromConferencingProvider(
389+
provider: ConferencingProvider,
390+
details: Config,
391+
): Details {
392+
val newProvider = when (provider) {
393+
ConferencingProvider.GOOGLE_MEET -> CreateEventManualConferencingProvider.GOOGLE_MEET
394+
ConferencingProvider.ZOOM_MEETING -> CreateEventManualConferencingProvider.ZOOM_MEETING
395+
ConferencingProvider.MICROSOFT_TEAMS -> CreateEventManualConferencingProvider.MICROSOFT_TEAMS
396+
ConferencingProvider.GOTOMEETING -> throw IllegalArgumentException("GoToMeeting is not supported in CreateEventManualConferencingProvider. Use the new enum directly.")
397+
ConferencingProvider.WEBEX -> throw IllegalArgumentException("WebEx is not supported in CreateEventManualConferencingProvider. Use the new enum directly.")
398+
ConferencingProvider.UNKNOWN -> throw IllegalArgumentException("Unknown provider is not supported for event creation. Use CreateEventManualConferencingProvider instead.")
399+
}
400+
return Details(newProvider, details)
401+
}
402+
}
403+
348404
/**
349405
* Class representation of a conferencing details config object
350406
* @property meetingCode The conferencing meeting code. Used for Zoom.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.nylas.models
2+
3+
import com.squareup.moshi.Json
4+
5+
/**
6+
* Enum for the different conferencing providers that can be used to auto-create a meeting when updating events.
7+
*/
8+
enum class UpdateEventAutoConferencingProvider {
9+
@Json(name = "Google Meet")
10+
GOOGLE_MEET,
11+
12+
@Json(name = "Zoom Meeting")
13+
ZOOM_MEETING,
14+
15+
@Json(name = "Microsoft Teams")
16+
MICROSOFT_TEAMS,
17+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.nylas.models
2+
3+
import com.squareup.moshi.Json
4+
5+
/**
6+
* Enum for the different conferencing providers that can be used to manually create a meeting when updating events.
7+
*/
8+
enum class UpdateEventManualConferencingProvider {
9+
@Json(name = "Google Meet")
10+
GOOGLE_MEET,
11+
12+
@Json(name = "Zoom Meeting")
13+
ZOOM_MEETING,
14+
15+
@Json(name = "Microsoft Teams")
16+
MICROSOFT_TEAMS,
17+
18+
@Json(name = "Teams for Business")
19+
TEAMS_FOR_BUSINESS,
20+
21+
@Json(name = "Skype for Business")
22+
SKYPE_FOR_BUSINESS,
23+
24+
@Json(name = "Skype for Consumer")
25+
SKYPE_FOR_CONSUMER,
26+
}

src/main/kotlin/com/nylas/models/UpdateEventRequest.kt

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -354,27 +354,54 @@ data class UpdateEventRequest(
354354
* The conferencing provider.
355355
*/
356356
@Json(name = "provider")
357-
val provider: ConferencingProvider? = null,
357+
val provider: UpdateEventAutoConferencingProvider? = null,
358358
/**
359359
* Empty dict to indicate an intention to autocreate a video link.
360360
* Additional provider settings may be included in autocreate.settings, but Nylas does not validate these.
361361
*/
362362
@Json(name = "autocreate")
363363
val autocreate: Map<String, Any>? = null,
364364
) : Conferencing() {
365+
companion object {
366+
/**
367+
* Create an Autocreate conferencing object using the original ConferencingProvider enum.
368+
* @param provider The conferencing provider from the original enum
369+
* @param autocreate Empty dict to indicate an intention to autocreate a video link
370+
* @return Autocreate object with converted provider
371+
* @deprecated Use UpdateEventAutoConferencingProvider instead. This method will be removed in a future version.
372+
*/
373+
@Deprecated(
374+
message = "Use UpdateEventAutoConferencingProvider instead of ConferencingProvider",
375+
replaceWith = ReplaceWith("Autocreate(UpdateEventAutoConferencingProvider.fromConferencingProvider(provider), autocreate)"),
376+
)
377+
@JvmStatic
378+
fun fromConferencingProvider(
379+
provider: ConferencingProvider,
380+
autocreate: Map<String, Any>? = null,
381+
): Autocreate {
382+
val newProvider = when (provider) {
383+
ConferencingProvider.GOOGLE_MEET -> UpdateEventAutoConferencingProvider.GOOGLE_MEET
384+
ConferencingProvider.ZOOM_MEETING -> UpdateEventAutoConferencingProvider.ZOOM_MEETING
385+
ConferencingProvider.MICROSOFT_TEAMS -> UpdateEventAutoConferencingProvider.MICROSOFT_TEAMS
386+
else -> throw IllegalArgumentException("Provider $provider is not supported for autocreate conferencing. Use UpdateEventAutoConferencingProvider instead.")
387+
}
388+
return Autocreate(newProvider, autocreate)
389+
}
390+
}
391+
365392
/**
366393
* Builder for [Autocreate].
367394
*/
368395
class Builder {
369-
private var provider: ConferencingProvider? = null
396+
private var provider: UpdateEventAutoConferencingProvider? = null
370397
private var autocreate: Map<String, Any>? = null
371398

372399
/**
373400
* Set the conferencing provider.
374401
* @param provider The conferencing provider.
375402
* @return The builder.
376403
*/
377-
fun provider(provider: ConferencingProvider) = apply { this.provider = provider }
404+
fun provider(provider: UpdateEventAutoConferencingProvider) = apply { this.provider = provider }
378405

379406
/**
380407
* Set the autocreate settings.
@@ -400,13 +427,42 @@ data class UpdateEventRequest(
400427
* The conferencing provider.
401428
*/
402429
@Json(name = "provider")
403-
val provider: ConferencingProvider? = null,
430+
val provider: UpdateEventManualConferencingProvider? = null,
404431
/**
405432
* The conferencing details
406433
*/
407434
@Json(name = "details")
408435
val details: Config? = null,
409436
) : Conferencing() {
437+
companion object {
438+
/**
439+
* Create a Details conferencing object using the original ConferencingProvider enum.
440+
* @param provider The conferencing provider from the original enum
441+
* @param details The conferencing details config
442+
* @return Details object with converted provider
443+
* @deprecated Use UpdateEventManualConferencingProvider instead. This method will be removed in a future version.
444+
*/
445+
@Deprecated(
446+
message = "Use UpdateEventManualConferencingProvider instead of ConferencingProvider",
447+
replaceWith = ReplaceWith("Details(UpdateEventManualConferencingProvider.fromConferencingProvider(provider), details)"),
448+
)
449+
@JvmStatic
450+
fun fromConferencingProvider(
451+
provider: ConferencingProvider,
452+
details: Config? = null,
453+
): Details {
454+
val newProvider = when (provider) {
455+
ConferencingProvider.GOOGLE_MEET -> UpdateEventManualConferencingProvider.GOOGLE_MEET
456+
ConferencingProvider.ZOOM_MEETING -> UpdateEventManualConferencingProvider.ZOOM_MEETING
457+
ConferencingProvider.MICROSOFT_TEAMS -> UpdateEventManualConferencingProvider.MICROSOFT_TEAMS
458+
ConferencingProvider.GOTOMEETING -> throw IllegalArgumentException("GoToMeeting is not supported in UpdateEventManualConferencingProvider. Use the new enum directly.")
459+
ConferencingProvider.WEBEX -> throw IllegalArgumentException("WebEx is not supported in UpdateEventManualConferencingProvider. Use the new enum directly.")
460+
ConferencingProvider.UNKNOWN -> throw IllegalArgumentException("Unknown provider is not supported for event updates. Use UpdateEventManualConferencingProvider instead.")
461+
}
462+
return Details(newProvider, details)
463+
}
464+
}
465+
410466
/**
411467
* Class representation of a conferencing details config object
412468
* @property meetingCode The conferencing meeting code. Used for Zoom.
@@ -474,15 +530,15 @@ data class UpdateEventRequest(
474530
* Builder for [Details].
475531
*/
476532
class Builder {
477-
private var provider: ConferencingProvider? = null
533+
private var provider: UpdateEventManualConferencingProvider? = null
478534
private var details: Config? = null
479535

480536
/**
481537
* Set the conferencing provider.
482538
* @param provider The conferencing provider.
483539
* @return The builder.
484540
*/
485-
fun provider(provider: ConferencingProvider) = apply { this.provider = provider }
541+
fun provider(provider: UpdateEventManualConferencingProvider) = apply { this.provider = provider }
486542

487543
/**
488544
* Set the conferencing details.

0 commit comments

Comments
 (0)