download file from unsync encrypted repos

I think if we can manage object task via a `shared_pointer` or `unique_pointer` it is more convenient (no need to add extra methods or singals). But it takes some time to deal with this and also it requires some testing. So I do some temporary workaround here. I hope it works and doesn't add too many redundant lines here to mess up everything.