From c0f8355d69e6560890542da3833697ab08c6471d Mon Sep 17 00:00:00 2001 From: Korna <17145209+Korna@users.noreply.github.com> Date: Mon, 7 Nov 2022 18:06:06 +0300 Subject: [PATCH] Add request and response DTO's and enums --- .../hpk/clients/hms/enums/HmsResponseCode.kt | 54 +++++++++++++++++++ .../hms_hpk/bodies/HmsHpkMessagesSendBody.kt | 12 +++++ .../requests/HmsHpkMessagesSendRequest.kt | 10 ++++ .../clients/hms_hpk/requests/HmsHpkRequest.kt | 5 ++ .../hms_hpk/responses/HmsHpkResponse.kt | 14 +++++ 5 files changed, 95 insertions(+) create mode 100644 push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms/enums/HmsResponseCode.kt create mode 100644 push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/bodies/HmsHpkMessagesSendBody.kt create mode 100644 push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkMessagesSendRequest.kt create mode 100644 push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkRequest.kt create mode 100644 push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/responses/HmsHpkResponse.kt diff --git a/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms/enums/HmsResponseCode.kt b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms/enums/HmsResponseCode.kt new file mode 100644 index 0000000..b92620e --- /dev/null +++ b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms/enums/HmsResponseCode.kt @@ -0,0 +1,54 @@ +package ru.touchin.push.message.provider.hpk.clients.hms.enums + +import ru.touchin.push.message.provider.hpk.base.enums.ValueableSerializableEnum + +internal enum class HmsResponseCode( + override val value: Int, + val description: String, +) : ValueableSerializableEnum { + + UNKNOWN(-1, "Unknown"), + INVALID_CLIENT_SECRET(1101, "Invalid client_secret"), + SUCCESS(80000000, "Success"), + SOME_TOKENS_ARE_INVALID(80100000, "Some tokens are right, the others are illegal"), + PARAMETERS_ARE_INVALID(80100001, "Parameters check error"), + PUSH_TOKEN_NOT_SPECIFIED(80100002, "Token number should be one when send sys message"), + INCORRECT_MESSAGE_STRUCTURE(80100003, "Incorrect message structure"), + TTL_IS_INVALID(80100004, "TTL is less than current time, please check"), + COLLAPSE_KEY_IS_INVALID(80100013, "Collapse_key is illegal, please check"), + MESSAGE_DATA_IS_VULNERABLE(80100016, "Message contains sensitive information, please check"), + TOPIC_AMOUNT_EXCEEDED(80100017, "A maximum of 100 topic-based messages can be sent at the same time"), + INVALID_MESSAGE_BODY(80100018, "Invalid message body"), + OAUTH_AUTHENTICATION_ERROR(80200001, "Oauth authentication error"), + OAUTH_TOKEN_EXPIRED(80200003, "Oauth Token expired"), + PERMISSION_DENIED(80300002, "There is no permission to send a message to a specified device"), + INVALID_TOKEN(80300007, "The specified token is invalid"), + MESSAGE_SIZE_EXCEEDED(80300008, "The message body size exceeds the default value set by the system (4K)"), + TOKEN_AMOUNT_EXCEEDED(80300010, "Tokens exceed the default value"), + MESSAGE_PERMISSION_DENIED(80300011, "No permission to send high-level notification messages"), + OAUTH_SERVER_ERROR(80600003, "Request OAuth service failed"), + INTERNAL_SERVER_ERROR(81000001, "System inner error"), + GROUP_ERROR(82000001, "GroupKey or groupName error"), + GROUP_MISMATCH(82000002, "GroupKey and groupName do not match"), + INVALID_TOKEN_ARRAY(82000003, "Token array is null"), + GROUP_NOT_EXIST(82000004, "Group do not exist"), + GROUP_APP_MISMATCH(82000005, "Group do not belong to this app"), + INVALID_TOKEN_ARRAY_OR_GROUP(82000006, "Token array or group number is transfinited"), + INVALID_TOPIC(82000007, "Invalid topic"), + TOKEN_AMOUNT_IS_NULL_OR_EXCEEDED(82000008, "Token array null or transfinited"), + TOO_MANY_TOPICS(82000009, "Topic amount exceeded: at most 2000"), + SOME_TOKENS_ARE_INCORRECT(82000010, "Some tokens are incorrect"), + TOKEN_IS_NULL(82000011, "Token is null"), + DATA_LOCATION_NOT_SPECIFIED(82000012, "Data storage location is not selected"), + DATA_LOCATION_MISMATCH(82000013, "Data storage location does not match the actual data"); + + companion object { + + fun fromCode(code: String): HmsResponseCode { + return values().find { it.value.toString() == code } + ?: UNKNOWN + } + + } + +} diff --git a/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/bodies/HmsHpkMessagesSendBody.kt b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/bodies/HmsHpkMessagesSendBody.kt new file mode 100644 index 0000000..79910f9 --- /dev/null +++ b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/bodies/HmsHpkMessagesSendBody.kt @@ -0,0 +1,12 @@ +package ru.touchin.push.message.provider.hpk.clients.hms_hpk.bodies + +import com.fasterxml.jackson.annotation.JsonProperty +import ru.touchin.push.message.provider.hpk.clients.hms_hpk.dto.Message + +internal class HmsHpkMessagesSendBody( + /** Send "dry" message without notification delivery */ + val validateOnly: Boolean, + /** Message structure, which must contain the valid message payload and valid sending object. */ + @JsonProperty("message") + val message: Message, +) diff --git a/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkMessagesSendRequest.kt b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkMessagesSendRequest.kt new file mode 100644 index 0000000..4499ff8 --- /dev/null +++ b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkMessagesSendRequest.kt @@ -0,0 +1,10 @@ +package ru.touchin.push.message.provider.hpk.clients.hms_hpk.requests + +import ru.touchin.push.message.provider.hpk.clients.hms_hpk.bodies.HmsHpkMessagesSendBody + +internal class HmsHpkMessagesSendRequest( + val hmsHpkMessagesSendBody: HmsHpkMessagesSendBody, + accessToken: String, +) : HmsHpkRequest( + accessToken = accessToken, +) diff --git a/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkRequest.kt b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkRequest.kt new file mode 100644 index 0000000..90d5ed7 --- /dev/null +++ b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/requests/HmsHpkRequest.kt @@ -0,0 +1,5 @@ +package ru.touchin.push.message.provider.hpk.clients.hms_hpk.requests + +internal open class HmsHpkRequest( + val accessToken: String, +) diff --git a/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/responses/HmsHpkResponse.kt b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/responses/HmsHpkResponse.kt new file mode 100644 index 0000000..b2903a4 --- /dev/null +++ b/push-message-provider-hpk/src/main/kotlin/ru/touchin/push/message/provider/hpk/clients/hms_hpk/responses/HmsHpkResponse.kt @@ -0,0 +1,14 @@ +package ru.touchin.push.message.provider.hpk.clients.hms_hpk.responses + +import com.fasterxml.jackson.databind.PropertyNamingStrategies +import com.fasterxml.jackson.databind.annotation.JsonNaming + +@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class) +internal class HmsHpkResponse( + /** Result code. */ + val code: String, + /** Result code description. */ + val msg: String, + /** Request ID. */ + val requestId: String, +)