get bonus amount from tx
Fix btc script use of Transaction
Get method token from transaction as well
Merge branch '3ds-tx'

* 3ds-tx:
  Allow fully 3DS'd transaction from the web
  Factor out with_antifraud helper
  Factor out a transaction object
  Factor out a Customer object
Allow fully 3DS'd transaction from the web
Factor out with_antifraud helper
Factor out a transaction object
Factor out a Customer object
Pass through all events
Setup Sentry

I thought the gem did this automatically if I wanted the default config,
but apparently not!

So this requires the SENTRY_DSN env-var to be set, and also in practice
requires SSL_CERT_DIR=/etc/ssl/certs if you don't have the certs
installed in guix as well.

Then we set the worker threads to 0 so it sends synchronously, since
otherwise we're about to quit and it'll just get enqueued and never
Change Spam header to Authentication Status header

The way I'm running it is before spam assassin runs right now, but after
opendkim, so instead I just use that status as authoritative.

I've left the Spam Assassin code in there but just commented out for
now, because I may turn it back on later, etc.
Merge branch 'interac'

* interac:
  Interac Email Processor
  Allow Running BlatherNotify in Reactor
  Add PubSub Helpers to BlatherNotify
  Resync Guix Dependencies with Gemfile
  Fixup Correct Duplicate Addrs
Interac Email Processor

This script is expected to be run by piping an email into it and also
giving a dhall config as the first argument. This will contain the JID
and password to connect as, and the pubsub_node to dump the outcome to.

It doesn't write anything directly, it just produces Atom into the
pubsub channel, and the expectation is that some other process will do
something with it; either display the message or the actual handling of
the transaction.

The Email parsing is intentionally very defensive, because the
expectation is that whatever passes this parsing gets turned into credit
in a user's account, so we want to make sure it's all above-board and
bail early if something looks off. It's better to have to manually do
something than to have it do too much on its own.

We've tried to integrate the transaction values into atom as best as we
can, and we've pulled in schema.org for the few things that didn't have
a correlation.
Allow Running BlatherNotify in Reactor

All of the other scripts spin up the reactor in another thread, and then
they do stuff on this thread and use that reactor to have things happen,
so they are happy to have BlatherNotify handle the reactor.

The script I have coming, though, will instead use EM in the course of
it's operation, so it's beneficial that I be able to spin up
BlatherNotify in my reactor which allows me to block until the process
is done there.
Add PubSub Helpers to BlatherNotify

Since we think we may end up struturing a few scripts to push things
into a PubSub node, I wanted to make that as easy as possible.

So the way this works is that at startup we can give it a pubsub node
and server, and then we can call `BlatherNotify.publish` from then on
giving it the thing we want to publish and it'll just push it to the
node we configured.


But if we run into a situation where we want to publish to 2 or more
different pubsub nodes in different situations, we can instead call
`BlatherNotify.pubsub(node, server)` and it'll return us a non-global
thing we can call publish on which will publish to that node
Resync Guix Dependencies with Gemfile

I tried running this under Guix and it didn't even build.
It turns out a lint rule got added that doesn't allow license to have
that value any longer, and a few changes to the dependencies of the
project have been made without those same changes being reflected in the
guix definition. Also, one of the dependencies that made it upstream
works upstream, but fails in our definition due to a bundler version

A few of these changes may even be out of date by now, in terms of both
guix upstream or pointing at branches we don't need to point at due to
upstream taking patches, but I wanted to make the minimal set of changes
here to make the Gemfile and the Guix have the same information.

A later commit can change *both* to point at upstream, etc, if they so
Fixup Correct Duplicate Addrs

This was a linter error, and I wanted to get it to linter clean before
writing new code.
Modernize CI

This was very complicated... I took the build definition from
jmp-register, and I replaced everywhere I saw jmp-register with jmp-pay.

Oh, and made it point at the right repo.
Crafty, huh!?
Modernize guix

I've taken the pattern from jmp-register and imported it over here.
Main takeaways is that there's no module anymore, and there's a
manifest with dev dependencies.

So, basically it's much easier to now just run `guix shell` and have
that work automatically, but also have things like pry!

Even if you wanted to test build, though, it's now the simpler:
  guix build --with-source=$PWD -f guix.scm

Rather than the older version that used `-L.` and had jmp-pay and then
also had to specify that that was the source you were overriding.