Search in sources :

Example 1 with APIFactory

use of com.samourai.wallet.api.APIFactory in project samourai-wallet-android by Samourai-Wallet.

the class WhirlpoolWalletTest method setUp.

@Before
public void setUp() throws Exception {
    super.setUp(TestNet3Params.get());
    // configure wallet
    boolean testnet = true;
    boolean onion = false;
    int mixsTarget = 5;
    String scode = null;
    // backendApi with mocked pushTx
    TorManager torManager = TorManager.getInstance(getContext());
    IHttpClient httpClient = new AndroidHttpClient(WebUtil.getInstance(getContext()), torManager);
    BackendApi backendApi = new BackendApi(httpClient, BackendServer.TESTNET.getBackendUrl(onion), Optional.empty()) {

        @Override
        public void pushTx(String txHex) throws Exception {
            log.info("pushTX ignored for test: " + txHex);
        }
    };
    File fileIndex = File.createTempFile("test-state", "test");
    File fileUtxo = File.createTempFile("test-utxos", "test");
    WhirlpoolWalletPersistHandler persistHandler = new FileWhirlpoolWalletPersistHandler(fileIndex, fileUtxo);
    // instanciate WhirlpoolWallet
    bip84w = computeBip84w(SEED_WORDS, SEED_PASSPHRASE);
    config = whirlpoolWalletService.computeWhirlpoolWalletConfig(torManager, persistHandler, testnet, onion, mixsTarget, scode, httpClient, backendApi);
    config.setTx0Service(new AndroidTx0Service(config) {

        @Override
        protected Tx0Data fetchTx0Data(String poolId) throws HttpException, NotifiableException {
            Tx0Data tx0Data = super.fetchTx0Data(poolId);
            // mock fee address for deterministic tests
            return new Tx0Data(tx0Data.getFeePaymentCode(), tx0Data.getFeeValue(), tx0Data.getFeeChange(), 0, tx0Data.getFeePayload(), "tb1qgyppvv58rv83eas60trmdgqc06yx9q53qs6skx", 123);
        }
    });
    APIFactory apiFactory = APIFactory.getInstance(context);
    WhirlpoolDataService dataService = whirlpoolWalletService.newDataService(config, apiFactory);
    whirlpoolWallet = whirlpoolWalletService.openWallet(config, dataService, bip84w);
}
Also used : Tx0Data(com.samourai.whirlpool.client.whirlpool.beans.Tx0Data) BackendApi(com.samourai.wallet.api.backend.BackendApi) NotifiableException(com.samourai.whirlpool.client.exception.NotifiableException) IHttpClient(com.samourai.http.client.IHttpClient) FileWhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.FileWhirlpoolWalletPersistHandler) AndroidHttpClient(com.samourai.http.client.AndroidHttpClient) APIFactory(com.samourai.wallet.api.APIFactory) AndroidTx0Service(com.samourai.whirlpool.client.tx0.AndroidTx0Service) FileWhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.FileWhirlpoolWalletPersistHandler) WhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.WhirlpoolWalletPersistHandler) TorManager(com.samourai.wallet.tor.TorManager) HttpException(com.samourai.wallet.api.backend.beans.HttpException) File(java.io.File) Before(org.junit.Before)

Example 2 with APIFactory

use of com.samourai.wallet.api.APIFactory in project samourai-wallet-android by Samourai-Wallet.

the class AndroidWhirlpoolWalletService method computeWhirlpoolWalletConfig.

protected WhirlpoolWalletConfig computeWhirlpoolWalletConfig(Context ctx, String walletIdentifier) throws Exception {
    WebUtil webUtil = WebUtil.getInstance(ctx);
    TorManager torManager = TorManager.getInstance(ctx);
    String dojoParams = DojoUtil.getInstance(ctx).getDojoParams();
    boolean useDojo = (dojoParams != null);
    boolean testnet = SamouraiWallet.getInstance().isTestNet();
    boolean onion = useDojo || torManager.isRequired();
    Log.v(TAG, "whirlpoolWalletConfig[Tor] = onion=" + onion + ", useDojo=" + useDojo + ", torManager.isRequired=" + torManager.isRequired());
    String scode = WhirlpoolMeta.getInstance(ctx).getSCODE();
    // backend configuration
    String backendUrl;
    Optional<OAuthManager> oAuthManager;
    if (useDojo) {
        // dojo backend
        backendUrl = DojoUtil.getInstance(ctx).getUrl(dojoParams);
        APIFactory apiFactory = APIFactory.getInstance(ctx);
        oAuthManager = Optional.of(new AndroidOAuthManager(apiFactory));
    } else {
        // samourai backend
        backendUrl = BackendServer.get(testnet).getBackendUrl(onion);
        oAuthManager = Optional.empty();
    }
    IHttpClient httpClient = new AndroidHttpClient(webUtil, torManager);
    BackendApi backendApi = new BackendApi(httpClient, backendUrl, oAuthManager);
    File fileIndex = whirlpoolUtils.computeIndexFile(walletIdentifier, ctx);
    File fileUtxo = whirlpoolUtils.computeUtxosFile(walletIdentifier, ctx);
    WhirlpoolWalletPersistHandler persistHandler = new FileWhirlpoolWalletPersistHandler(fileIndex, fileUtxo);
    return computeWhirlpoolWalletConfig(torManager, persistHandler, testnet, onion, MIXS_TARGET_DEFAULT, scode, httpClient, backendApi);
}
Also used : OAuthManager(com.samourai.wallet.util.oauth.OAuthManager) AndroidOAuthManager(com.samourai.http.client.AndroidOAuthManager) BackendApi(com.samourai.wallet.api.backend.BackendApi) IHttpClient(com.samourai.http.client.IHttpClient) FileWhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.FileWhirlpoolWalletPersistHandler) AndroidHttpClient(com.samourai.http.client.AndroidHttpClient) APIFactory(com.samourai.wallet.api.APIFactory) WebUtil(com.samourai.wallet.util.WebUtil) FileWhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.FileWhirlpoolWalletPersistHandler) WhirlpoolWalletPersistHandler(com.samourai.whirlpool.client.wallet.persist.WhirlpoolWalletPersistHandler) AndroidOAuthManager(com.samourai.http.client.AndroidOAuthManager) TorManager(com.samourai.wallet.tor.TorManager) File(java.io.File)

Example 3 with APIFactory

use of com.samourai.wallet.api.APIFactory in project samourai-wallet-android by Samourai-Wallet.

the class AndroidWhirlpoolWalletService method getOrOpenWhirlpoolWallet.

private WhirlpoolWallet getOrOpenWhirlpoolWallet(Context ctx) throws Exception {
    Optional<WhirlpoolWallet> whirlpoolWalletOpt = getWhirlpoolWallet();
    if (!whirlpoolWalletOpt.isPresent()) {
        // wallet closed => open WhirlpoolWallet
        HD_Wallet bip84w = BIP84Util.getInstance(ctx).getWallet();
        String walletIdentifier = whirlpoolUtils.computeWalletIdentifier(bip84w);
        WhirlpoolWalletConfig config = computeWhirlpoolWalletConfig(ctx, walletIdentifier);
        APIFactory apiFactory = APIFactory.getInstance(ctx);
        WhirlpoolDataService dataService = newDataService(config, apiFactory);
        return openWallet(config, dataService, bip84w);
    }
    // wallet already opened
    return whirlpoolWalletOpt.get();
}
Also used : APIFactory(com.samourai.wallet.api.APIFactory) HD_Wallet(com.samourai.wallet.hd.HD_Wallet)

Aggregations

APIFactory (com.samourai.wallet.api.APIFactory)3 AndroidHttpClient (com.samourai.http.client.AndroidHttpClient)2 IHttpClient (com.samourai.http.client.IHttpClient)2 BackendApi (com.samourai.wallet.api.backend.BackendApi)2 TorManager (com.samourai.wallet.tor.TorManager)2 FileWhirlpoolWalletPersistHandler (com.samourai.whirlpool.client.wallet.persist.FileWhirlpoolWalletPersistHandler)2 WhirlpoolWalletPersistHandler (com.samourai.whirlpool.client.wallet.persist.WhirlpoolWalletPersistHandler)2 File (java.io.File)2 AndroidOAuthManager (com.samourai.http.client.AndroidOAuthManager)1 HttpException (com.samourai.wallet.api.backend.beans.HttpException)1 HD_Wallet (com.samourai.wallet.hd.HD_Wallet)1 WebUtil (com.samourai.wallet.util.WebUtil)1 OAuthManager (com.samourai.wallet.util.oauth.OAuthManager)1 NotifiableException (com.samourai.whirlpool.client.exception.NotifiableException)1 AndroidTx0Service (com.samourai.whirlpool.client.tx0.AndroidTx0Service)1 Tx0Data (com.samourai.whirlpool.client.whirlpool.beans.Tx0Data)1 Before (org.junit.Before)1