Reverb
Reverb provides a generic interface for responding to API requests.
Setup
$ bundle install
Run Specs
$ bundle exec rake
Interface
Simply inherit from Reverb::Response
:
class MyResponse < Reverb::Response
def on_success
# Process data here.
self.data = MyClass.new(body['requested-data'])
end
end
Responses expect to be passed a response object, but do not require them so that they can be generated with FactoryGirl.
The success
method is provided purely for the purposes
of factory generation and should not be used for any other use.
The only methods that are considered part of the public API are:
success?
status
data
on_success
scrub
scrubbed
on_success
only gets called if success?
is true.
We recommend that the data set in on_success
is a ruby object
(or array of ruby objects) with specific attributes for that request.
See brainzz for an example.
Factories
Reverb includes FactoryGirl factories for your convenience. Include them after requiring FactoryGirl:
require 'reverb/factories'
Sensitive Data
Responses may be scrubbed to remove sensitive data such as credentials.
Use response.scrubbed
to access the 'scrubbed' version of the response.
By default, Reverb will scrub etags.
To turn this off, set scrub_etags
to false in a configuration block:
Reverb.configure do |config|
config. = false
end
To turn off scrubbing entirely, set scrub
to false a configuration block:
This will cause no scrubbing to occur, even if scrub_etags
is set to true.
Reverb.configure do |config|
config.scrub = false
end
To scrub custom values, simply call scrub
with the regex/string
to scrub and a replacement string.
response = Reverb::Response.new(original_response)
response.scrub 'sensitive-string', 'YOU_CANT_SEE_ME'
The code above will replace all occurences of 'sensitive-string' with 'YOU_CANT_SEE_ME'.
Deployment
This project makes use of branches to manage deployment.
Pushing a new commit to the production
branch
will also build and push this gem to RubyGems.