Jabit/quickstart.md

2.4 KiB

layout title permalink order categories
page Quick Start /quickstart 1 quick start

Project Setup

As Jabit uses Gradle, it is also used for this documentation. If you're used to Maven it should be simple enough to deduce what you'll need to put into your pom.xml. {: .info}

Add Jabit as Gradle dependency:

{% highlight groovy %} compile 'ch.dissem.jabit:jabit-core:1.0.0' {% endhighlight %}

Unless you want to implement your own, also add the following:

{% highlight groovy %} compile 'ch.dissem.jabit:jabit-networking:1.0.0' compile 'ch.dissem.jabit:jabit-repositories:1.0.0' compile 'ch.dissem.jabit:jabit-cryptography-bouncy:1.0.0' {% endhighlight %}

And if you want to import from or export to the Wallet Import Format (used by PyBitmessage) you might also want to add:

{% highlight groovy %} compile 'ch.dissem.jabit:jabit-wif:1.0.0' {% endhighlight %}

For Android clients use jabit-cryptography-spongy instead of jabit-cryptography-bouncy.

Usage

First, you'll need to create a BitmessageContext:

{% highlight java %} JdbcConfig jdbcConfig = new JdbcConfig(); BitmessageContext ctx = new BitmessageContext.Builder() .addressRepo(new JdbcAddressRepository(jdbcConfig)) .inventory(new JdbcInventory(jdbcConfig)) .messageRepo(new JdbcMessageRepository(jdbcConfig)) .nodeRegistry(new MemoryNodeRegistry()) .networkHandler(new NetworkNode()) .cryptography(new BouncyCryptography()) .build(); {% endhighlight %}

This creates a simple context using a H2 database that will be created in the user's home directory. Next you'll need to start the context and decide what happens if a message arrives:

{% highlight java %} ctx.startup(new BitmessageContext.Listener() { @Override public void receive(Plaintext plaintext) { // TODO: Notify the user } }); {% endhighlight %}

Then you might want to create an identity

{% highlight java %} BitmessageAddress identity = ctx.createIdentity(false, Pubkey.Feature.DOES_ACK); {% endhighlight %}

or add some contacts

{% highlight java %} BitmessageAddress contact = new BitmessageAddress("BM-2cTarrmjMdRicKZ4qQ8A13JhoR3Uq6Zh5j"); address.setAlias("Chris"); ctx.addContact(contact); {% endhighlight %}

to which you can send some messages

{% highlight java %} ctx.send(identity, contact, "Test", "Hello Chris, this is a message."); {% endhighlight %}