Add JsonCreator annotation to data class constructors.
This commit is contained in:
parent
09afb1be41
commit
e7f1d3fc1a
4 changed files with 23 additions and 4 deletions
|
@ -3,6 +3,7 @@ package org.signal.donations
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
|
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException
|
||||||
import com.fasterxml.jackson.module.kotlin.jsonMapper
|
import com.fasterxml.jackson.module.kotlin.jsonMapper
|
||||||
import com.fasterxml.jackson.module.kotlin.kotlinModule
|
import com.fasterxml.jackson.module.kotlin.kotlinModule
|
||||||
import com.fasterxml.jackson.module.kotlin.readValue
|
import com.fasterxml.jackson.module.kotlin.readValue
|
||||||
|
@ -130,7 +131,13 @@ class StripeApi(
|
||||||
fun getSetupIntent(stripeIntentAccessor: StripeIntentAccessor): StripeSetupIntent {
|
fun getSetupIntent(stripeIntentAccessor: StripeIntentAccessor): StripeSetupIntent {
|
||||||
return when (stripeIntentAccessor.objectType) {
|
return when (stripeIntentAccessor.objectType) {
|
||||||
StripeIntentAccessor.ObjectType.SETUP_INTENT -> get("setup_intents/${stripeIntentAccessor.intentId}?client_secret=${stripeIntentAccessor.intentClientSecret}").use {
|
StripeIntentAccessor.ObjectType.SETUP_INTENT -> get("setup_intents/${stripeIntentAccessor.intentId}?client_secret=${stripeIntentAccessor.intentClientSecret}").use {
|
||||||
objectMapper.readValue(it.body()!!.string())
|
try {
|
||||||
|
objectMapper.readValue(it.body()!!.string())
|
||||||
|
} catch (e: InvalidDefinitionException) {
|
||||||
|
throw StripeError.FailedToParseSetupIntentResponseError(e)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
throw StripeError.FailedToParseSetupIntentResponseError(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else -> error("Unsupported type")
|
else -> error("Unsupported type")
|
||||||
}
|
}
|
||||||
|
@ -142,7 +149,13 @@ class StripeApi(
|
||||||
fun getPaymentIntent(stripeIntentAccessor: StripeIntentAccessor): StripePaymentIntent {
|
fun getPaymentIntent(stripeIntentAccessor: StripeIntentAccessor): StripePaymentIntent {
|
||||||
return when (stripeIntentAccessor.objectType) {
|
return when (stripeIntentAccessor.objectType) {
|
||||||
StripeIntentAccessor.ObjectType.PAYMENT_INTENT -> get("payment_intents/${stripeIntentAccessor.intentId}?client_secret=${stripeIntentAccessor.intentClientSecret}").use {
|
StripeIntentAccessor.ObjectType.PAYMENT_INTENT -> get("payment_intents/${stripeIntentAccessor.intentId}?client_secret=${stripeIntentAccessor.intentClientSecret}").use {
|
||||||
objectMapper.readValue(it.body()!!.string())
|
try {
|
||||||
|
objectMapper.readValue(it.body()!!.string())
|
||||||
|
} catch (e: InvalidDefinitionException) {
|
||||||
|
throw StripeError.FailedToParsePaymentIntentResponseError(e)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
throw StripeError.FailedToParsePaymentIntentResponseError(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else -> error("Unsupported type")
|
else -> error("Unsupported type")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package org.signal.donations
|
package org.signal.donations
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException
|
||||||
|
|
||||||
sealed class StripeError(message: String) : Exception(message) {
|
sealed class StripeError(message: String) : Exception(message) {
|
||||||
|
class FailedToParsePaymentIntentResponseError(invalidDefCause: InvalidDefinitionException?) : StripeError("Failed to parse payment intent response: ${invalidDefCause?.type} ${invalidDefCause?.property} ${invalidDefCause?.beanDescription}")
|
||||||
|
class FailedToParseSetupIntentResponseError(invalidDefCause: InvalidDefinitionException?) : StripeError("Failed to parse setup intent response: ${invalidDefCause?.type} ${invalidDefCause?.property} ${invalidDefCause?.beanDescription}")
|
||||||
object FailedToParsePaymentMethodResponseError : StripeError("Failed to parse payment method response")
|
object FailedToParsePaymentMethodResponseError : StripeError("Failed to parse payment method response")
|
||||||
object FailedToCreatePaymentSourceFromCardData : StripeError("Failed to create payment source from card data")
|
object FailedToCreatePaymentSourceFromCardData : StripeError("Failed to create payment source from card data")
|
||||||
class PostError(val statusCode: Int, val errorCode: String?, val declineCode: StripeDeclineCode?) : StripeError("postForm failed with code: $statusCode. errorCode: $errorCode. declineCode: $declineCode")
|
class PostError(val statusCode: Int, val errorCode: String?, val declineCode: StripeDeclineCode?) : StripeError("postForm failed with code: $statusCode. errorCode: $errorCode. declineCode: $declineCode")
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.signal.donations.json
|
package org.signal.donations.json
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonCreator
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
* See: https://stripe.com/docs/api/payment_intents/object
|
* See: https://stripe.com/docs/api/payment_intents/object
|
||||||
*/
|
*/
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
data class StripePaymentIntent(
|
data class StripePaymentIntent @JsonCreator constructor(
|
||||||
@JsonProperty("id") val id: String,
|
@JsonProperty("id") val id: String,
|
||||||
@JsonProperty("client_secret") val clientSecret: String,
|
@JsonProperty("client_secret") val clientSecret: String,
|
||||||
@JsonProperty("status") val status: StripeIntentStatus,
|
@JsonProperty("status") val status: StripeIntentStatus,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.signal.donations.json
|
package org.signal.donations.json
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonCreator
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
* See: https://stripe.com/docs/api/setup_intents/object
|
* See: https://stripe.com/docs/api/setup_intents/object
|
||||||
*/
|
*/
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
data class StripeSetupIntent(
|
data class StripeSetupIntent @JsonCreator constructor(
|
||||||
@JsonProperty("id") val id: String,
|
@JsonProperty("id") val id: String,
|
||||||
@JsonProperty("client_secret") val clientSecret: String,
|
@JsonProperty("client_secret") val clientSecret: String,
|
||||||
@JsonProperty("status") val status: StripeIntentStatus,
|
@JsonProperty("status") val status: StripeIntentStatus,
|
||||||
|
|
Loading…
Add table
Reference in a new issue