Skip to content

Patreon/patreon-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

patreon-ruby

Caution

This package is deprecated. It uses Patreon API v1, which is deprecated and no longer maintained. This SDK will not receive further updates.

We recommend migrating to the Patreon API v2 by integrating directly using your own HTTP client. See the API documentation and v1 to v2 migration overview for details.


Interact with the Patreon API via OAuth.

Get the gem from RubyGems

Step 1. Get your client_id and client_secret

Visit the OAuth Documentation Page while logged in as a Patreon creator to register your client.

This will provide you with a client_id and a client_secret.

Step 2. Use this library

e.g. the example Sinatra app in this repo or the Rails route example below.


require 'patreon'

class OAuthController < ApplicationController
  def redirect
    oauth_client = Patreon::OAuth.new(client_id, client_secret)
    tokens = oauth_client.get_tokens(params[:code], redirect_uri)
    access_token = tokens['access_token']

    api_client = Patreon::API.new(access_token)
    user_response = api_client.fetch_user()
    # user_response uses [json-api-vanilla](https://github.com/trainline/json-api-vanilla) for easy usage
    @user = user_response.data
    # you can list all attributes and relationships with (@user.methods - Object.methods)
    @pledge = @user.pledges[0]
    # just like with @user, you can list all pledge attributes and relationships with (@pledge.methods - Object.methods)
    @pledge_amount = @pledge.amount_cents
  end
end

Step 3. (Optional) Customize your usage

Patreon::API instances have four methods:

  • fetch_user(includes=nil, fields=nil)
  • fetch_campaign(includes=nil, fields=nil)
  • fetch_campaign_and_patrons(includes=nil, fields=nil)
  • fetch_page_of_pledges(campaign_id, page_size, cursor=nil, includes=nil, fields=nil)

The includes and fields arguments to these methods specify the related resources and the resource attributes you want returned by our API, as per the JSON:API specification. The lists of valid includes and fields arguments are provided on Patreon::Schemas. For instance, if you wanted to request the total amount a patron has ever paid to your campaign, which is not included by default, you could do:

api_client = Patreon::API.new(patron_access_token)
patron_response = api_client.fetch_user(nil, {
  'pledge': Patreon::Schemas::Pledge.default_attributes + [Patreon::Schemas::Pledge::Attributes::TOTAL_HISTORICAL_AMOUNT_CENTS]
})

About

Interact with the Patreon API via OAuth

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors