---
layout: post
title:  "Using the Jabit API"
date:   2016-06-22 00:02:00 +0200
categories: setup
---

### 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 %}