move notification to component
This commit is contained in:
@@ -23,9 +23,12 @@ import fr.dcproject.component.comment.constitution.routes.installCommentConstitu
|
||||
import fr.dcproject.component.comment.generic.routes.installCommentRoutes
|
||||
import fr.dcproject.component.constitution.constitutionKoinModule
|
||||
import fr.dcproject.component.constitution.routes.installConstitutionRoutes
|
||||
import fr.dcproject.component.doc.routes.installDocRoutes
|
||||
import fr.dcproject.component.follow.followKoinModule
|
||||
import fr.dcproject.component.follow.routes.article.installFollowArticleRoutes
|
||||
import fr.dcproject.component.follow.routes.constitution.installFollowConstitutionRoutes
|
||||
import fr.dcproject.component.notification.NotificationConsumer
|
||||
import fr.dcproject.component.notification.routes.installNotificationsRoutes
|
||||
import fr.dcproject.component.opinion.opinionKoinModule
|
||||
import fr.dcproject.component.opinion.routes.installOpinionRoutes
|
||||
import fr.dcproject.component.views.viewKoinModule
|
||||
@@ -33,9 +36,6 @@ import fr.dcproject.component.vote.routes.installVoteRoutes
|
||||
import fr.dcproject.component.vote.voteKoinModule
|
||||
import fr.dcproject.component.workgroup.routes.installWorkgroupRoutes
|
||||
import fr.dcproject.component.workgroup.workgroupKoinModule
|
||||
import fr.dcproject.notification.NotificationConsumer
|
||||
import fr.dcproject.routes.definition
|
||||
import fr.dcproject.routes.notificationArticle
|
||||
import fr.dcproject.security.AccessDeniedException
|
||||
import fr.postgresjson.migration.Migrations
|
||||
import io.ktor.application.Application
|
||||
@@ -43,7 +43,6 @@ import io.ktor.application.ApplicationStopped
|
||||
import io.ktor.application.call
|
||||
import io.ktor.application.install
|
||||
import io.ktor.auth.Authentication
|
||||
import io.ktor.auth.authenticate
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.jetty.Jetty
|
||||
import io.ktor.features.AutoHeadResponse
|
||||
@@ -165,14 +164,8 @@ fun Application.module(env: Env = PROD) {
|
||||
installVoteRoutes()
|
||||
installConstitutionRoutes()
|
||||
installCommentConstitutionRoutes()
|
||||
|
||||
authenticate(optional = true) {
|
||||
definition()
|
||||
}
|
||||
|
||||
authenticate("url") {
|
||||
notificationArticle(get())
|
||||
}
|
||||
installNotificationsRoutes()
|
||||
installDocRoutes()
|
||||
}
|
||||
|
||||
install(StatusPages) {
|
||||
|
||||
@@ -8,10 +8,11 @@ import com.fasterxml.jackson.databind.module.SimpleModule
|
||||
import com.fasterxml.jackson.datatype.joda.JodaModule
|
||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||
import com.rabbitmq.client.ConnectionFactory
|
||||
import fr.dcproject.component.notification.NotificationConsumer
|
||||
import fr.dcproject.component.notification.NotificationsPush
|
||||
import fr.dcproject.component.notification.Publisher
|
||||
import fr.dcproject.messages.Mailer
|
||||
import fr.dcproject.messages.NotificationEmailSender
|
||||
import fr.dcproject.notification.NotificationConsumer
|
||||
import fr.dcproject.notification.publisher.Publisher
|
||||
import fr.postgresjson.connexion.Connection
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.migration.Migrations
|
||||
@@ -19,10 +20,8 @@ import io.ktor.client.HttpClient
|
||||
import io.ktor.client.features.websocket.WebSockets
|
||||
import io.ktor.util.KtorExperimentalAPI
|
||||
import io.lettuce.core.RedisClient
|
||||
import notification.NotificationsPush
|
||||
import org.koin.core.qualifier.named
|
||||
import org.koin.dsl.module
|
||||
import org.koin.ktor.ext.get
|
||||
|
||||
@KtorExperimentalAPI
|
||||
val KoinModule = module {
|
||||
|
||||
@@ -7,9 +7,9 @@ import fr.dcproject.component.article.ArticleRepository
|
||||
import fr.dcproject.component.article.routes.UpsertArticle.UpsertArticleRequest.Input
|
||||
import fr.dcproject.component.auth.citizen
|
||||
import fr.dcproject.component.auth.citizenOrNull
|
||||
import fr.dcproject.component.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.component.notification.Publisher
|
||||
import fr.dcproject.component.workgroup.WorkgroupRef
|
||||
import fr.dcproject.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.notification.publisher.Publisher
|
||||
import fr.dcproject.security.assert
|
||||
import io.ktor.application.ApplicationCall
|
||||
import io.ktor.application.call
|
||||
|
||||
@@ -25,6 +25,7 @@ fun jwtInstallation(userRepo: UserRepository): Authentication.Configuration.() -
|
||||
}
|
||||
}
|
||||
|
||||
/* Token in URL */
|
||||
jwt("url") {
|
||||
verifier(JwtConfig.verifier)
|
||||
realm = "dc-project.fr"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package fr.dcproject.routes
|
||||
package fr.dcproject.component.doc.routes
|
||||
|
||||
import fr.dcproject.utils.readResource
|
||||
import io.ktor.application.call
|
||||
16
src/main/kotlin/component/doc/routes/install.kt
Normal file
16
src/main/kotlin/component/doc/routes/install.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package fr.dcproject.component.doc.routes
|
||||
|
||||
import io.ktor.auth.authenticate
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.routing.Routing
|
||||
import io.ktor.util.KtorExperimentalAPI
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
|
||||
@KtorExperimentalAPI
|
||||
@ExperimentalCoroutinesApi
|
||||
@KtorExperimentalLocationsAPI
|
||||
fun Routing.installDocRoutes() {
|
||||
authenticate(optional = true) {
|
||||
definition()
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package fr.dcproject.notification
|
||||
package fr.dcproject.component.notification
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies
|
||||
@@ -1,4 +1,4 @@
|
||||
package fr.dcproject.notification
|
||||
package fr.dcproject.component.notification
|
||||
|
||||
import com.rabbitmq.client.AMQP.BasicProperties
|
||||
import com.rabbitmq.client.BuiltinExchangeType.DIRECT
|
||||
@@ -12,7 +12,6 @@ import fr.dcproject.component.follow.FollowArticleRepository
|
||||
import fr.dcproject.component.follow.FollowConstitutionRepository
|
||||
import fr.dcproject.component.follow.FollowSimple
|
||||
import fr.dcproject.messages.NotificationEmailSender
|
||||
import fr.dcproject.notification.publisher.Publisher
|
||||
import io.ktor.utils.io.errors.IOException
|
||||
import io.lettuce.core.RedisClient
|
||||
import io.lettuce.core.api.async.RedisAsyncCommands
|
||||
@@ -1,9 +1,8 @@
|
||||
package notification
|
||||
package fr.dcproject.component.notification
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException
|
||||
import fr.dcproject.component.auth.citizen
|
||||
import fr.dcproject.component.citizen.CitizenI
|
||||
import fr.dcproject.notification.Notification
|
||||
import io.ktor.http.cio.websocket.Frame
|
||||
import io.ktor.http.cio.websocket.Frame.Text
|
||||
import io.ktor.http.cio.websocket.readText
|
||||
@@ -1,7 +1,6 @@
|
||||
package fr.dcproject.notification.publisher
|
||||
package fr.dcproject.component.notification
|
||||
|
||||
import com.rabbitmq.client.ConnectionFactory
|
||||
import fr.dcproject.notification.EntityNotification
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
@@ -1,10 +1,10 @@
|
||||
package fr.dcproject.routes
|
||||
package fr.dcproject.component.notification.routes
|
||||
|
||||
import fr.dcproject.component.notification.NotificationsPush
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.websocket.webSocket
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import notification.NotificationsPush
|
||||
|
||||
/**
|
||||
* Consume Websocket, then remove notification in redis.
|
||||
15
src/main/kotlin/component/notification/routes/install.kt
Normal file
15
src/main/kotlin/component/notification/routes/install.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package fr.dcproject.component.notification.routes
|
||||
|
||||
import io.ktor.auth.authenticate
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.routing.Routing
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import org.koin.ktor.ext.get
|
||||
|
||||
@ExperimentalCoroutinesApi
|
||||
@KtorExperimentalLocationsAPI
|
||||
fun Routing.installNotificationsRoutes() {
|
||||
authenticate("url") {
|
||||
notificationArticle(get())
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,10 @@ import fr.dcproject.component.article.ArticleRef
|
||||
import fr.dcproject.component.citizen.CitizenRef
|
||||
import fr.dcproject.component.follow.FollowArticleRepository
|
||||
import fr.dcproject.component.follow.FollowSimple
|
||||
import fr.dcproject.component.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.component.notification.NotificationConsumer
|
||||
import fr.dcproject.component.notification.Publisher
|
||||
import fr.dcproject.messages.NotificationEmailSender
|
||||
import fr.dcproject.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.notification.NotificationConsumer
|
||||
import fr.dcproject.notification.publisher.Publisher
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.util.KtorExperimentalAPI
|
||||
import io.lettuce.core.RedisClient
|
||||
|
||||
@@ -4,8 +4,9 @@ import com.rabbitmq.client.ConnectionFactory
|
||||
import fr.dcproject.application.Configuration
|
||||
import fr.dcproject.component.article.ArticleForView
|
||||
import fr.dcproject.component.citizen.CitizenRef
|
||||
import fr.dcproject.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.notification.Notification
|
||||
import fr.dcproject.component.notification.ArticleUpdateNotification
|
||||
import fr.dcproject.component.notification.Notification
|
||||
import fr.dcproject.component.notification.NotificationsPush
|
||||
import io.lettuce.core.RedisClient
|
||||
import io.mockk.every
|
||||
import io.mockk.spyk
|
||||
@@ -14,7 +15,6 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.asSharedFlow
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import notification.NotificationsPush
|
||||
import org.amshove.kluent.`should be equal to`
|
||||
import org.junit.jupiter.api.BeforeAll
|
||||
import org.junit.jupiter.api.Tag
|
||||
|
||||
Reference in New Issue
Block a user