diff --git a/src/wrapper/java/kiwixreader.cpp b/src/wrapper/java/kiwixreader.cpp index 7bc61ebd8..978199ae1 100644 --- a/src/wrapper/java/kiwixreader.cpp +++ b/src/wrapper/java/kiwixreader.cpp @@ -21,6 +21,7 @@ #include #include +#include #include "org_kiwix_kiwixlib_JNIKiwixReader.h" #include "tools/base64.h" @@ -305,6 +306,22 @@ JNIEXPORT jbyteArray JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getContentPa return data; } +JNIEXPORT jlong JNICALL +Java_org_kiwix_kiwixlib_JNIKiwixReader_getArticleSize( + JNIEnv* env, jobject obj, jstring url) +{ + std::string cUrl = jni2c(url, env); + try { + auto entry = READER->getEntryFromEncodedPath(cUrl); + entry = entry.getFinalEntry(); + return c2jni(entry.getSize(), env); + } catch(std::exception& e) { + LOG("Unable to get size for url : %s", cUrl.c_str()); + LOG(e.what()); + } + return c2jni(0, env); +} + JNIEXPORT jobject JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getDirectAccessInformation( JNIEnv* env, jobject obj, jstring url) diff --git a/src/wrapper/java/org/kiwix/kiwixlib/JNIKiwixReader.java b/src/wrapper/java/org/kiwix/kiwixlib/JNIKiwixReader.java index 0da29ed97..f94c3dc6f 100644 --- a/src/wrapper/java/org/kiwix/kiwixlib/JNIKiwixReader.java +++ b/src/wrapper/java/org/kiwix/kiwixlib/JNIKiwixReader.java @@ -82,6 +82,16 @@ public class JNIKiwixReader int len, JNIKiwixInt size); + /** + * + * Get the size of an article. + * + * @param url The url of the article. + * @return The size of the final (redirections are resolved) article (in byte). + * Return 0 if the article is not found. + */ + public native long getArticleSize(String url); + /** * getDirectAccessInformation. *