Updated on 2026-08-14

This commit is contained in:
Tangem 2018-09-20 10:58:42 +03:00
parent 31e7fa6885
commit 3416aa25e5
7 changed files with 208 additions and 177 deletions

View file

@ -11,7 +11,7 @@ public class Server {
public static class Method {
public static final String VERIFY = URL_TANGEM + "verify";
public static final String VERIFY_AND_GET_ARTWORK = URL_TANGEM + "card/verify-and-get-artwork";
public static final String VERIFY_AND_GET_INFO = URL_TANGEM + "card/verify-and-get-info";
public static final String ARTWORK = URL_TANGEM + "card/artwork";
}
}

View file

@ -5,10 +5,7 @@ import android.support.annotation.NonNull;
import android.util.Log;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.tangem.data.network.model.CardVerify;
import com.tangem.data.network.model.CardVerifyAndGetArtwork;
import com.tangem.data.network.model.CardVerifyBody;
import com.tangem.data.network.model.CardVerifyResponse;
import com.tangem.data.network.model.CardVerifyAndGetInfo;
import com.tangem.data.network.model.InfuraBody;
import com.tangem.data.network.model.InfuraResponse;
import com.tangem.data.network.model.RateInfoResponse;
@ -242,17 +239,17 @@ public class ServerApiHelper {
* HTTP
* Card verify
*/
private CardVerifyAndGetArtworkListener cardVerifyAndGetArtworkListener;
private CardVerifyAndGetInfoListener cardVerifyAndGetInfoListener;
public interface CardVerifyAndGetArtworkListener {
void onCardVerifyAndGetArtwork(CardVerifyAndGetArtwork.Response cardVerifyAndGetArtworkResponse);
public interface CardVerifyAndGetInfoListener {
void onCardVerifyAndGetInfo(CardVerifyAndGetInfo.Response cardVerifyAndGetArtworkResponse);
}
public void setCardVerifyAndGetArtworkListener(CardVerifyAndGetArtworkListener listener) {
cardVerifyAndGetArtworkListener = listener;
public void setCardVerifyAndGetInfoListener(CardVerifyAndGetInfoListener listener) {
cardVerifyAndGetInfoListener = listener;
}
public void cardVerifyAndGetArtwork(TangemCard card) {
public void cardVerifyAndGetInfo(TangemCard card) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
@ -269,26 +266,26 @@ public class ServerApiHelper {
TangemApi tangemApi = retrofit.create(TangemApi.class);
List<CardVerifyAndGetArtwork.Request.Item> requests = new ArrayList<>();
requests.add(new CardVerifyAndGetArtwork.Request.Item(Util.bytesToHex(card.getCID()), Util.bytesToHex(card.getCardPublicKey())));
List<CardVerifyAndGetInfo.Request.Item> requests = new ArrayList<>();
requests.add(new CardVerifyAndGetInfo.Request.Item(Util.bytesToHex(card.getCID()), Util.bytesToHex(card.getCardPublicKey())));
CardVerifyAndGetArtwork.Request requestBody = new CardVerifyAndGetArtwork.Request(requests);
CardVerifyAndGetInfo.Request requestBody = new CardVerifyAndGetInfo.Request(requests);
Call<CardVerifyAndGetArtwork.Response> call = tangemApi.getCardVerifyAndGetArtwork(requestBody);
call.enqueue(new Callback<CardVerifyAndGetArtwork.Response>() {
Call<CardVerifyAndGetInfo.Response> call = tangemApi.getCardVerifyAndGetInfo(requestBody);
call.enqueue(new Callback<CardVerifyAndGetInfo.Response>() {
@Override
public void onResponse(@NonNull Call<CardVerifyAndGetArtwork.Response> call, @NonNull Response<CardVerifyAndGetArtwork.Response> response) {
public void onResponse(@NonNull Call<CardVerifyAndGetInfo.Response> call, @NonNull Response<CardVerifyAndGetInfo.Response> response) {
if (response.code() == 200) {
CardVerifyAndGetArtwork.Response cardVerifyAndGetArtworkResponse = response.body();
cardVerifyAndGetArtworkListener.onCardVerifyAndGetArtwork(cardVerifyAndGetArtworkResponse);
Log.i(TAG, "cardVerifyAndGetArtwork onResponse " + response.code());
CardVerifyAndGetInfo.Response cardVerifyAndGetArtworkResponse = response.body();
cardVerifyAndGetInfoListener.onCardVerifyAndGetInfo(cardVerifyAndGetArtworkResponse);
Log.i(TAG, "cardVerifyAndGeInfo onResponse " + response.code());
} else
Log.e(TAG, "cardVerifyAndGetArtwork onResponse " + response.code());
Log.e(TAG, "cardVerifyAndGetInfo onResponse " + response.code());
}
@Override
public void onFailure(@NonNull Call<CardVerifyAndGetArtwork.Response> call, @NonNull Throwable t) {
Log.e(TAG, "cardVerifyAndGetArtwork onFailure " + t.getMessage());
public void onFailure(@NonNull Call<CardVerifyAndGetInfo.Response> call, @NonNull Throwable t) {
Log.e(TAG, "cardVerifyAndGetInfo onFailure " + t.getMessage());
}
});
}

View file

@ -1,6 +1,6 @@
package com.tangem.data.network;
import com.tangem.data.network.model.CardVerifyAndGetArtwork;
import com.tangem.data.network.model.CardVerifyAndGetInfo;
import com.tangem.data.network.model.CardVerifyBody;
import com.tangem.data.network.model.CardVerifyResponse;
@ -18,8 +18,8 @@ public interface TangemApi {
Call<CardVerifyResponse> getCardVerify(@Body CardVerifyBody body);
@Headers("Content-Type: application/json")
@POST(Server.ApiTangem.Method.VERIFY_AND_GET_ARTWORK)
Call<CardVerifyAndGetArtwork.Response> getCardVerifyAndGetArtwork(@Body CardVerifyAndGetArtwork.Request requestBody);
@POST(Server.ApiTangem.Method.VERIFY_AND_GET_INFO)
Call<CardVerifyAndGetInfo.Response> getCardVerifyAndGetInfo(@Body CardVerifyAndGetInfo.Request requestBody);
@GET(Server.ApiTangem.Method.ARTWORK)
Call<ResponseBody> getArtwork(@Query("artworkId") String artworkId, @Query("CID") String CID, @Query("publicKey") String publicKey);

View file

@ -1,56 +0,0 @@
package com.tangem.data.network.model
import android.os.Build
import java.text.SimpleDateFormat
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import java.util.*
class CardVerifyAndGetArtwork {
data class Request(
var requests: List<Item>? = null
) {
data class Item(
var CID: String = "",
var publicKey: String = ""
)
}
data class Response(
var results: List<Item>? = null
) {
data class Item(
var error: String? = null,
var CID: String = "",
var passed: Boolean = false,
var batch: String = "",
var artworkId: String = "",
var artworkHash: String = "",
var updateDate: String = ""
) {
fun getUpdateDate(): Instant? {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return try {
LocalDateTime.parse(updateDate, DateTimeFormatter.ISO_LOCAL_DATE_TIME).toInstant(ZoneOffset.UTC)
} catch (e: Exception) {
e.printStackTrace()
null
}
} else {
return try {
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US).parse(updateDate).toInstant()
} catch (e: Exception) {
e.printStackTrace()
null
}
}
}
}
}
}

View file

@ -0,0 +1,64 @@
package com.tangem.data.network.model
import android.os.Build
import java.text.SimpleDateFormat
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import java.util.*
class CardVerifyAndGetInfo {
data class Request(
var requests: List<Item>? = null
) {
data class Item(
var CID: String = "",
var publicKey: String = ""
)
}
data class Response(
var results: List<Item>? = null
) {
data class Item(
var error: String? = null,
var CID: String = "",
var passed: Boolean = false,
var batch: String = "",
var artwork: ArtworkInfo? = null,
var substitution: SubstitutionInfo? = null
) {
data class ArtworkInfo(
var id: String = "",
var hash: String = "",
var date: String = ""
) {
fun getUpdateDate(): Instant? {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return LocalDateTime.parse(date, DateTimeFormatter.ISO_LOCAL_DATE_TIME).toInstant(ZoneOffset.UTC)
} else {
return SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US).parse(date).toInstant()
}
} catch (e: Exception) {
e.printStackTrace()
return null
}
}
}
data class SubstitutionInfo(
var data: String? = null,
var signature: String? = null
)
}
}
}