mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-05-29 13:00:13 +02:00
99 lines
2.8 KiB
Java
99 lines
2.8 KiB
Java
package com.topjohnwu.magisk.container;
|
|
|
|
import android.content.ContentValues;
|
|
import android.database.Cursor;
|
|
|
|
import com.topjohnwu.magisk.MagiskManager;
|
|
import com.topjohnwu.magisk.utils.Const;
|
|
import com.topjohnwu.magisk.utils.Logger;
|
|
import com.topjohnwu.magisk.utils.Utils;
|
|
import com.topjohnwu.magisk.utils.WebService;
|
|
|
|
import java.text.DateFormat;
|
|
import java.util.Date;
|
|
|
|
public class Repo extends BaseModule {
|
|
|
|
private String repoName;
|
|
private Date mLastUpdate;
|
|
|
|
public Repo(String name, Date lastUpdate) throws IllegalRepoException {
|
|
mLastUpdate = lastUpdate;
|
|
repoName = name;
|
|
update();
|
|
}
|
|
|
|
public Repo(Cursor c) {
|
|
super(c);
|
|
repoName = c.getString(c.getColumnIndex("repo_name"));
|
|
mLastUpdate = new Date(c.getLong(c.getColumnIndex("last_update")));
|
|
}
|
|
|
|
public void update() throws IllegalRepoException {
|
|
String props[] = Utils.dos2unix(WebService.getString(getManifestUrl())).split("\\n");
|
|
try {
|
|
parseProps(props);
|
|
} catch (NumberFormatException e) {
|
|
throw new IllegalRepoException("Repo [" + repoName + "] parse error: " + e.getMessage());
|
|
}
|
|
|
|
if (getId() == null) {
|
|
throw new IllegalRepoException("Repo [" + repoName + "] does not contain id");
|
|
}
|
|
if (getVersionCode() < 0) {
|
|
throw new IllegalRepoException("Repo [" + repoName + "] does not contain versionCode");
|
|
}
|
|
if (getMinMagiskVersion() < Const.MIN_MODULE_VER()) {
|
|
Logger.debug("Repo [" + repoName + "] is outdated");
|
|
}
|
|
}
|
|
|
|
public boolean update(Date lastUpdate) throws IllegalRepoException {
|
|
if (lastUpdate.after(mLastUpdate)) {
|
|
mLastUpdate = lastUpdate;
|
|
update();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public ContentValues getContentValues() {
|
|
ContentValues values = super.getContentValues();
|
|
values.put("repo_name", repoName);
|
|
values.put("last_update", mLastUpdate.getTime());
|
|
return values;
|
|
}
|
|
|
|
public String getRepoName() {
|
|
return repoName;
|
|
}
|
|
|
|
public String getZipUrl() {
|
|
return String.format(Const.Url.ZIP_URL, repoName);
|
|
}
|
|
|
|
public String getManifestUrl() {
|
|
return String.format(Const.Url.FILE_URL, repoName, "module.prop");
|
|
}
|
|
|
|
public String getDetailUrl() {
|
|
return String.format(Const.Url.FILE_URL, repoName, "README.md");
|
|
}
|
|
|
|
public String getLastUpdateString() {
|
|
return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM,
|
|
MagiskManager.locale).format(mLastUpdate);
|
|
}
|
|
|
|
public Date getLastUpdate() {
|
|
return mLastUpdate;
|
|
}
|
|
|
|
public class IllegalRepoException extends Exception {
|
|
IllegalRepoException(String message) {
|
|
super(message);
|
|
}
|
|
}
|
|
}
|