From e5d59f4ca7307121f2e77f146d3e42e4666fe911 Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Thu, 24 Oct 2019 11:31:11 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95,=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- .../java/be/zvz/kotlininside/value/ApiUrl.java | 2 +- .../kotlininside/api/article/ArticleDelete.kt | 5 ++++- .../kotlininside/api/article/ArticleList.kt | 4 ---- .../kotlininside/api/article/ArticleVote.kt | 18 ++++++++---------- .../kotlininside/api/article/ArticleWrite.kt | 4 +++- .../be/zvz/kotlininside/utils/StringUtil.kt | 6 +++--- .../be/zvz/kotlininside/KotlinInsideTest.kt | 13 ++++++++++++- 8 files changed, 33 insertions(+), 23 deletions(-) diff --git a/build.gradle b/build.gradle index 383acb36..ec5f65ad 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.jfrog.bintray' def libName = 'KotlinInside' -def libVersion = '1.0.0' +def libVersion = '1.0.1' def libDesc = 'Unofficial DCInside API written in Kotlin' group = 'be.zvz' @@ -92,4 +92,4 @@ bintray { } } } -*/ \ No newline at end of file +*/ diff --git a/src/main/java/be/zvz/kotlininside/value/ApiUrl.java b/src/main/java/be/zvz/kotlininside/value/ApiUrl.java index f633fbe2..e92f659a 100644 --- a/src/main/java/be/zvz/kotlininside/value/ApiUrl.java +++ b/src/main/java/be/zvz/kotlininside/value/ApiUrl.java @@ -9,7 +9,7 @@ public final class ApiUrl { public static final class Article { public static final String LIST = APP_API + "gall_list_new.php"; public static final String READ = APP_API + "gall_view_new.php"; - public static final String WRITE = "http://upload.dcinside.com/_app_write_api.php"; + public static final String WRITE = "https://upload.dcinside.com/_app_write_api.php"; public static final String DELETE = APP_API + "gall_del.php"; public static final String UPVOTE = APP_API + "_recommend_up.php"; diff --git a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleDelete.kt b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleDelete.kt index 1b85b0fa..9eb3b498 100644 --- a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleDelete.kt +++ b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleDelete.kt @@ -37,7 +37,10 @@ class ArticleDelete( .addMultipartParameter("user_id", session.detail!!.userId) } - val json = KotlinInside.getInstance().httpInterface.upload(ApiUrl.Article.DELETE, option)!!.index(0) + var json = KotlinInside.getInstance().httpInterface.upload(ApiUrl.Article.DELETE, option)!! + + if (json.isList) + json = json.index(0) val result = json.get("result").`as`(Boolean::class.java) diff --git a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleList.kt b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleList.kt index b513a40b..1a94d0a7 100644 --- a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleList.kt +++ b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleList.kt @@ -125,10 +125,6 @@ class ArticleList @JvmOverloads constructor( relationGall.toMap() else mutableMapOf() - /*relationGall.values().forEach { - val key = it.text() - this[key] = it.get(key).text() //this: LinkedHashMap - }*/ }, headText = arrayListOf().apply { gallInfo.safeGet("head_text").let { headText -> diff --git a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleVote.kt b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleVote.kt index d63a8578..4fe10e74 100644 --- a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleVote.kt +++ b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleVote.kt @@ -38,20 +38,18 @@ class ArticleVote( option )!! - val firstResult = json.safeGet("result") - - if (!firstResult.isNull) - return VoteResult( - result = firstResult.`as`(Boolean::class.java), - cause = json.get("cause").text() - ) - - json = json.index(0) + if (json.isList) + json = json.index(0) return VoteResult( result = json.get("result").`as`(Boolean::class.java), cause = json.get("cause").text(), - member = json.get("member").`as`(Int::class.java) + member = json.safeGet("member").run { + when { + !isNull -> `as`(Int::class.java) + else -> null + } + } ) } diff --git a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleWrite.kt b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleWrite.kt index 6634c450..42660d6e 100644 --- a/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleWrite.kt +++ b/src/main/kotlin/be/zvz/kotlininside/api/article/ArticleWrite.kt @@ -61,7 +61,9 @@ class ArticleWrite @JvmOverloads constructor( option.addMultipartFile("upload[$imageCount]", content.file) imageCount++ } - is StringContent -> option.addMultipartParameter("memo_block[$index]", URLEncoder.encode(StringUtil.toHtml(content.string), "UTF-8")) + is StringContent -> { + option.addMultipartParameter("memo_block[$index]", URLEncoder.encode("
" + StringUtil.toHtml(content.string), "UTF-8") + "
") + } } } diff --git a/src/main/kotlin/be/zvz/kotlininside/utils/StringUtil.kt b/src/main/kotlin/be/zvz/kotlininside/utils/StringUtil.kt index 9ef3cb47..0cb62413 100644 --- a/src/main/kotlin/be/zvz/kotlininside/utils/StringUtil.kt +++ b/src/main/kotlin/be/zvz/kotlininside/utils/StringUtil.kt @@ -33,15 +33,15 @@ class StringUtil { '"' -> builder.append(""") '\n' -> builder.append("
") '\t' -> builder.append("     ") - else -> if (c.toInt() < 128) { + else -> builder.append(c) /*if (c.toInt() < 128) { builder.append(c) } else { builder.append("&#").append(c.toInt()).append(";") - } + }*/ } } return builder.toString() } } -} \ No newline at end of file +} diff --git a/src/test/kotlin/be/zvz/kotlininside/KotlinInsideTest.kt b/src/test/kotlin/be/zvz/kotlininside/KotlinInsideTest.kt index e7885f2e..8e9632a5 100644 --- a/src/test/kotlin/be/zvz/kotlininside/KotlinInsideTest.kt +++ b/src/test/kotlin/be/zvz/kotlininside/KotlinInsideTest.kt @@ -6,14 +6,17 @@ package be.zvz.kotlininside import be.zvz.kotlininside.api.article.* import be.zvz.kotlininside.api.type.Article import be.zvz.kotlininside.api.type.StringContent +import be.zvz.kotlininside.api.type.HeadText import be.zvz.kotlininside.http.DefaultHttpClient import be.zvz.kotlininside.session.user.Anonymous import org.junit.jupiter.api.MethodOrderer import org.junit.jupiter.api.Order import org.junit.jupiter.api.TestMethodOrder +import org.junit.jupiter.api.TestInstance import kotlin.test.Test import kotlin.test.assertNotNull +@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation::class) class KotlinInsideTest { var articleId = 0 @@ -61,11 +64,19 @@ class KotlinInsideTest { StringContent( string = "글은 곧 자동으로 삭제됩니다.\n글의 비밀번호는 1234입니다." ) - ) + ), + headText = HeadText( + identifier = 0, + name = "일반", + level = 0, + selected = false + ) ), session = KotlinInside.getInstance().session ) + Thread.sleep(5_000) + val writeResult = articleWrite.write() println(writeResult)