Updated on 2026-08-14

This commit is contained in:
Tangem 2023-01-10 18:09:17 +04:00
parent e8d727212b
commit dda12556d8
9 changed files with 72 additions and 98 deletions

View file

@ -1,22 +0,0 @@
package com.tangem.datasource.api.referral
import com.tangem.datasource.api.referral.models.ReferralResponse
import com.tangem.datasource.api.referral.models.StartReferralBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
/**
* Api for referral feature
*/
interface ReferralApi {
/** Returns referral status by [walletId] */
@GET("referral/{walletId}")
suspend fun getReferralStatus(@Path("walletId") walletId: String): ReferralResponse
/** Make user referral, requires [StartReferralBody] */
@POST("referral")
suspend fun startReferral(@Body startReferralBody: StartReferralBody): ReferralResponse
}

View file

@ -1,46 +0,0 @@
package com.tangem.datasource.api.referral.models
import com.squareup.moshi.Json
/**
* Main response class for referral API
* contains all necessary info about users program status
*/
data class ReferralResponse(
@Json(name = "conditions") val conditions: Conditions,
@Json(name = "referral") val referral: Referral?,
)
data class Conditions(
@Json(name = "award") val award: Int,
@Json(name = "discount") val discount: Discount,
@Json(name = "awards") val awards: List<Award>,
@Json(name = "tosLink") val tosLink: String,
)
data class Discount(
@Json(name = "amount") val amount: Int,
@Json(name = "type") val discountType: String,
)
data class Award(
@Json(name = "amount") val amount: Int,
@Json(name = "token") val token: Token,
)
data class Token(
@Json(name = "id") val id: String,
@Json(name = "name") val name: String,
@Json(name = "symbol") val symbol: String,
@Json(name = "networkId") val networkId: String,
@Json(name = "contractAddress") val contractAddress: String?,
@Json(name = "decimalCount") val decimalCount: Int?,
)
data class Referral(
@Json(name = "shareLink") val shareLink: String,
@Json(name = "address") val address: String,
@Json(name = "promoCode") val promocode: String,
@Json(name = "walletsPurchased") val walletsPurchased: Int,
@Json(name = "termsAcceptedAt") val termsAcceptedAt: String?,
)

View file

@ -4,9 +4,12 @@ import com.tangem.datasource.api.tangemTech.models.CoinsResponse
import com.tangem.datasource.api.tangemTech.models.CurrenciesResponse
import com.tangem.datasource.api.tangemTech.models.GeoResponse
import com.tangem.datasource.api.tangemTech.models.RatesResponse
import com.tangem.datasource.api.tangemTech.models.ReferralResponse
import com.tangem.datasource.api.tangemTech.models.StartReferralBody
import com.tangem.datasource.api.tangemTech.models.UserTokensResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Path
import retrofit2.http.Query
@ -46,4 +49,12 @@ interface TangemTechApi {
@PUT("user-tokens/{user-id}")
suspend fun saveUserTokens(@Path(value = "user-id") userId: String, @Body userTokens: UserTokensResponse)
/** Returns referral status by [walletId] */
@GET("referral/{walletId}")
suspend fun getReferralStatus(@Path("walletId") walletId: String): ReferralResponse
/** Make user referral, requires [StartReferralBody] */
@POST("referral")
suspend fun startReferral(@Body startReferralBody: StartReferralBody): ReferralResponse
}

View file

@ -0,0 +1,49 @@
package com.tangem.datasource.api.tangemTech.models
import com.squareup.moshi.Json
/**
* Main response class for referral API
* contains all necessary info about users program status
*/
data class ReferralResponse(
@Json(name = "conditions") val conditions: Conditions,
@Json(name = "referral") val referral: Referral?,
) {
data class Conditions(
@Json(name = "award") val award: Int,
@Json(name = "discount") val discount: Discount,
@Json(name = "awards") val awards: List<Award>,
@Json(name = "tosLink") val tosLink: String,
) {
data class Discount(
@Json(name = "amount") val amount: Int,
@Json(name = "type") val discountType: String,
)
data class Award(
@Json(name = "amount") val amount: Int,
@Json(name = "token") val token: Token,
) {
data class Token(
@Json(name = "id") val id: String,
@Json(name = "name") val name: String,
@Json(name = "symbol") val symbol: String,
@Json(name = "networkId") val networkId: String,
@Json(name = "contractAddress") val contractAddress: String?,
@Json(name = "decimalCount") val decimalCount: Int?,
)
}
}
data class Referral(
@Json(name = "shareLink") val shareLink: String,
@Json(name = "address") val address: String,
@Json(name = "promoCode") val promocode: String,
@Json(name = "walletsPurchased") val walletsPurchased: Int,
@Json(name = "termsAcceptedAt") val termsAcceptedAt: String?,
)
}

View file

@ -1,4 +1,4 @@
package com.tangem.datasource.api.referral.models
package com.tangem.datasource.api.tangemTech.models
import com.squareup.moshi.Json

View file

@ -3,7 +3,6 @@ package com.tangem.datasource.di
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.tangem.datasource.api.common.BigDecimalAdapter
import com.tangem.datasource.api.referral.ReferralApi
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.utils.RequestHeader.AuthenticationHeader
import com.tangem.datasource.utils.RequestHeader.CacheControlHeader
@ -51,24 +50,6 @@ class NetworkModule {
.create(TangemTechApi::class.java)
}
@Provides
@Singleton
fun provideReferralApi(authProvider: AuthProvider, moshi: Moshi): ReferralApi {
return Retrofit.Builder()
.addConverterFactory(
MoshiConverterFactory.create(moshi),
)
.baseUrl(PROD_TANGEM_TECH_BASE_URL)
.client(
OkHttpClient.Builder()
.addHeaders(AuthenticationHeader(authProvider))
.allowLogging()
.build(),
)
.build()
.create(ReferralApi::class.java)
}
private companion object {
const val PROD_TANGEM_TECH_BASE_URL = "https://api.tangem-tech.com/v1/"
const val DEV_TANGEM_TECH_BASE_URL = "https://devapi.tangem-tech.com/v1/"