Skip to content

Commit c9d620c

Browse files
Merge pull request #7 from nurigo/impr/get-message-list
Release Nurigo Java SDK 4.2.5:
2 parents c925ebd + e89ced4 commit c9d620c

File tree

10 files changed

+315
-56
lines changed

10 files changed

+315
-56
lines changed

build.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ plugins {
1313
}
1414

1515
group = "net.nurigo"
16-
version = "4.2.4"
16+
version = "4.2.5"
1717

1818
repositories {
1919
mavenCentral()
@@ -22,15 +22,15 @@ repositories {
2222
dependencies {
2323
implementation(kotlin("stdlib-jdk8"))
2424
implementation(kotlin("reflect"))
25-
implementation("org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.3")
25+
implementation("org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.4.0")
2626
implementation("commons-codec:commons-codec:1.15")
27-
implementation("com.squareup.okhttp3:okhttp:4.9.3")
28-
implementation("com.squareup.okhttp3:logging-interceptor:4.9.3")
27+
implementation("com.squareup.okhttp3:okhttp:4.10.0")
28+
implementation("com.squareup.okhttp3:logging-interceptor:4.10.0")
2929
implementation("com.squareup.retrofit2:retrofit:2.9.0")
30-
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3")
30+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
3131
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0")
3232

33-
dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.6.21")
33+
dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.7.20")
3434
}
3535

3636
java {

src/main/java/net/nurigo/sdk/message/extension/DataClassMapperExtension.kt

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.nurigo.sdk.message.lib
2+
3+
import kotlinx.serialization.json.*
4+
5+
class MapHelper {
6+
7+
companion object {
8+
inline fun <reified T> toMap(obj: T): Map<String, Any?> {
9+
return jsonObjectToMap(Json.encodeToJsonElement(obj).jsonObject)
10+
}
11+
12+
fun jsonObjectToMap(element: JsonObject): Map<String, Any?> {
13+
return element.entries.associate {
14+
it.key to extractValue(it.value)
15+
}
16+
}
17+
18+
private fun extractValue(element: JsonElement): Any? {
19+
return when (element) {
20+
is JsonNull -> null
21+
is JsonPrimitive -> element.content
22+
is JsonArray -> element.map { extractValue(it) }
23+
is JsonObject -> jsonObjectToMap(element)
24+
}
25+
}
26+
}
27+
}

src/main/java/net/nurigo/sdk/message/model/Message.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ data class Message(
4343
var imageId: String? = null,
4444

4545
/**
46-
* * 발송 접수일자
46+
* * 발송 접수일자
4747
*/
4848
var dateProcessed: Instant? = null,
4949

@@ -76,6 +76,7 @@ data class Message(
7676
/**
7777
* 문자 상태
7878
* 예) 대기, 접수, 발송완료 등
79+
* 해당 프로퍼티는 MessageStatusType과 다른 값입니다!
7980
*/
8081
var status: String? = null,
8182

@@ -118,7 +119,13 @@ data class Message(
118119
* 발신번호, 반드시 계정 내 등록하신 발신번호를 입력하셔야 합니다.
119120
* 예) 029302266
120121
*/
121-
var from: String? = null
122+
var from: String? = null,
123+
124+
/**
125+
* 사용자(누리고 서비스 이용자)를 위한 발송 요청 시 커스텀 값을 넣을 수 있는 필드
126+
* 메시지 조회 시에도 표시됩니다!
127+
*/
128+
var customFields: Map<String, String>? = null
122129
) {
123130

124131
override fun equals(other: Any?): Boolean {
@@ -148,6 +155,7 @@ data class Message(
148155
if (dateUpdated != other.dateUpdated) return false
149156
if (from != other.from) return false
150157
if (to != other.to) return false
158+
if (customFields != other.customFields) return false
151159

152160
return true
153161
}
@@ -174,6 +182,7 @@ data class Message(
174182
result = 31 * result + (dateUpdated?.hashCode() ?: 0)
175183
result = 31 * result + (from?.hashCode() ?: 0)
176184
result = 31 * result + (to?.hashCode() ?: 0)
185+
result = 31 * result + (customFields?.hashCode() ?: 0)
177186
return result
178187
}
179188
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.nurigo.sdk.message.model
2+
3+
/**
4+
* 메시지 조회를 위한 Custom Message Status.
5+
* 실제 메시지 발송 API 규격에 따르지 않아 주의가 필요합니다.
6+
* Message 모델의 status와는 다른 값입니다!
7+
*/
8+
enum class MessageStatusType {
9+
/**
10+
* 대기 상태, 상태코드 2000
11+
*/
12+
PENDING,
13+
14+
/**
15+
* 발송 중 상태, 상태코드 3000
16+
*/
17+
SENDING,
18+
19+
/**
20+
* 발송 완료 상태, 상태코드 4000
21+
*/
22+
COMPLETE,
23+
24+
/**
25+
* 발송 실패(접수 실패 포함) 상태, 상태코드가 2000, 3000, 4000번이 아닌 모든 상태코드
26+
*/
27+
FAILED
28+
}

src/main/java/net/nurigo/sdk/message/request/DefaultAgent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import kotlinx.serialization.Serializable
44

55
@Serializable
66
data class DefaultAgent(
7-
val sdkVersion: String = "java/4.2.4",
7+
val sdkVersion: String = "java/4.2.5",
88
val osPlatform: String = "${System.getProperty("os.name")} | ${System.getProperty("java.version")}"
99
)
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package net.nurigo.sdk.message.request
2+
3+
import kotlinx.datetime.Instant
4+
import kotlinx.serialization.Serializable
5+
import net.nurigo.sdk.message.model.CommonMessageProperty
6+
7+
@Serializable
8+
data class MessageListBaseRequest(
9+
override var to: String? = null,
10+
override var from: String? = null,
11+
var startKey: String? = null,
12+
var limit: Int? = null,
13+
var startDate: Instant? = null,
14+
var endDate: Instant? = null,
15+
var messageId: String? = null,
16+
var groupId: String? = null,
17+
var type: String? = null,
18+
var statusCode: String? = null,
19+
var criteria: String? = null,
20+
var cond: String? = null,
21+
var value: String? = null
22+
) : CommonMessageProperty {
23+
24+
override fun equals(other: Any?): Boolean {
25+
if (this === other) return true
26+
if (javaClass != other?.javaClass) return false
27+
28+
other as MessageListBaseRequest
29+
30+
if (to != other.to) return false
31+
if (from != other.from) return false
32+
if (startKey != other.startKey) return false
33+
if (limit != other.limit) return false
34+
if (startDate != other.startDate) return false
35+
if (endDate != other.endDate) return false
36+
if (messageId != other.messageId) return false
37+
if (groupId != other.groupId) return false
38+
if (type != other.type) return false
39+
if (statusCode != other.statusCode) return false
40+
41+
return true
42+
}
43+
44+
override fun hashCode(): Int {
45+
var result = to?.hashCode() ?: 0
46+
result = 31 * result + (from?.hashCode() ?: 0)
47+
result = 31 * result + (startKey?.hashCode() ?: 0)
48+
result = 31 * result + (limit ?: 0)
49+
result = 31 * result + (startDate?.hashCode() ?: 0)
50+
result = 31 * result + (endDate?.hashCode() ?: 0)
51+
result = 31 * result + (messageId?.hashCode() ?: 0)
52+
result = 31 * result + (groupId?.hashCode() ?: 0)
53+
result = 31 * result + (type?.hashCode() ?: 0)
54+
result = 31 * result + (statusCode?.hashCode() ?: 0)
55+
return result
56+
}
57+
}

src/main/java/net/nurigo/sdk/message/request/MessageListRequest.kt

Lines changed: 54 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,70 @@ package net.nurigo.sdk.message.request
33
import kotlinx.datetime.Instant
44
import kotlinx.serialization.Serializable
55
import net.nurigo.sdk.message.model.CommonMessageProperty
6+
import net.nurigo.sdk.message.model.MessageStatusType
67

78
@Serializable
89
data class MessageListRequest(
10+
/**
11+
* 수신번호
12+
*/
913
override var to: String? = null,
14+
15+
/**
16+
* 발신번호
17+
*/
1018
override var from: String? = null,
19+
20+
/**
21+
* Pagination을 위한 key
22+
* 조회 후 다음 페이지로 넘어가려면 조회 당시 마지막의 messageId를 입력해주셔야 합니다.
23+
*/
1124
var startKey: String? = null,
25+
26+
/**
27+
* 조회할 건 수
28+
*/
1229
var limit: Int? = null,
13-
var dateType: String? = null,
14-
var startDate: Instant? = null,
15-
var endDate: Instant? = null,
30+
31+
/**
32+
* 메시지 ID
33+
*/
1634
var messageId: String? = null,
35+
36+
/**
37+
* 메시지 ID 목록
38+
*/
1739
var messageIds: List<String>? = null,
40+
41+
/**
42+
* 메시지 그룹 ID
43+
*/
1844
var groupId: String? = null,
45+
46+
/**
47+
* 메시지 유형 (예) ATA, SMS 등)
48+
*/
1949
var type: String? = null,
50+
51+
/**
52+
* 상태코드 (예) -> 2000: 발송 대기, 3000: 발송 중, 4000: 발송완료)
53+
*/
2054
var statusCode: String? = null,
21-
var dateCreated: Instant? = null,
22-
var dateUpdated: Instant? = null
55+
56+
/**
57+
* 조회 할 시작 날짜
58+
*/
59+
var startDate: Instant? = null,
60+
61+
/**
62+
* 조회 할 종료 날짜
63+
*/
64+
var endDate: Instant? = null,
65+
66+
/**
67+
* 발송 상태
68+
*/
69+
var status: MessageStatusType? = null
2370
) : CommonMessageProperty {
2471

2572
override fun equals(other: Any?): Boolean {
@@ -32,16 +79,14 @@ data class MessageListRequest(
3279
if (from != other.from) return false
3380
if (startKey != other.startKey) return false
3481
if (limit != other.limit) return false
35-
if (dateType != other.dateType) return false
3682
if (startDate != other.startDate) return false
3783
if (endDate != other.endDate) return false
3884
if (messageId != other.messageId) return false
3985
if (messageIds != other.messageIds) return false
4086
if (groupId != other.groupId) return false
4187
if (type != other.type) return false
4288
if (statusCode != other.statusCode) return false
43-
if (dateCreated != other.dateCreated) return false
44-
if (dateUpdated != other.dateUpdated) return false
89+
if (status != other.status) return false
4590

4691
return true
4792
}
@@ -51,16 +96,14 @@ data class MessageListRequest(
5196
result = 31 * result + (from?.hashCode() ?: 0)
5297
result = 31 * result + (startKey?.hashCode() ?: 0)
5398
result = 31 * result + (limit ?: 0)
54-
result = 31 * result + (dateType?.hashCode() ?: 0)
5599
result = 31 * result + (startDate?.hashCode() ?: 0)
56100
result = 31 * result + (endDate?.hashCode() ?: 0)
57101
result = 31 * result + (messageId?.hashCode() ?: 0)
58102
result = 31 * result + (messageIds?.hashCode() ?: 0)
59103
result = 31 * result + (groupId?.hashCode() ?: 0)
60104
result = 31 * result + (type?.hashCode() ?: 0)
61105
result = 31 * result + (statusCode?.hashCode() ?: 0)
62-
result = 31 * result + (dateCreated?.hashCode() ?: 0)
63-
result = 31 * result + (dateUpdated?.hashCode() ?: 0)
106+
result = 31 * result + (status?.hashCode() ?: 0)
64107
return result
65108
}
66109
}

0 commit comments

Comments
 (0)