Skip to content

Commit bb1c4d7

Browse files
author
krishna
committed
checks for downloaded file integrity using ETag header
1 parent 5bcd0da commit bb1c4d7

File tree

15 files changed

+177
-14
lines changed

15 files changed

+177
-14
lines changed
589 Bytes
Binary file not shown.

.idea/codeStyles/Project.xml

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
22

33
android {
44
compileSdkVersion 26
5-
buildToolsVersion '26.0.2'
5+
buildToolsVersion '27.0.3'
66
defaultConfig {
77
applicationId "com.krishna.fileloadersample"
88
minSdkVersion 16

app/src/main/java/com/krishna/fileloadersample/MainActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ protected void onCreate(Bundle savedInstanceState) {
3737
//Asynchronously load file as generic file
3838
FileLoader.with(this)
3939
.load("https://upload.wikimedia.org/wikipedia/commons/3/3c/Enrique_Simonet_-_Marina_veneciana_6MB.jpg")
40+
.checkFileintegrity(true)
4041
.fromDirectory("test4", FileLoader.DIR_EXTERNAL_PUBLIC)
4142
.asFile(new FileRequestListener<File>() {
4243
@Override
@@ -61,6 +62,7 @@ public void onError(FileLoadRequest request, Throwable t) {
6162
FileResponse response = FileLoader.with(this)
6263
.load("http://echo.jsontest.com/key1/value1/key2/value2")
6364
.fromDirectory("test4", FileLoader.DIR_EXTERNAL_PUBLIC)
65+
.checkFileintegrity(true)
6466
.asObject(JsonTest.class);
6567
JsonTest test = (JsonTest) response.getBody();
6668
Log.d(TAG, "" + test);
@@ -97,6 +99,7 @@ public void onError(FileLoadRequest request, Throwable t) {
9799
multiFileLoadRequests.add(new MultiFileLoadRequest(uris[1], Environment.DIRECTORY_PICTURES, FileLoader.DIR_EXTERNAL_PUBLIC, true));
98100

99101
final MultiFileDownloader multiFileDownloader = FileLoader.multiFileDownload(this);
102+
multiFileDownloader.checkFileintegrity(true);
100103
multiFileDownloader.progressListener(new MultiFileDownloadListener() {
101104
@Override
102105
public void onProgress(File downloadedFile, int progress, int totalFiles) {

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22

33
buildscript {
44
repositories {
5-
jcenter()
65
google()
6+
jcenter()
77
}
88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.0.0'
9+
classpath 'com.android.tools.build:gradle:3.1.4'
1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files
1212
}
1313
}
1414

1515
allprojects {
1616
repositories {
17-
jcenter()
1817
google()
18+
jcenter()
1919
maven { url 'https://jitpack.io' }
2020
}
2121
}

fileloader/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ group='com.github.kk121'
55

66
android {
77
compileSdkVersion 26
8-
buildToolsVersion '26.0.2'
8+
buildToolsVersion '27.0.3'
99

1010
defaultConfig {
1111
minSdkVersion 16

fileloader/src/main/java/com/krishna/fileloader/FileLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ protected DownloadResponse doInBackground(Void... voids) {
263263
if (loadedFile == null || !loadedFile.exists()) {
264264
//download from internet
265265
FileDownloader downloader = new FileDownloader(context, fileLoadRequest.getUri(), fileLoadRequest.getDirectoryName(), fileLoadRequest.getDirectoryType());
266-
loadedFile = downloader.download(fileLoadRequest.isAutoRefresh());
266+
loadedFile = downloader.download(fileLoadRequest.isAutoRefresh(), fileLoadRequest.isCheckIntegrity());
267267
}
268268
downloadResponse.setDownloadedFile(loadedFile);
269269
} catch (Exception e) {

fileloader/src/main/java/com/krishna/fileloader/MultiFileDownloadTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ protected Void doInBackground(MultiFileLoadRequest... requests) {
3838
File downloadedFile = AndroidFileManager.searchAndGetLocalFile(context, loadRequest.getUri(), loadRequest.getDirectoryName(), loadRequest.getDirectoryType());
3939
FileDownloader downloader = new FileDownloader(context, loadRequest.getUri(), loadRequest.getDirectoryName(), loadRequest.getDirectoryType());
4040
if (loadRequest.isForceLoadFromNetwork() || downloadedFile == null || !downloadedFile.exists()) {
41-
downloadedFile = downloader.download(false);
41+
downloadedFile = downloader.download(false, loadRequest.isCheckIntegrity());
4242
} else if (loadRequest.isAutoRefresh()) {
43-
File tempFile = downloader.download(true);
43+
File tempFile = downloader.download(true, loadRequest.isCheckIntegrity());
4444
if (tempFile != null) {
4545
downloadedFile = tempFile;
4646
}

fileloader/src/main/java/com/krishna/fileloader/builder/FileLoaderBuilder.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class FileLoaderBuilder {
2929
private FileLoader fileLoader;
3030
private boolean forceLoadFromNetwork;
3131
private boolean autoRefresh;
32+
private boolean checkIntegrity;
3233

3334

3435
public FileLoaderBuilder(Context context) {
@@ -56,6 +57,11 @@ public FileLoaderBuilder fromDirectory(String directoryName, @FileLoader.Directo
5657
return this;
5758
}
5859

60+
public FileLoaderBuilder checkFileintegrity(boolean checkIntegrity) {
61+
this.checkIntegrity = checkIntegrity;
62+
return this;
63+
}
64+
5965
public FileResponse asFile() throws Exception {
6066
returnFileType = FileLoadRequest.TYPE_FILE;
6167
buildFileLoader();
@@ -111,6 +117,6 @@ public void asObject(FileRequestListener<? extends Object> listener) {
111117

112118
private void buildFileLoader() {
113119
fileLoader = new FileLoader(context);
114-
fileLoader.setFileLoadRequest(new FileLoadRequest(uri, directoryName, directoryType, returnFileType, requestClass, fileExtension, forceLoadFromNetwork, autoRefresh, listener));
120+
fileLoader.setFileLoadRequest(new FileLoadRequest(uri, directoryName, directoryType, returnFileType, requestClass, fileExtension, forceLoadFromNetwork, autoRefresh, checkIntegrity, listener));
115121
}
116122
}

fileloader/src/main/java/com/krishna/fileloader/builder/MultiFileDownloader.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class MultiFileDownloader {
2222
private MultiFileDownloadListener listener;
2323
private boolean forceLoadFromNetwork;
2424
private boolean autoRefresh;
25+
private boolean checkIntegrity;
2526
private MultiFileDownloadTask multiFileDownloadTask;
2627

2728
public MultiFileDownloader(Context context) {
@@ -44,11 +45,17 @@ public MultiFileDownloader progressListener(MultiFileDownloadListener listener)
4445
return this;
4546
}
4647

48+
public MultiFileDownloader checkFileintegrity(boolean checkIntegrity) {
49+
this.checkIntegrity = checkIntegrity;
50+
return this;
51+
}
52+
4753
public void loadMultiple(String... uris) {
4854
MultiFileLoadRequest[] loadRequestArr = new MultiFileLoadRequest[uris.length];
4955
for (int i = 0; i < uris.length; i++) {
5056
MultiFileLoadRequest loadRequest = new MultiFileLoadRequest(uris[i], directoryName, directoryType, forceLoadFromNetwork);
5157
loadRequest.setAutoRefresh(autoRefresh);
58+
loadRequest.setCheckIntegrity(checkIntegrity);
5259
loadRequestArr[i] = loadRequest;
5360
}
5461
multiFileDownloadTask = new MultiFileDownloadTask(context, listener);
@@ -66,6 +73,7 @@ public void loadMultiple(boolean forceLoadFromNetwork, List<MultiFileLoadRequest
6673
for (int i = 0; i < multiFileLoadRequestList.size(); i++) {
6774
loadRequestArr[i] = multiFileLoadRequestList.get(i);
6875
loadRequestArr[i].setAutoRefresh(autoRefresh);
76+
loadRequestArr[i].setCheckIntegrity(checkIntegrity);
6977
}
7078
multiFileDownloadTask = new MultiFileDownloadTask(context, listener);
7179
multiFileDownloadTask.executeOnExecutor(Utils.getThreadPoolExecutor(), loadRequestArr);

0 commit comments

Comments
 (0)