Skip to content

Commit 683e1de

Browse files
authored
Merge pull request #511 from JetBrains/sessionize-video-url
Populate video recording URLs from Sessionize data
2 parents c4db493 + bac6475 commit 683e1de

File tree

11 files changed

+31
-212
lines changed

11 files changed

+31
-212
lines changed

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/di/ServiceModule.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ package org.jetbrains.kotlinconf.backend.di
33
import org.jetbrains.kotlinconf.backend.services.NewsService
44
import org.jetbrains.kotlinconf.backend.services.SessionizeService
55
import org.jetbrains.kotlinconf.backend.services.TimeService
6-
import org.jetbrains.kotlinconf.backend.services.VideoUrlService
76
import org.koin.core.module.dsl.singleOf
87
import org.koin.dsl.module
98

109
val serviceModule = module {
1110
singleOf(::TimeService)
1211
singleOf(::NewsService)
13-
singleOf(::VideoUrlService)
1412
singleOf(::SessionizeService)
15-
}
13+
}

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/model/SessionizeData.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ data class SessionData(
3232
val title: String,
3333
val roomId: Int?,
3434
val questionAnswers: List<QuestionAnswerData> = emptyList(),
35-
val categoryItems: List<Int> = emptyList()
35+
val categoryItems: List<Int> = emptyList(),
36+
val liveUrl: String? = null,
37+
val recordingUrl: String? = null,
3638
) {
3739
val displayTitle: String = title.trim()
3840

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/services/NewsService.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import org.slf4j.LoggerFactory
1717

1818
class NewsService(private val client: HttpClient, config: ConferenceConfig): Closeable {
1919
private val log = LoggerFactory.getLogger("NewsService")
20-
private val repo: String = config.dataRepo
21-
private val branch: String = config.dataBranch
20+
private val repo: String = config.newsRepo
21+
private val branch: String = config.newsBranch
2222
private val folder: String = config.newsFolder
2323
private val updateInterval = config.sessionizeInterval
2424

@@ -132,4 +132,4 @@ class NewsService(private val client: HttpClient, config: ConferenceConfig): Clo
132132
override fun close() {
133133
syncJob.cancel()
134134
}
135-
}
135+
}

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/services/SessionizeService.kt

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package org.jetbrains.kotlinconf.backend.services
55
import io.ktor.client.HttpClient
66
import io.ktor.client.call.body
77
import io.ktor.client.request.get
8+
import io.ktor.client.statement.bodyAsText
89
import io.ktor.utils.io.core.Closeable
910
import kotlinx.coroutines.DelicateCoroutinesApi
1011
import kotlinx.coroutines.GlobalScope
@@ -16,7 +17,6 @@ import kotlinx.datetime.toLocalDateTime
1617
import org.jetbrains.kotlinconf.Conference
1718
import org.jetbrains.kotlinconf.EVENT_TIME_ZONE
1819
import org.jetbrains.kotlinconf.Session
19-
import org.jetbrains.kotlinconf.SessionId
2020
import org.jetbrains.kotlinconf.Speaker
2121
import org.jetbrains.kotlinconf.backend.model.CategoryItemData
2222
import org.jetbrains.kotlinconf.backend.model.SessionizeData
@@ -27,7 +27,6 @@ import kotlin.time.ExperimentalTime
2727

2828
class SessionizeService(
2929
private val client: HttpClient,
30-
private val videoUrlService: VideoUrlService,
3130
config: ConferenceConfig
3231
): Closeable {
3332
private val conference = MutableSharedFlow<Conference>(replay = 1)
@@ -55,10 +54,9 @@ class SessionizeService(
5554
suspend fun synchronizeWithSessionize(
5655
sessionizeUrl: String,
5756
) {
58-
val sessionizeData = client.get(sessionizeUrl).body<SessionizeData>()
59-
val videoUrls = videoUrlService.getVideoUrls()
60-
61-
val updatedValue = sessionizeData.toConference(videoUrls)
57+
val updatedValue = client.get(sessionizeUrl)
58+
.body<SessionizeData>()
59+
.toConference()
6260

6361
conference.emit(updatedValue)
6462
}
@@ -72,7 +70,7 @@ class SessionizeService(
7270

7371
suspend fun getConferenceData(): Conference = conference.first()
7472

75-
private fun SessionizeData.toConference(videoUrls: Map<SessionId, String>): Conference {
73+
private fun SessionizeData.toConference(): Conference {
7674
val tags: Map<Int, CategoryItemData> = categories
7775
.flatMap { it.items }
7876
.associateBy { it.id }
@@ -87,15 +85,15 @@ class SessionizeService(
8785
if ("Interview" in tags) return@mapNotNull null
8886

8987
Session(
90-
it.id,
91-
it.displayTitle,
92-
it.descriptionText ?: "",
93-
it.speakers,
94-
(it.roomId?.let<Int, String> { findRoom(it) } ?: "unknown").removeSuffix(" (Lightning talks)"),
95-
startsAt.toLocalDateTime(EVENT_TIME_ZONE),
96-
endsAt.toLocalDateTime(EVENT_TIME_ZONE),
97-
tags,
98-
videoUrls[it.id]
88+
id = it.id,
89+
title = it.displayTitle,
90+
description = it.descriptionText ?: "",
91+
speakerIds = it.speakers,
92+
location = (it.roomId?.let<Int, String> { findRoom(it) } ?: "unknown").removeSuffix(" (Lightning talks)"),
93+
startsAt = startsAt.toLocalDateTime(EVENT_TIME_ZONE),
94+
endsAt = endsAt.toLocalDateTime(EVENT_TIME_ZONE),
95+
tags = tags,
96+
videoUrl = it.recordingUrl
9997
)
10098
}.mergeWorkshops()
10199

@@ -131,8 +129,7 @@ class SessionizeService(
131129
first.location,
132130
startTime,
133131
endTime,
134-
first.tags,
135-
first.videoUrl
132+
first.tags
136133
)
137134
}
138135

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/services/VideoUrlService.kt

Lines changed: 0 additions & 99 deletions
This file was deleted.

backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/utils/ConferenceConfig.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ class ConferenceConfig(config: ApplicationConfig) {
99

1010
val adminSecret: String = config.property("service.secret").getString()
1111

12-
val dataRepo: String = config.property("data.repo").getString()
13-
val dataBranch: String = config.property("data.branch").getString()
14-
val newsFolder: String = config.property("data.newsFolder").getString()
15-
val videosFolder: String = config.property("data.videosFolder").getString()
16-
}
12+
val newsRepo: String = config.property("news.repo").getString()
13+
val newsBranch: String = config.property("news.branch").getString()
14+
val newsFolder: String = config.property("news.folder").getString()
15+
}

backend/src/main/resources/application.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ sessionize:
1414
imagesUrl: "https://sessionize.com/image/"
1515
interval: 60
1616

17-
data:
17+
news:
1818
repo: "JetBrains/kotlinconf-app"
1919
branch: "main"
20-
newsFolder: "data/news"
21-
videosFolder: "data/videos"
20+
folder: "news"
2221

2322
database:
2423
host: "$DB0_HOST:"

backend/src/test/resources/test-application.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ sessionize:
1414
imagesUrl: "https://sessionize.com/image/"
1515
interval: 60
1616

17-
data:
17+
news:
1818
repo: "JetBrains/kotlinconf-app"
19-
branch: "backend-video-urls"
20-
newsFolder: "data/news"
21-
videosFolder: "data/videos"
19+
branch: "e5l/news"
20+
folder: "news"
2221

2322
database:
2423
host: "$DB0_HOST:"

data/videos/urls.csv

Lines changed: 0 additions & 76 deletions
This file was deleted.
File renamed without changes.

0 commit comments

Comments
 (0)