diff --git a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/clients/FcmClient.kt b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/clients/FcmClient.kt index ec51bbe..126df6b 100644 --- a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/clients/FcmClient.kt +++ b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/clients/FcmClient.kt @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component import ru.touchin.push.message.provider.dto.request.PushTokenCheck import ru.touchin.push.message.provider.dto.request.PushTokenMessage import ru.touchin.push.message.provider.dto.result.SendPushResult -import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult +import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageTraceableResult import ru.touchin.push.message.provider.enums.PushTokenStatus import ru.touchin.push.message.provider.exceptions.InvalidPushTokenException import ru.touchin.push.message.provider.exceptions.PushMessageProviderException @@ -32,7 +32,7 @@ class FcmClient( fun check(request: PushTokenCheck): PushTokenStatus { val validationRequest = PushTokenMessage( token = request.pushToken, - notification = null, + pushMessageNotification = null, data = emptyMap() ) @@ -54,7 +54,7 @@ class FcmClient( return try { val messageId = firebaseMessaging.send(message, dryRun) - SendPushTokenMessageResult(messageId) + SendPushTokenMessageTraceableResult(messageId) } catch (e: FirebaseMessagingException) { throw firebaseMessagingExceptionConverter(e) } diff --git a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverter.kt b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverter.kt deleted file mode 100644 index cfd40bc..0000000 --- a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverter.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ru.touchin.push.message.provider.fcm.converters - -import com.google.firebase.messaging.Notification as FcmNotification -import org.springframework.stereotype.Component -import ru.touchin.push.message.provider.dto.Notification - -@Component -class NotificationConverter { - - operator fun invoke(notification: Notification): FcmNotification { - return FcmNotification.builder() - .setTitle(notification.title) - .setBody(notification.description) - .setImage(notification.imageUrl) - .build() - } - -} diff --git a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverter.kt b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverter.kt new file mode 100644 index 0000000..6e53c31 --- /dev/null +++ b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverter.kt @@ -0,0 +1,18 @@ +package ru.touchin.push.message.provider.fcm.converters + +import com.google.firebase.messaging.Notification as FcmNotification +import org.springframework.stereotype.Component +import ru.touchin.push.message.provider.dto.PushMessageNotification + +@Component +class PushMessageNotificationConverter { + + operator fun invoke(pushMessageNotification: PushMessageNotification): FcmNotification { + return FcmNotification.builder() + .setTitle(pushMessageNotification.title) + .setBody(pushMessageNotification.description) + .setImage(pushMessageNotification.imageUrl) + .build() + } + +} diff --git a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverter.kt b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverter.kt index 43fc415..16f0847 100644 --- a/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverter.kt +++ b/push-message-provider-fcm/src/main/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverter.kt @@ -6,12 +6,12 @@ import com.google.firebase.messaging.ApnsConfig import com.google.firebase.messaging.Aps import com.google.firebase.messaging.Message import org.springframework.stereotype.Component -import ru.touchin.push.message.provider.dto.Notification +import ru.touchin.push.message.provider.dto.PushMessageNotification import ru.touchin.push.message.provider.dto.request.PushTokenMessage @Component class PushTokenMessageConverter( - private val notificationConverter: NotificationConverter + private val pushMessageNotificationConverter: PushMessageNotificationConverter ) { private companion object { @@ -26,14 +26,14 @@ class PushTokenMessageConverter( .setToken(request.token) .setupApns() .setupAndroid() - .setIfExists(request.notification) + .setIfExists(request.pushMessageNotification) .putAllData(request.data) .build() } - private fun Message.Builder.setIfExists(notification: Notification?): Message.Builder { - return if (notification != null) { - setNotification(notificationConverter(notification)) + private fun Message.Builder.setIfExists(pushMessageNotification: PushMessageNotification?): Message.Builder { + return if (pushMessageNotification != null) { + setNotification(pushMessageNotificationConverter(pushMessageNotification)) } else { this } diff --git a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverterTest.kt b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverterTest.kt similarity index 69% rename from push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverterTest.kt rename to push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverterTest.kt index a15c159..6ecb019 100644 --- a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/NotificationConverterTest.kt +++ b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushMessageNotificationConverterTest.kt @@ -5,15 +5,15 @@ import org.junit.Assert import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest -import ru.touchin.push.message.provider.dto.Notification +import ru.touchin.push.message.provider.dto.PushMessageNotification import com.google.firebase.messaging.Notification as FcmNotification import org.junit.jupiter.api.DisplayName @SpringBootTest -class NotificationConverterTest { +class PushMessageNotificationConverterTest { @Autowired - lateinit var notificationConverter: NotificationConverter + lateinit var pushMessageNotificationConverter: PushMessageNotificationConverter @Autowired lateinit var objectMapper: ObjectMapper @@ -21,19 +21,19 @@ class NotificationConverterTest { @Test @DisplayName("Конвертация уведомления происходит корректно") fun invoke_basic() { - val notification = Notification( + val pushMessageNotification = PushMessageNotification( title = "title", description = "description", imageUrl = "imageUrl" ) - val realResult = notificationConverter(notification) + val realResult = pushMessageNotificationConverter(pushMessageNotification) val realResultJson = objectMapper.writeValueAsString(realResult) val expectedResult = FcmNotification.builder() - .setTitle(notification.title) - .setBody(notification.description) - .setImage(notification.imageUrl) + .setTitle(pushMessageNotification.title) + .setBody(pushMessageNotification.description) + .setImage(pushMessageNotification.imageUrl) .build() val expectedResultJson = objectMapper.writeValueAsString(expectedResult) diff --git a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverterTest.kt b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverterTest.kt index bcd0954..0ed8888 100644 --- a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverterTest.kt +++ b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/converters/PushTokenMessageConverterTest.kt @@ -11,7 +11,7 @@ import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest -import ru.touchin.push.message.provider.dto.Notification +import ru.touchin.push.message.provider.dto.PushMessageNotification import ru.touchin.push.message.provider.dto.request.PushTokenMessage @SpringBootTest @@ -21,7 +21,7 @@ class PushTokenMessageConverterTest { lateinit var pushTokenMessageConverter: PushTokenMessageConverter @Autowired - lateinit var notificationConverter: NotificationConverter + lateinit var pushMessageNotificationConverter: PushMessageNotificationConverter @Autowired lateinit var objectMapper: ObjectMapper @@ -29,14 +29,14 @@ class PushTokenMessageConverterTest { @Test @DisplayName("Конвертация сообщения с уведомлением происходит корректно") fun invoke_withNotification() { - val notification = Notification( + val pushMessageNotification = PushMessageNotification( title = "title", description = "description", imageUrl = "imageUrl" ) val pushTokenMessage = PushTokenMessage( token = "token", - notification = notification, + pushMessageNotification = pushMessageNotification, data = mapOf("testKey" to "testvalue") ) @@ -45,7 +45,7 @@ class PushTokenMessageConverterTest { val expectedResult = Message.builder() .setToken(pushTokenMessage.token) - .setNotification(notificationConverter(notification)) + .setNotification(pushMessageNotificationConverter(pushMessageNotification)) .putAllData(pushTokenMessage.data) .setupApns() .setupAndroid() @@ -65,7 +65,7 @@ class PushTokenMessageConverterTest { fun invoke_withoutNotification() { val pushTokenMessage = PushTokenMessage( token = "token", - notification = null, + pushMessageNotification = null, data = mapOf("testKey" to "testvalue") ) diff --git a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/services/PushMessageProviderFcmServiceTest.kt b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/services/PushMessageProviderFcmServiceTest.kt index c502fa6..32d41a9 100644 --- a/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/services/PushMessageProviderFcmServiceTest.kt +++ b/push-message-provider-fcm/src/test/kotlin/ru/touchin/push/message/provider/fcm/services/PushMessageProviderFcmServiceTest.kt @@ -10,7 +10,7 @@ import org.springframework.boot.test.mock.mockito.MockBean import ru.touchin.push.message.provider.dto.request.PushTokenCheck import ru.touchin.push.message.provider.dto.request.PushTokenMessage import ru.touchin.push.message.provider.dto.result.CheckPushTokenResult -import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult +import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageTraceableResult import ru.touchin.push.message.provider.enums.PushTokenStatus import ru.touchin.push.message.provider.fcm.clients.FcmClient import ru.touchin.push.message.provider.services.PushMessageProviderService @@ -29,11 +29,11 @@ class PushMessageProviderFcmServiceTest { fun send_basic() { val request = PushTokenMessage( token = "testToken", - notification = null, + pushMessageNotification = null, data = emptyMap() ) - val expectedResult = SendPushTokenMessageResult("testMessageId") + val expectedResult = SendPushTokenMessageTraceableResult("testMessageId") Mockito.`when`( fcmClient.sendPushTokenMessage(request) diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/Notification.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/PushMessageNotification.kt similarity index 80% rename from push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/Notification.kt rename to push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/PushMessageNotification.kt index 0b10a0a..8605533 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/Notification.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/PushMessageNotification.kt @@ -1,6 +1,6 @@ package ru.touchin.push.message.provider.dto -class Notification( +class PushMessageNotification( val title: String?, val description: String?, val imageUrl: String? diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/PushTokenMessage.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/PushTokenMessage.kt index 56b73a8..a0c3d21 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/PushTokenMessage.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/PushTokenMessage.kt @@ -1,9 +1,9 @@ package ru.touchin.push.message.provider.dto.request -import ru.touchin.push.message.provider.dto.Notification +import ru.touchin.push.message.provider.dto.PushMessageNotification class PushTokenMessage( val token: String, - override val notification: Notification?, + val pushMessageNotification: PushMessageNotification?, override val data: Map ) : SendPushRequest diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/SendPushRequest.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/SendPushRequest.kt index 0bdaf3f..2e50d82 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/SendPushRequest.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/request/SendPushRequest.kt @@ -1,10 +1,10 @@ package ru.touchin.push.message.provider.dto.request -import ru.touchin.push.message.provider.dto.Notification +import ru.touchin.push.message.provider.dto.PushMessageNotification sealed interface SendPushRequest { - val notification: Notification? + val pushMessageNotification: PushMessageNotification? val data: Map } diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/CheckPushTokenResult.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/CheckPushTokenResult.kt index e8ddd4b..a746ce0 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/CheckPushTokenResult.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/CheckPushTokenResult.kt @@ -3,5 +3,5 @@ package ru.touchin.push.message.provider.dto.result import ru.touchin.push.message.provider.enums.PushTokenStatus data class CheckPushTokenResult( - val status: PushTokenStatus + val status: PushTokenStatus, ) diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageResult.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageResult.kt index c5047fa..95f1d86 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageResult.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageResult.kt @@ -1,5 +1,3 @@ package ru.touchin.push.message.provider.dto.result -class SendPushTokenMessageResult( - val messageId: String -) : SendPushResult +object SendPushTokenMessageResult : SendPushResult diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageTraceableResult.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageTraceableResult.kt new file mode 100644 index 0000000..273962d --- /dev/null +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/dto/result/SendPushTokenMessageTraceableResult.kt @@ -0,0 +1,5 @@ +package ru.touchin.push.message.provider.dto.result + +data class SendPushTokenMessageTraceableResult( + val messageId: String +) : SendPushResult diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PlatformType.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PlatformType.kt index d88f8ea..f03a082 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PlatformType.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PlatformType.kt @@ -3,6 +3,7 @@ package ru.touchin.push.message.provider.enums enum class PlatformType { ANDROID_GOOGLE, + ANDROID_HUAWEI, IOS } diff --git a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PushMessageProviderType.kt b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PushMessageProviderType.kt index 3999187..cd8aa96 100644 --- a/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PushMessageProviderType.kt +++ b/push-message-provider/src/main/kotlin/ru/touchin/push/message/provider/enums/PushMessageProviderType.kt @@ -2,6 +2,7 @@ package ru.touchin.push.message.provider.enums enum class PushMessageProviderType { - FCM + FCM, + HPK, }