This is an OmniAuth strategy for authenticating to ShipBob.
Requires Ruby >= 3.2, OmniAuth 2.x and omniauth-oauth2 1.9.x.
Add this line to your application's Gemfile:
gem 'omniauth-shipbob'And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth-shipbob
OmniAuth 2 only accepts POST for the request phase. In a Rails app, add
omniauth-rails_csrf_protection
to your Gemfile and link to the provider with button_to or link_to ..., method: :post:
gem 'omniauth-rails_csrf_protection'Rails.application.config.middleware.use OmniAuth::Builder do
provider :shipbob,
'client_id', 'client_secret',
:callback_url => 'http://example.test/auth/shipbob/callback',
:scope => 'scopes-list'
endYou can configure integration_name through the authorize_params hash:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :shipbob,
'client_id', 'client_secret',
:callback_url => 'http://example.test/auth/shipbob/callback',
:scope => 'scopes-list',
:authorize_params => {:integration_name => 'my-application-name' }
endapi_url sets the host the strategy calls to look up the channel id that lands in
credentials['channel_id']. It defaults to https://api.shipbob.com/1.0.
Configure these options to use ShipBob's sandbox environment.
Rails.application.config.middleware.use OmniAuth::Builder do
provider :shipbob,
...,
api_url: 'https://sandbox-api.shipbob.com/2.0',
client_options: {
site: 'https://authstage.shipbob.com'
},
endAfter checking out the repo, run bin/setup to install dependencies. Then, run bundle exec rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install.
Releases are cut from the GitHub Releases UI;
GitHub Actions builds and publishes the gem to rubygems.org via
RubyGems trusted publishing, so no API
key is stored in the repo and the gemspec can keep rubygems_mfa_required.
- Bump
VERSIONinlib/omniauth-shipbob/version.rband add aCHANGELOG.mdsection for it, along with a link definition for the new heading at the bottom of that file. Commit both onmaster. - Draft a new release with the target set to
masterand the tag set to the version prefixed withv—v0.1.0, not0.1.0. The prefix is stripped before comparing againstversion.rb; the gem version itself carries nov. - Click Generate release notes — the preferred method — then publish. The generated
notes list the merged pull requests;
CHANGELOG.mdcarries the curated prose and links back to each release.
Publishing creates the tag, which fires the Release workflow: it reruns the full test
matrix, refuses to continue if the tag and version.rb disagree, and pushes the gem.
Note that RubyGems versions are immutable — a bad release can be yanked, never replaced,
so the version bump has to be committed before the release is published.
Already configured, and only needed again if the gem is renamed or moved: on rubygems.org
open the gem -> Trusted publishers -> Create, with owner dropstream, repository
omniauth-shipbob, workflow release.yml, and environment release. The repo also needs
an environment named release.
Bug reports and pull requests are welcome on GitHub at https://github.com/dropstream/omniauth-shipbob.
Available as open source under the terms of the MIT License.