privacygate-ruby
PrivacyGate Ruby Gem
Table of contents
Ruby Version
Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.
Third Party Libraries and Dependencies
The following libraries will be installed when you install the client library:
Installation
Add this line to your application's Gemfile:
gem 'privacygate'
Then execute:
bundle install
Or install it yourself as:
gem install privacygate
Documentation
For more details visit PrivacyGate API docs.
To start using library, you'll need to create a PrivacyGate account.
Once you've created your PrivacyGate account, create an API_KEY
in Settings.
Next create a Client
object for interacting with the API:
require 'privacygate'
API_KEY = "API KEY"
client = PrivacyGate::Client.new(api_key: API_KEY)
Client
contains links to every Ruby Class representations of the API resources
Checkout, Charge, Event
You can call list, auto_paging, create, retrieve, modify
methods from API resource classes
client.charge.create
client.checkout.auto_paging
client.event.list
client.charge.retrieve
client.checkout.modify
as well as save, delete, refresh
methods from API resource class instances.
checkout = client.checkout.retrieve <id>
checkout.refresh
checkout.save
checkout.delete
Each API method returns an APIObject
representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject
subclasses will be used automatically.
All subclasses of APIResource
class support refresh
method. This will update their attributes and all nested data by making a fresh GET
request to the relevant API endpoint.
The client supports handling of common API errors and warnings.
All errors occuring during the interaction with the API will be raised as exceptions.
Error | Status Code |
---|
APIError | * |
InvalidRequestError | 400 |
ParamRequiredError | 400 |
ValidationError | 400 |
AuthenticationError | 401 |
ResourceNotFoundError | 404 |
RateLimitExceededError | 429 |
InternalServerError | 500 |
ServiceUnavailableError | 503 |
Installation
Add this line to your application's Gemfile:
gem 'privacygate'
Then execute:
bundle install
Or install it yourself as:
gem install privacygate
Usage
require 'privacygate'
client = PrivacyGate::Client.new(api_key: 'your_api_key')
Checkouts
Checkouts API docs
Retrieve
checkout = client.checkout.retrieve <checkout_id>
Create
checkout_info = {
"name": "The Sovereign Individual",
"description": "Mastering the Transition to the Information Age",
"pricing_type": "fixed_price",
"local_price": {
"amount": "1.00",
"currency": "USD"
},
"requested_info": ["name", "email"]
}
checkout = client.checkout.create(checkout_info)
checkout = client.checkout.create(:name=>'The Sovereign Individual',
:description=>'Mastering the Transition to the Information Age',
:pricing_type=>'fixed_price',
:local_price=>{
"amount": "100.00",
"currency": "USD"
},
:requested_info=>["name", "email"])
Update
checkout = client.checkout.retrieve <checkout_id>
checkout.name = 'new name'
checkout.save
client.checkout.modify(<checkout_id>, "local_price": {
"amount": "10000.00",
"currency": "USD"
})
Delete
checkout.delete
List
checkouts = client.checkout.list
Paging list iterations
client.checkout.auto_paging do |ch|
puts ch.id
end
Charges
Charges API docs
Retrieve
charge = client.charge.retrieve <charge_id>
Create
charge_info = {
"name": "The Sovereign Individual",
"description": "Mastering the Transition to the Information Age",
"pricing_type": "fixed_price",
"local_price": {
"amount": "1.00",
"currency": "USD"
},
"requested_info": ["name", "email"]
}
charge = client.charge.create(charge_info)
charge = client.charge.create(:name=>'The Sovereign Individual',
:description=>'Mastering the Transition to the Information Age',
:pricing_type=>'fixed_price',
:local_price=>{
"amount": "100.00",
"currency": "USD"
})
List
charges_list = client.charge.list
Paging list iterations
client.charge.auto_paging do |charge|
puts charge.id
end
Events
Events API Docs
Retrieve
event = client.event.retrieve <event_id>
List
events = client.event.list
Paging list iterations
client.event.auto_paging do |event|
puts event.id
end
Validating webhook signatures
You should verify the webhook signatures using our library.
To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret.
In case of an invalid request signature or request payload, you will receive an appropriate error message.
WEBHOOK_SECRET = 'your_webhook_secret'
post '/webhooks' do
request_payload = request.body.read
sig_header = request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']
begin
event = PrivacyGate::Webhook.construct_event(request_payload, sig_header, WEBHOOK_SECRET)
puts "Received event id=#{event.id}, type=#{event.type}"
status 200
rescue JSON::ParserError => e
puts "json parse error"
status 400
return
rescue PrivacyGate::Errors::SignatureVerificationError => e
puts "signature verification error"
status 400
return
rescue PrivacyGate::Errors::WebhookInvalidPayload => e
puts "missing request or headers data"
status 400
return
end
end
Testing and Contributing
Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then: