package com.kaltura.playersdk.drm;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.kaltura.playersdk.LocalAssetsManager;
import java.io.IOException;
/**
* Created by noamt on 20/04/2016.
*/
public abstract class DrmAdapter {
@NonNull public static DrmAdapter getDrmAdapter(@NonNull final Context context, @NonNull final String localPath) {
if (localPath.endsWith(".wvm")) {
return new WidevineClassicAdapter(context);
}
if (localPath.endsWith(".mpd")) {
return new WidevineModularAdapter(context);
}
return new NullDrmAdapter();
}
public abstract boolean registerAsset(@NonNull final String localPath, String licenseUri, @Nullable final LocalAssetsManager.AssetRegistrationListener listener) throws IOException;
public abstract boolean refreshAsset(@NonNull final String localPath, String licenseUri, @Nullable final LocalAssetsManager.AssetRegistrationListener listener);
public abstract boolean unregisterAsset(@NonNull final String localPath, final LocalAssetsManager.AssetRemovalListener listener);
public abstract boolean checkAssetStatus(@NonNull String localPath, @Nullable final LocalAssetsManager.AssetStatusListener listener);
public abstract DRMScheme getScheme();
public enum DRMScheme {
Null, WidevineClassic, WidevineCENC
}
static class NullDrmAdapter extends DrmAdapter {
@Override
public boolean checkAssetStatus(@NonNull String localPath, @Nullable LocalAssetsManager.AssetStatusListener listener) {
if (listener != null) {
listener.onStatus(localPath, -1, -1);
}
return true;
}
@Override
public DRMScheme getScheme() {
return DRMScheme.Null;
}
@Override
public boolean registerAsset(@NonNull String localPath, @NonNull String licenseUri, @Nullable LocalAssetsManager.AssetRegistrationListener listener) {
if (listener != null) {
listener.onRegistered(localPath);
}
return true;
}
@Override
public boolean refreshAsset(@NonNull String localPath, @NonNull String licenseUri, @Nullable LocalAssetsManager.AssetRegistrationListener listener) {
return registerAsset(localPath, licenseUri, listener);
}
@Override
public boolean unregisterAsset(@NonNull String localPath, LocalAssetsManager.AssetRemovalListener listener) {
if (listener != null) {
listener.onRemoved(localPath);
}
return true;
}
}
}