package co.smartreceipts.android.purchases.model;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.google.common.base.Preconditions;
import org.json.JSONException;
import org.json.JSONObject;
public class ManagedProductFactory {
private final InAppPurchase inAppPurchase;
private final String purchaseData;
private final String inAppDataSignature;
public ManagedProductFactory(@NonNull InAppPurchase inAppPurchase, @NonNull String purchaseData,
@NonNull String inAppDataSignature) {
this.inAppPurchase = Preconditions.checkNotNull(inAppPurchase);
this.purchaseData = Preconditions.checkNotNull(purchaseData);
this.inAppDataSignature = Preconditions.checkNotNull(inAppDataSignature);
}
@NonNull
public ManagedProduct get() throws JSONException {
final String purchaseToken;
if (!TextUtils.isEmpty(purchaseData)) {
final JSONObject purchaseDataJson = new JSONObject(purchaseData);
purchaseToken = purchaseDataJson.getString("purchaseToken");
} else {
purchaseToken = "";
}
if (Subscription.class.equals(inAppPurchase.getType())) {
return new Subscription(inAppPurchase, purchaseData, purchaseToken, inAppDataSignature);
} else if (ConsumablePurchase.class.equals(inAppPurchase.getType())) {
return new ConsumablePurchase(inAppPurchase, purchaseData, purchaseToken, inAppDataSignature);
} else {
throw new IllegalArgumentException("Unsupported purchase type");
}
}
}