WIP This is just whatever junk was in my working tree and is not a real commit.
Helper to allow ordering phone number from Bandwidth v2 Uses their gem which uses Faraday. Set Faraday to em-synchrony so their gem is now using EventMachine but still sync so their code will work unchanged. Wrap all uses of the gem in EM.promise_fiber to get a promise back out of that. Implement a poll helper that can wait until a new order is complete at Bandwidth before continuing. They support an HTTP callback method, but only global on account? This is much easier to work with in our context.
Helper to get a promise that resolves after N seconds
Every payment kind will need the plan, so put it at the top
Use registration pattern for Payment kinds Instead of a hard-coded case statement.
Method to bill the plan of a Customer Bills their balance for the cost of one month of plan. Activates the plan by insert into plan_log, unless already active in which case extends current plan by one month.
Use Forwardable for simple delegations
Helper to allow using sync-style code in a Promise context This helper spins up a fiber and returns an unresolved EMPromise, then runs the passed-in block inside the fiber and fulfills the promise with the result of the block. Because nothing is looking for the Fiber to return it is free to act as a trampoline for EMPromise#sync and other fiber-sync-style code that does not block the EM reactor.
New signup: go to web to choose credit card This step, if chosen, directs the user to the jmp-pay webapp to add a credit card. It includes an OOB element for use by user agents that can handle that (possibly for webview embed, etc) with a note-based fallback as per XEP. Once the user chooses "next" the code checks if they have actually added a card, and if so continues to a yet-unimplemented step and if not repeats the instruction to go to the web app.
Merge branch 'register-command-first-pass' * register-command-first-pass: Add sourcehut CI Add Rakefile to run all tests Initial registration flow for Bitcoin Registrations that start on the web will have a tel selected already Helpers for doing Electrum RPC Add helper to fetch current BTC sell prices Allow skipping tests without being caught in pry
Initial registration flow for Bitcoin This is the Bitcoin "happy path" where there is already a tel and a customer_id. Gets all the way to generating a BTC address for payment and quoting an amount. Stubs out flows for credit card and activation code as well, but does not implement those flows. TBD: after bitcoin payment comes in and jmp-pay activates the account, we should come back here to actually buy the number, select a new one if no longer available, etc.
Registrations that start on the web will have a tel selected already So, manage any already-known tel selections and allow registration to use them right away. In the future this will fall back to letting the user search for a tel over XMPP, but that is not implemented here.
Helpers for doing Electrum RPC
Add helper to fetch current BTC sell prices Scrapes the sell price for Bitcoin from canadianbitcoins.com USD price is done by converting this CAD sell price to USD via openexchangerates
Split logic out into testable objects Rubocop clean. Good test coverage of helper objects.