Skip to content

bloom-solutions/paxful_engine-rails

Repository files navigation

PaxfulEngine

A mountable Rails engine that saves completed trades from paxful marketplace and lets you do anything with it.

Installation

Add this line to your application's Gemfile:

gem 'paxful_engine-rails'

And then execute:

$ bundle
$ rails paxful_engine:install:migrations
$ rails db:migrate

Or install it yourself as:

$ gem install paxful_engine-rails

Configuration

Create an initializer in your Rails application:

# config/initializers/paxful_engine-rails.rb

PaxfulEngine.configure do |c|
  c.paxful_key = "your paxful key"
  c.paxful_secret = "your paxful secret"
  c.on_sync_callback = "SyncCallback"
  c.on_failure_callback = "FailureCallback"
end

c.on_sync_callback

An object that responds to call that gets executed after a trade is (re)processed. It accepts a Trade as its only argument.

# example
class SyncCallback

  def self.call(trade)
    # do anything you want with this record
  end

end

c.on_failure_callback

An object that responds to call that gets executed when a trade cannot be created.

It accepts two arguments:

  • exception
  • payload
# example
class FailureCallback

  def self.call(e, payload)
    # log somewhere...
  end

end

Usage

Add this to your scheduler somewhere:

# sidekiq_cron.yml
refresh_paxful_order_book:
  cron: "*/2 * * * * Asia/Singapore" # runs every 2 minutes
  class: "PaxfulEngine::SyncOrderBookJob"

From the host app:

  • Check list of trades at /paxful_engine/trades.
  • Details per trade at /paxful_engine/trades/:id.

Development

$ rails db:create db:migrate db:test:prepare

If you need to re-record cassettes, cp .env{,.local} and edit the values.

Testing

$ bundle exec rspec spec

License

The gem is available as open source under the terms of the MIT License.

About

Mountable engine that fetches completed paxful trades

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •