GithubHelp home page GithubHelp logo

doytsujin / patreon-ruby Goto Github PK

View Code? Open in Web Editor NEW

This project forked from patreon/patreon-ruby

0.0 1.0 0.0 90 KB

Interact with the Patreon API via OAuth

License: Apache License 2.0

Ruby 98.47% HTML 1.53%

patreon-ruby's Introduction

patreon-ruby

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]
})

patreon-ruby's People

Contributors

21echoes avatar phildini avatar joshbuddy avatar emosespatreon avatar evykassirer avatar neauoire avatar kakakikikeke-fork avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.