GithubHelp home page GithubHelp logo

kaloyan-raev / hello-storj Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 3.0 5.39 MB

Demo app for integrating the libstorj native library in Android

License: GNU General Public License v3.0

Java 100.00%
storj android

hello-storj's Introduction

Hello Storj

Hello Storj is a demo app for integrating the Android library for Storj. The focus is entirely on the integration and it is not intended to provide any meaningful usability and UX. Future user-focused apps may be based on this project.

If you want to build a similar Android app, you can use the android-libstorj Gradle library. It provides everything you need for working with the Storj network: a Java API and pre-build native libraries for libstorj and all its dependencies. See the android-libstorj repo for instructions.

Downloading files video Uploading files video

Installation

The app can be installed from Google Play.

Get it on Google Play

Requrirements:

  • Android 5.0 Lollipop or newer

Features

  • Now works with Storj V3!
  • Import account keys
  • List buckets
  • List files in the buckets
  • Download files
  • Create bucket
  • Upload files
  • Cancel button for downloads and uploads

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Some parts of the code (FileUtils) are licensed under the Apache License as published by the Apache Software Foundation. You can redistribute it and/or modify it under the terms version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

hello-storj's People

Contributors

kaloyan-raev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

hello-storj's Issues

getBucket Method

Include a method to getBucket with a given mnemonic. This is an alternative to the bucket/key association. A method that just gets a single bucket with a specified mnemonic will allow users who set a different mnemonic in multiple apps (My app AllStorj, and another developers app) can then access all their files regardless of which app they use. Specifying different mnemonics depending on the app is also good as Storj's ecosystem develops and apps have different purposes.

This will also allow for uploading to one bucket in a background process that cannot call the getBuckets() method.

Error on upload

I am getting this error when trying to upload a jpg file. This is directly using the sample app here

09-29 08:49:49.664 9471-9733/name.raev.kaloyan.hellostorj.debug A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 9733 (Thread-7)
09-29 08:49:49.708 9757-9757/? A/DEBUG: pid: 9471, tid: 9733, name: Thread-7 >>> name.raev.kaloyan.hellostorj.debug <<<
09-29 08:49:49.709 9757-9757/? A/DEBUG: #00 pc 00075c38 /data/app/name.raev.kaloyan.hellostorj.debug-U_qNbuYEo4Rl6uEZWS5h0Q==/lib/arm/libnative-lib.so
09-29 08:49:49.709 9757-9757/? A/DEBUG: #1 pc 001e11c4 /data/app/name.raev.kaloyan.hellostorj.debug-U_qNbuYEo4Rl6uEZWS5h0Q==/lib/arm/libnative-lib.so

Allow for bucket/key association

Allow for multiple keys to be imported, and for them to have association to specific buckets. Key-Hello is associated with Bucket1. So you can have all your buckets decrypted

Login

Before the v3 change you could login to storj with a Key likeKeys(username, password, mnemonic), however now that has changed. How do we get the apikey and encryption access to create a key now? are they user specified?

No buckets / Invalid user credentials

Hello storj on Android 6.0
I registered successfully. But i dont see any buckets. If i add a bucket i get error Invalid user credentials.
Filezilla and storj on PC works fine.

Detailed error messages

When receiving an error message on upload all that is returned is the filepath (or in some cases, just null). However this does not tell us why it failed. This can be very important for the message shown to the user, and for simply developer debugging in the app. Giving the error message that the JNI received back to the callback will be an extremely useful feature.

Remove mnemonic requirement

The mnemonic is required in the Keys class. While the security is great, this also makes it so you can only read buckets created with the app, and not online. You should make the mnemonic optional.

Registration

The Storj.register method is deprecated. I see it says there is no replacement, are users not allowed to register via third party apps now? Is there a page on the storj website we can redirect them too?

Allow users to manage encryption key(easily import and export)

Allow users to save the key in for example the following way:

  1. Allow them to email the key to themselves (maybe secured).
  2. Allow users to save the key encrypted with a password on the phone.
  3. Allow the user to export and/or backup the keys in different ways.

Concurrent uploads and folder upload logic

Allow concurrent uploads and for example users to upload/sync a entire folder, FileZilla with Storj does this well, the user can just drag and drop folders with sub-folders from the local machine to Storj, FileZilla then names the buckets accordingly, e.g. bucket/sub-bucket.

Batch Uploads

It would be beneficial to allow a user to select multiple files at once to be uploaded. While your library right now would handle them selecting a couple pictures and just running the FileUploader in a for loop, if the user were to select 50-100 pics to upload at once that would most likely incur major performance issues. Having a built in method for batch uploads would be best way to handle multi-selection

Allow a user to register an account through the app

Users should be able to register in the app in for example the following ways:

  1. email and password
  2. Social media (facebook, twitter...)

I am not sure if there is a logic for this yet or not, maybe plugin into the code of app.storj.io.

Registering to Storj should be painless.

If there is no logic for this i think we should open a issue for this on bridge-GUI-vue: https://github.com/Storj/bridge-gui-vue

Registration Java API

Please expose the method in the native library to allow for registration of new users

Build a Dropbox style app to sync files/folders to Storj

Allow users to sync folders (e.g. photos) on their phone to Storj, make the app user-friendly and painless to use with a low starting difficulty barrier.

  • Allow users to select which directories and what to sync.
  • Allow users to set re-sync interval.
  • Build a file and folder structure like FileZilla does.

Allow media streaming

So allow to directly stream media (audio and video) and even download pictures which they can directly see within the app.

Error when list objects on virtual device

When I try to get objects that were loaded from desktop uplink I get the error:
go.Universe$Proxyerror: segment size must be larger than 0

I've tried both source code from the master and uplink-1.0 branches.

The error only occurs on virtual android devices. Is it because of virtual network adapter?

Server-side validation of user credentials

The Import Keys feature does not check if the provided credentials are actually valid on the Bridge.

The following 2-step validation should be done in addition to the current client-side validation:

  1. List buckets.
    -- if error code 200 or 304 is received then user and password match
    -- If error code 401 is received then user and password does not match
    -- in all other cases - unknown error
  2. Check if the listed buckets can be decrypted with the provided encryption key
    -- if at least one bucket is decrypted successfully then the encryption key is accepted as valid
    -- if none of the buckets can be decrypted then the encryption key is invalid
    -- if no buckets in the account - the encryption key is accepted as valid

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.