Skip to content

Commit 8645195

Browse files
committed
Refactor some code to meet the Explicit API mode requirements
1 parent 87df626 commit 8645195

File tree

9 files changed

+51
-43
lines changed

9 files changed

+51
-43
lines changed
Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,40 @@
11
package net.pearx.kpastebin
22

33
import net.pearx.kpastebin.model.ExpireDate
4+
import net.pearx.kpastebin.model.PasteDetails
45
import net.pearx.kpastebin.model.Privacy
6+
import net.pearx.kpastebin.model.UserDetails
57

6-
class PastebinAccount(private val client: PastebinClient) {
7-
var userKey: String? = null
8+
public class PastebinAccount(private val client: PastebinClient) {
9+
public var userKey: String? = null
810

911
private fun checkUserKeyAndReturn(): String {
1012
val userKey = userKey
11-
if(userKey == null)
13+
if (userKey == null)
1214
throw InvalidUserKeyException("You haven't initialized the userKey property. It can be done by setting it directly or using the 'login' function.")
1315
else
1416
return userKey
1517
}
1618

17-
suspend fun login(username: String, password: String) {
19+
public suspend fun login(username: String, password: String) {
1820
userKey = client.login(username, password)
1921
}
2022

21-
suspend fun createPaste(
23+
public suspend fun createPaste(
2224
text: String,
2325
name: String? = null,
2426
format: String? = null,
2527
privacy: Privacy? = null,
2628
expireDate: ExpireDate? = null
27-
) = client.createPaste(text, checkUserKeyAndReturn(), name, format, privacy, expireDate)
29+
): String = client.createPaste(text, checkUserKeyAndReturn(), name, format, privacy, expireDate)
2830

29-
suspend fun listPastes(resultsLimit: Int? = null) = client.listPastes(checkUserKeyAndReturn(), resultsLimit)
31+
public suspend fun listPastes(resultsLimit: Int? = null): List<PasteDetails> = client.listPastes(checkUserKeyAndReturn(), resultsLimit)
3032

31-
suspend fun deletePaste(pasteKey: String) = client.deletePaste(checkUserKeyAndReturn(), pasteKey)
33+
public suspend fun deletePaste(pasteKey: String) {
34+
client.deletePaste(checkUserKeyAndReturn(), pasteKey)
35+
}
3236

33-
suspend fun getUserDetails() = client.getUserDetails(checkUserKeyAndReturn())
37+
public suspend fun getUserDetails(): UserDetails = client.getUserDetails(checkUserKeyAndReturn())
3438

35-
suspend fun getPaste(pasteKey: String) = client.getPaste(checkUserKeyAndReturn(), pasteKey)
39+
public suspend fun getPaste(pasteKey: String): String = client.getPaste(checkUserKeyAndReturn(), pasteKey)
3640
}

src/commonMain/kotlin/net/pearx/kpastebin/PastebinClient.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import net.pearx.kpastebin.model.UserDetails
1414
import nl.adaptivity.xmlutil.serialization.XML
1515
import nl.adaptivity.xmlutil.serialization.XmlSerialName
1616

17-
class PastebinClient(private val devKey: String) {
17+
public class PastebinClient(private val devKey: String) {
1818
private val http = HttpClient {
1919
defaultRequest {
2020
contentType(ContentType.Application.FormUrlEncoded)
@@ -37,7 +37,7 @@ class PastebinClient(private val devKey: String) {
3737

3838
private suspend inline fun sendRequest(url: String, parametersBuilder: ParametersBuilder.() -> Unit) = sendRequest(url, Parameters.build(parametersBuilder))
3939

40-
suspend fun createPaste(
40+
public suspend fun createPaste(
4141
text: String,
4242
userKey: String? = null,
4343
name: String? = null,
@@ -61,14 +61,14 @@ class PastebinClient(private val devKey: String) {
6161
}
6262
}
6363

64-
suspend fun login(username: String, password: String): String {
64+
public suspend fun login(username: String, password: String): String {
6565
return sendRequest(API_URL_LOGIN) {
6666
append("api_user_name", username)
6767
append("api_user_password", password)
6868
}
6969
}
7070

71-
suspend fun listPastes(userKey: String, resultsLimit: Int? = null): List<PasteDetails> {
71+
public suspend fun listPastes(userKey: String, resultsLimit: Int? = null): List<PasteDetails> {
7272
val out = sendRequest(API_URL_POST) {
7373
append("api_user_key", userKey)
7474
append("api_option", "list")
@@ -84,7 +84,7 @@ class PastebinClient(private val devKey: String) {
8484
@SerialName("root")
8585
private data class ListPastesResponse(@XmlSerialName("paste", "", "") val data: List<PasteDetails>)
8686

87-
suspend fun deletePaste(userKey: String, pasteKey: String) {
87+
public suspend fun deletePaste(userKey: String, pasteKey: String) {
8888
val out = sendRequest(API_URL_POST) {
8989
append("api_option", "delete")
9090
append("api_user_key", userKey)
@@ -94,15 +94,15 @@ class PastebinClient(private val devKey: String) {
9494
throw PastebinException(out)
9595
}
9696

97-
suspend fun getUserDetails(userKey: String): UserDetails {
97+
public suspend fun getUserDetails(userKey: String): UserDetails {
9898
val out = sendRequest(API_URL_POST) {
9999
append("api_option", "userdetails")
100100
append("api_user_key", userKey)
101101
}
102102
return xml.parse(UserDetails.serializer(), out)
103103
}
104104

105-
suspend fun getPaste(userKey: String, pasteKey: String): String {
105+
public suspend fun getPaste(userKey: String, pasteKey: String): String {
106106
return sendRequest(API_URL_RAW) {
107107
append("api_option", "show_paste")
108108
append("api_user_key", userKey)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.pearx.kpastebin
2+
3+
import net.pearx.kpastebin.model.Privacy
4+
5+
public class InvalidUserKeyException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
6+
7+
public class FreePasteLimitException(public val privacy: Privacy, message: String, cause: Throwable? = null) : PastebinException(message, cause)
8+
public class PasteSizeException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
9+
public class EmptyPasteException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
10+
public class InvalidPasteFormatException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
11+
12+
public class InvalidLoginException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
13+
public class AccountNotActiveException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
14+
15+
public class InvalidPermissionException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
16+
17+
public class PasteNotFoundException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
18+
19+
public class PastePerDayLimitException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
20+
21+
public open class PastebinException(message: String, cause: Throwable? = null) : RuntimeException(message, cause)

src/commonMain/kotlin/net/pearx/kpastebin/PastebinException.kt renamed to src/commonMain/kotlin/net/pearx/kpastebin/internal/ExceptionHelper.kt

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package net.pearx.kpastebin
1+
package net.pearx.kpastebin.internal
22

3+
import net.pearx.kpastebin.*
34
import net.pearx.kpastebin.model.Privacy
45

56
private const val BAD_API_REQUEST = "Bad API request, "
@@ -30,22 +31,4 @@ internal fun checkPastebinResponse(response: String) {
3031
}
3132
}
3233
}
33-
}
34-
35-
class InvalidUserKeyException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
36-
37-
class FreePasteLimitException(val privacy: Privacy, message: String, cause: Throwable? = null) : PastebinException(message, cause)
38-
class PasteSizeException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
39-
class EmptyPasteException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
40-
class InvalidPasteFormatException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
41-
42-
class InvalidLoginException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
43-
class AccountNotActiveException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
44-
45-
class InvalidPermissionException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
46-
47-
class PasteNotFoundException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
48-
49-
class PastePerDayLimitException(message: String, cause: Throwable? = null) : PastebinException(message, cause)
50-
51-
open class PastebinException(message: String, cause: Throwable? = null) : RuntimeException(message, cause)
34+
}

src/commonMain/kotlin/net/pearx/kpastebin/model/AccountType.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import net.pearx.kpastebin.internal.EnumIntSerializer
55
import net.pearx.kpastebin.internal.MODEL_PACKAGE
66

77
@Serializable(with = AccountType.Ser::class)
8-
enum class AccountType
8+
public enum class AccountType
99
{
1010
NORMAL,
1111
PRO;

src/commonMain/kotlin/net/pearx/kpastebin/model/ExpireDate.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import kotlinx.serialization.*
44
import net.pearx.kpastebin.internal.MODEL_PACKAGE
55

66
@Serializable
7-
enum class ExpireDate(val code: String) {
7+
public enum class ExpireDate(internal val code: String) {
88
NEVER("N"),
99
TEN_MINUTES("10M"),
1010
ONE_HOUR("1H"),
@@ -16,7 +16,7 @@ enum class ExpireDate(val code: String) {
1616
ONE_YEAR("1Y");
1717

1818
@Serializer(forClass = ExpireDate::class)
19-
companion object Ser : KSerializer<ExpireDate> {
19+
internal companion object Ser : KSerializer<ExpireDate> {
2020
override val descriptor: SerialDescriptor = PrimitiveDescriptor("$MODEL_PACKAGE.ExpireDate", PrimitiveKind.STRING)
2121

2222
override fun deserialize(decoder: Decoder): ExpireDate {

src/commonMain/kotlin/net/pearx/kpastebin/model/PasteDetails.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import nl.adaptivity.xmlutil.serialization.XmlElement
66

77
@SerialName("paste")
88
@Serializable
9-
data class PasteDetails(
9+
public data class PasteDetails(
1010
@SerialName("paste_key")
1111
@XmlElement(true)
1212
val key: String,

src/commonMain/kotlin/net/pearx/kpastebin/model/Privacy.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import net.pearx.kpastebin.internal.EnumIntSerializer
55
import net.pearx.kpastebin.internal.MODEL_PACKAGE
66

77
@Serializable(with = Privacy.Ser::class)
8-
enum class Privacy {
8+
public enum class Privacy {
99
PUBLIC,
1010
UNLISTED,
1111
PRIVATE;

src/commonMain/kotlin/net/pearx/kpastebin/model/UserDetails.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import nl.adaptivity.xmlutil.serialization.XmlElement
66

77
@SerialName("user")
88
@Serializable
9-
data class UserDetails(
9+
public data class UserDetails(
1010
@SerialName("user_name")
1111
@XmlElement(true)
1212
val name: String,

0 commit comments

Comments
 (0)