Path utility class implementation (#9)
* Paths utility class implementation * Updated buildozer requirements list * lbry repository in buildozer.spec requirements changed to https://github.com/lbryio/lbry
This commit is contained in:
parent
0317f0c079
commit
3c5f90bf14
5 changed files with 87 additions and 22 deletions
|
@ -36,7 +36,7 @@ version = 0.1
|
||||||
|
|
||||||
# (list) Application requirements
|
# (list) Application requirements
|
||||||
# comma seperated e.g. requirements = sqlite3,kivy
|
# comma seperated e.g. requirements = sqlite3,kivy
|
||||||
requirements = openssl, sqlite3, hostpython2, pycrypto==2.6.1, android, pyjnius, constantly, incremental, functools32, miniupnpc==1.9, gmpy==1.17, twisted==16.6.0, appdirs==1.4.3, argparse==1.2.1, docopt==0.6.2, base58==0.2.2, colorama==0.3.7, dnspython==1.12.0, ecdsa==0.13, envparse==0.2.0, jsonrpc==1.2, jsonrpclib==0.1.7, jsonschema==2.5.1, pbkdf2==1.3, pycrypto==2.6.1, pyyaml==3.12, qrcode==5.2.2, requests==2.9.1, txrequests==0.9.5, seccure==0.3.1.3, service_identity==16.0.0, six==1.9.0, slowaes==0.1a1, txJSON-RPC==0.5, wsgiref==0.1.2, zope.interface==4.3.3, protobuf==3.2.0, git+https://github.com/lbryio/lbryschema.git#egg=lbryschema, git+https://github.com/lbryio/lbryum.git#egg=lbryum, git+https://github.com/akinwale/lbry.git#egg=lbry
|
requirements = openssl, sqlite3, hostpython2, pycrypto==2.6.1, android, pyjnius, constantly, incremental, functools32, miniupnpc==1.9, gmpy==1.17, twisted==16.6.0, appdirs==1.4.3, argparse==1.2.1, docopt==0.6.2, base58==0.2.2, colorama==0.3.7, dnspython==1.12.0, ecdsa==0.13, envparse==0.2.0, jsonrpc==1.2, jsonrpclib==0.1.7, jsonschema==2.5.1, pbkdf2==1.3, pycrypto==2.6.1, pyyaml==3.12, qrcode==5.2.2, requests==2.9.1, txrequests==0.9.5, seccure==0.3.1.3, service_identity==16.0.0, six==1.9.0, slowaes==0.1a1, txJSON-RPC==0.5, wsgiref==0.1.2, zope.interface==4.3.3, protobuf==3.2.0, git+https://github.com/lbryio/lbryschema.git#egg=lbryschema, git+https://github.com/lbryio/lbryum.git#egg=lbryum, git+https://github.com/lbryio/lbry.git#egg=lbry
|
||||||
|
|
||||||
# (str) Custom source folders for requirements
|
# (str) Custom source folders for requirements
|
||||||
# Sets custom source for any requirements with recipes
|
# Sets custom source for any requirements with recipes
|
||||||
|
|
|
@ -36,7 +36,7 @@ version = 0.1
|
||||||
|
|
||||||
# (list) Application requirements
|
# (list) Application requirements
|
||||||
# comma seperated e.g. requirements = sqlite3,kivy
|
# comma seperated e.g. requirements = sqlite3,kivy
|
||||||
requirements = openssl, sqlite3, hostpython2, pycrypto==2.6.1, android, pyjnius, constantly, incremental, functools32, miniupnpc==1.9, gmpy==1.17, twisted==16.6.0, appdirs==1.4.3, argparse==1.2.1, docopt==0.6.2, base58==0.2.2, colorama==0.3.7, dnspython==1.12.0, ecdsa==0.13, envparse==0.2.0, jsonrpc==1.2, jsonrpclib==0.1.7, jsonschema==2.5.1, pbkdf2==1.3, pycrypto==2.6.1, pyyaml==3.12, qrcode==5.2.2, requests==2.9.1, txrequests==0.9.5, seccure==0.3.1.3, service_identity==16.0.0, six==1.9.0, slowaes==0.1a1, txJSON-RPC==0.5, wsgiref==0.1.2, zope.interface==4.3.3, protobuf==3.2.0, git+https://github.com/lbryio/lbryschema.git#egg=lbryschema, git+https://github.com/lbryio/lbryum.git#egg=lbryum, git+https://github.com/akinwale/lbry.git#egg=lbry
|
requirements = openssl, sqlite3, hostpython2, pycrypto==2.6.1, android, pyjnius, constantly, incremental, functools32, miniupnpc==1.9, gmpy==1.17, twisted==16.6.0, appdirs==1.4.3, argparse==1.2.1, docopt==0.6.2, base58==0.2.2, colorama==0.3.7, dnspython==1.12.0, ecdsa==0.13, envparse==0.2.0, jsonrpc==1.2, jsonrpclib==0.1.7, jsonschema==2.5.1, pbkdf2==1.3, pycrypto==2.6.1, pyyaml==3.12, qrcode==5.2.2, requests==2.9.1, txrequests==0.9.5, seccure==0.3.1.3, service_identity==16.0.0, six==1.9.0, slowaes==0.1a1, txJSON-RPC==0.5, wsgiref==0.1.2, zope.interface==4.3.3, protobuf==3.2.0, git+https://github.com/lbryio/lbryschema.git#egg=lbryschema, git+https://github.com/lbryio/lbryum.git#egg=lbryum, git+https://github.com/lbryio/lbry.git#egg=lbry
|
||||||
|
|
||||||
# (str) Custom source folders for requirements
|
# (str) Custom source folders for requirements
|
||||||
# Sets custom source for any requirements with recipes
|
# Sets custom source for any requirements with recipes
|
||||||
|
|
|
@ -29,8 +29,23 @@ public class LbrynetService extends PythonService {
|
||||||
|
|
||||||
public static String TAG = "LbrynetService";
|
public static String TAG = "LbrynetService";
|
||||||
|
|
||||||
|
public static LbrynetService serviceInstance;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int startType() {
|
||||||
|
return START_STICKY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canDisplayNotification() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||||
|
// Assign service instance
|
||||||
|
serviceInstance = this;
|
||||||
|
|
||||||
// Extract files
|
// Extract files
|
||||||
File app_root_file = new File(getAppRoot());
|
File app_root_file = new File(getAppRoot());
|
||||||
unpackData("private", app_root_file);
|
unpackData("private", app_root_file);
|
||||||
|
@ -43,21 +58,17 @@ public class LbrynetService extends PythonService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canDisplayNotification() {
|
public void onDestroy() {
|
||||||
return false;
|
super.onDestroy();
|
||||||
|
serviceInstance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public String getAppRoot() {
|
||||||
public int startType() {
|
|
||||||
return START_STICKY;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getAppRoot() {
|
|
||||||
String app_root = getApplicationContext().getFilesDir().getAbsolutePath() + "/app";
|
String app_root = getApplicationContext().getFilesDir().getAbsolutePath() + "/app";
|
||||||
return app_root;
|
return app_root;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void recursiveDelete(File f) {
|
public void recursiveDelete(File f) {
|
||||||
if (f.isDirectory()) {
|
if (f.isDirectory()) {
|
||||||
for (File r : f.listFiles()) {
|
for (File r : f.listFiles()) {
|
||||||
recursiveDelete(r);
|
recursiveDelete(r);
|
||||||
|
@ -66,7 +77,7 @@ public class LbrynetService extends PythonService {
|
||||||
f.delete();
|
f.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unpackData(final String resource, File target) {
|
public void unpackData(final String resource, File target) {
|
||||||
Log.v(TAG, "UNPACKING!!! " + resource + " " + target.getName());
|
Log.v(TAG, "UNPACKING!!! " + resource + " " + target.getName());
|
||||||
|
|
||||||
// The version of data in memory and on disk.
|
// The version of data in memory and on disk.
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package io.lbry.lbrynet;
|
package io.lbry.lbrynet;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public final class Utils {
|
public final class Utils {
|
||||||
public static String getAndroidRelease() {
|
public static String getAndroidRelease() {
|
||||||
return android.os.Build.VERSION.RELEASE;
|
return android.os.Build.VERSION.RELEASE;
|
||||||
|
@ -8,4 +11,48 @@ public final class Utils {
|
||||||
public static int getAndroidSdk() {
|
public static int getAndroidSdk() {
|
||||||
return android.os.Build.VERSION.SDK_INT;
|
return android.os.Build.VERSION.SDK_INT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getFilesDir(Context context) {
|
||||||
|
return context.getFilesDir().getAbsolutePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getAppInternalStorageDir(Context context) {
|
||||||
|
File[] dirs = context.getExternalFilesDirs(null);
|
||||||
|
return dirs[0].getAbsolutePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getAppExternalStorageDir(Context context) {
|
||||||
|
File[] dirs = context.getExternalFilesDirs(null);
|
||||||
|
if (dirs.length > 1) {
|
||||||
|
return dirs[1].getAbsolutePath();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getInternalStorageDir(Context context) {
|
||||||
|
String appInternal = getAppInternalStorageDir(context);
|
||||||
|
return writableRootForPath(appInternal);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getExternalStorageDir(Context context) {
|
||||||
|
String appExternal = getAppInternalStorageDir(context);
|
||||||
|
if (appExternal == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return writableRootForPath(appExternal);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String writableRootForPath(String path) {
|
||||||
|
File file = new File(path);
|
||||||
|
while (file != null && file.canWrite()) {
|
||||||
|
File parent = file.getParentFile();
|
||||||
|
if (parent != null && !parent.canWrite()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
file = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return file.getAbsolutePath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,23 @@
|
||||||
import platform
|
import platform
|
||||||
|
import ssl
|
||||||
|
|
||||||
|
# Fixes / patches / overrides
|
||||||
|
# platform.platform() in libc_ver: IOError: [Errno 21] Is a directory
|
||||||
|
from jnius import autoclass
|
||||||
|
lbrynet_utils = autoclass('io.lbry.lbrynet.Utils')
|
||||||
|
service = autoclass('io.lbry.lbrynet.LbrynetService').serviceInstance
|
||||||
|
platform.platform = lambda: 'Android %s (API %s)' % (lbrynet_utils.getAndroidRelease(), lbrynet_utils.getAndroidSdk())
|
||||||
|
|
||||||
|
import lbrynet.androidhelpers
|
||||||
|
lbrynet.androidhelpers.paths.android_files_dir = lambda: lbrynet_utils.getFilesDir(service.getApplicationContext())
|
||||||
|
lbrynet.androidhelpers.paths.android_internal_storage_dir = lambda: lbrynet_utils.getInternalStorageDir(service.getApplicationContext())
|
||||||
|
lbrynet.androidhelpers.paths.android_external_storage_dir = lambda: lbrynet_utils.getExternalStorageDir(service.getApplicationContext())
|
||||||
|
lbrynet.androidhelpers.paths.android_app_internal_storage_dir = lambda: lbrynet_utils.getAppInternalStorageDir(service.getApplicationContext())
|
||||||
|
lbrynet.androidhelpers.paths.android_app_external_storage_dir = lambda: lbrynet_utils.getAppExternalStorageDir(service.getApplicationContext())
|
||||||
|
|
||||||
import logging.handlers
|
import logging.handlers
|
||||||
from lbrynet.core import log_support
|
|
||||||
|
|
||||||
|
from lbrynet.core import log_support
|
||||||
from twisted.internet import defer, reactor
|
from twisted.internet import defer, reactor
|
||||||
from jsonrpc.proxy import JSONRPCProxy
|
from jsonrpc.proxy import JSONRPCProxy
|
||||||
|
|
||||||
|
@ -12,14 +27,6 @@ from lbrynet.core import utils, system_info
|
||||||
from lbrynet.daemon.auth.client import LBRYAPIClient
|
from lbrynet.daemon.auth.client import LBRYAPIClient
|
||||||
from lbrynet.daemon.DaemonServer import DaemonServer
|
from lbrynet.daemon.DaemonServer import DaemonServer
|
||||||
|
|
||||||
import ssl
|
|
||||||
|
|
||||||
# Fixes / patches / overrides
|
|
||||||
# platform.platform() in libc_ver: IOError: [Errno 21] Is a directory
|
|
||||||
from jnius import autoclass
|
|
||||||
util = autoclass('io.lbry.lbrynet.Utils')
|
|
||||||
platform.platform = lambda: 'Android %s (API %s)' % (util.getAndroidRelease(), util.getAndroidSdk())
|
|
||||||
|
|
||||||
# https certificate verification
|
# https certificate verification
|
||||||
# TODO: this is bad. Need to find a way to properly verify https requests
|
# TODO: this is bad. Need to find a way to properly verify https requests
|
||||||
def https_context():
|
def https_context():
|
||||||
|
@ -47,7 +54,6 @@ def https_context():
|
||||||
requests.Session.request = partialmethod(default_request, verify=False)
|
requests.Session.request = partialmethod(default_request, verify=False)
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
# LBRY Daemon
|
# LBRY Daemon
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -89,5 +95,6 @@ def start_server_and_listen(use_auth, analytics_manager, max_tries=5):
|
||||||
analytics_manager.send_server_startup_error(str(e))
|
analytics_manager.send_server_startup_error(str(e))
|
||||||
reactor.fireSystemEvent("shutdown")
|
reactor.fireSystemEvent("shutdown")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
start()
|
start()
|
||||||
|
|
Loading…
Reference in a new issue