-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReportingNotificationConfiguration.kt
63 lines (55 loc) · 2.97 KB
/
ReportingNotificationConfiguration.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.aamdigital.aambackendservice.reporting.notification.di
import com.aamdigital.aambackendservice.crypto.core.CryptoService
import com.aamdigital.aambackendservice.reporting.notification.core.AddWebhookSubscriptionUseCase
import com.aamdigital.aambackendservice.reporting.notification.core.DefaultAddWebhookSubscriptionUseCase
import com.aamdigital.aambackendservice.reporting.notification.core.DefaultTriggerWebhookUseCase
import com.aamdigital.aambackendservice.reporting.notification.core.DefaultUriParser
import com.aamdigital.aambackendservice.reporting.notification.core.NotificationService
import com.aamdigital.aambackendservice.reporting.notification.core.NotificationStorage
import com.aamdigital.aambackendservice.reporting.notification.core.TriggerWebhookUseCase
import com.aamdigital.aambackendservice.reporting.notification.core.UriParser
import com.aamdigital.aambackendservice.reporting.notification.storage.DefaultNotificationStorage
import com.aamdigital.aambackendservice.reporting.notification.storage.WebhookRepository
import com.aamdigital.aambackendservice.reporting.reportcalculation.core.CreateReportCalculationUseCase
import com.aamdigital.aambackendservice.reporting.reportcalculation.core.ReportCalculationStorage
import com.fasterxml.jackson.databind.ObjectMapper
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.client.RestClient
@Configuration
class ReportingNotificationConfiguration {
@Bean
fun defaultAddWebhookSubscription(
notificationStorage: NotificationStorage,
reportCalculationStorage: ReportCalculationStorage,
notificationService: NotificationService,
createReportCalculationUseCase: CreateReportCalculationUseCase
): AddWebhookSubscriptionUseCase =
DefaultAddWebhookSubscriptionUseCase(
notificationStorage = notificationStorage,
reportCalculationStorage = reportCalculationStorage,
notificationService = notificationService,
createReportCalculationUseCase = createReportCalculationUseCase
)
@Bean
fun defaultUriParser(): UriParser = DefaultUriParser()
@Bean
fun defaultTriggerWebhookUseCase(
notificationStorage: NotificationStorage,
@Qualifier("webhook-web-client") restClient: RestClient,
uriParser: UriParser,
objectMapper: ObjectMapper
): TriggerWebhookUseCase = DefaultTriggerWebhookUseCase(notificationStorage, restClient, uriParser, objectMapper)
@Bean(name = ["webhook-web-client"])
fun webhookWebClient(): RestClient {
val clientBuilder =
RestClient.builder()
return clientBuilder.build()
}
@Bean
fun defaultNotificationStorage(
webhookRepository: WebhookRepository,
cryptoService: CryptoService,
): NotificationStorage = DefaultNotificationStorage(webhookRepository, cryptoService)
}