|
|
|
@ -16,15 +16,6 @@ object FileServerApi {
|
|
|
|
|
private const val serverPublicKey = "da21e1d886c6fbaea313f75298bd64aab03a97ce985b46bb2dad9f2089c8ee59"
|
|
|
|
|
const val server = "http://filev2.getsession.org"
|
|
|
|
|
const val maxFileSize = 10_000_000 // 10 MB
|
|
|
|
|
/**
|
|
|
|
|
* The file server has a file size limit of `maxFileSize`, which the Service Nodes try to enforce as well. However, the limit applied by the Service Nodes
|
|
|
|
|
* is on the **HTTP request** and not the actual file size. Because the file server expects the file data to be base 64 encoded, the size of the HTTP
|
|
|
|
|
* request for a given file will be at least `ceil(n / 3) * 4` bytes, where n is the file size in bytes. This is the minimum size because there might also
|
|
|
|
|
* be other parameters in the request. On average the multiplier appears to be about 1.5, so when checking whether the file will exceed the file size limit when
|
|
|
|
|
* uploading a file we just divide the size of the file by this number. The alternative would be to actually check the size of the HTTP request but that's only
|
|
|
|
|
* possible after proof of work has been calculated and the onion request encryption has happened, which takes several seconds.
|
|
|
|
|
*/
|
|
|
|
|
const val fileSizeORMultiplier = 2 // TODO: It should be possible to set this to 1.5?
|
|
|
|
|
|
|
|
|
|
sealed class Error(message: String) : Exception(message) {
|
|
|
|
|
object ParsingFailed : Error("Invalid response.")
|
|
|
|
|