2016-06-25 12:52:19 +02:00
|
|
|
---
|
|
|
|
layout: page
|
|
|
|
title: "Quick Start"
|
|
|
|
permalink: "/quickstart"
|
2016-06-26 09:28:04 +02:00
|
|
|
order: 1
|
2016-06-25 12:52:19 +02:00
|
|
|
categories: 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 %}
|
|
|
|
|