package tv.emby.embyatv.validation;
import mediabrowser.apiinteraction.Response;
import mediabrowser.model.registration.RegistrationInfo;
import tv.emby.embyatv.TvApp;
import tv.emby.embyatv.playback.SubtitleHelper;
import tv.emby.embyatv.util.Utils;
import tv.emby.iap.ErrorSeverity;
import tv.emby.iap.ErrorType;
import tv.emby.iap.IResultHandler;
import tv.emby.iap.IabValidator;
import tv.emby.iap.InAppProduct;
import tv.emby.iap.PurchaseResult;
import tv.emby.iap.ResultType;
/**
* Created by Eric on 3/3/2015.
*/
public class AppValidator {
private static final String k1 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAR9t5CAdBY+iOXd4QkZeSTttHtpQ48mLM+k2h0i54FWDLhn28CDUIDogQSZTLKBu0Qshp+i0KUjCD";
private static final String k2 = "iiyQfQjYe0pgdpC7hk2ZzuOjy8C1Pb8GEhJYUoH7Pg/3ZnEZrV8kdNtfAu/TtvKGFkrhBCVrMQVN/TTKfZrq36IHC2HEqGAOin2CYV323ZjnSJpJQkGuOISy+I";
private static final String k3 = "PvVi1EBf7+bfK3dqbv461xcSz0HtC5aJwDfvYS+fVE0X+7bLpbz93gPP07Il9ntKSCVYsmiv4PJ8uVfjVrFdaxEJowK89/+S1hD4AaDGLk90l7nfVKdXC7qpKu";
private static final String k4 = "I+ZwyT8czrx8qyCvU5MQIDAQAB";
public static String getKey() { return k1+k3+k2+k4;}
public AppValidator() {
}
public void validate() {
//Load our system info
TvApp.getApplication().loadSystemInfo();
//First we would check for feature registration as that will negate the need to check in-app purchases
TvApp.getApplication().getApiClient().GetRegistrationInfo(TvApp.FEATURE_CODE, new Response<RegistrationInfo>() {
@Override
public void onResponse(RegistrationInfo response) {
TvApp.getApplication().setRegistrationInfo(response);
if (TvApp.getApplication().isRegistered()) {
TvApp.getApplication().getLogger().Info("Application is valid via supporter registration.");
} else {
if (TvApp.getApplication().isTrial()) {
TvApp.getApplication().getLogger().Info("In supporter trial. Trial period expires "+ Utils.convertToLocalDate(response.getExpirationDate()));
}
TvApp.getApplication().premiereNag();
TvApp.getApplication().getLogger().Debug("*** package name: "+TvApp.getApplication().getPackageName());
if (!TvApp.getApplication().checkPaidCache()) checkPurchase(InAppProduct.getCurrentUnlockSku(TvApp.getApplication().getPackageName()));
}
}
@Override
public void onError(Exception exception) {
TvApp.getApplication().getLogger().ErrorException("Error retrieving registration info", exception);
if (!TvApp.getApplication().checkPaidCache()) checkPurchase(InAppProduct.getCurrentUnlockSku(TvApp.getApplication().getPackageName()));
}
});
}
private void checkPurchase(final String sku) {
final IabValidator validator = new IabValidator(TvApp.getApplication(), getKey());
validator.checkInAppPurchase(sku, new IResultHandler<ResultType>() {
@Override
public void onResult(ResultType result) {
TvApp.getApplication().getLogger().Info(sku + (result == ResultType.Success ? " is purchased." : " is NOT purchased."));
TvApp.getApplication().setPaid(result == ResultType.Success);
validator.dispose();
}
@Override
public void onError(ErrorSeverity errorSeverity, ErrorType errorType, String s) {
TvApp.getApplication().getLogger().Error("Error checking purchase " + s);
validator.dispose();
}
});
}
}