class MailChimp3::OAuth

Public Class Methods

new() click to toggle source
# File lib/mailchimp3/oauth.rb, line 6
def initialize
  @oauth = OAuth2::Client.new(
    MailChimp3.config.client_id,
    MailChimp3.config.client_secret,
    site: 'https://login.mailchimp.com',
    authorize_url: '/oauth2/authorize',
    token_url: '/oauth2/token'
  )
end

Public Instance Methods

authorize_url(redirect_uri:, state: nil) click to toggle source
# File lib/mailchimp3/oauth.rb, line 16
def authorize_url(redirect_uri:, state: nil)
  params = {
    redirect_uri: redirect_uri,
    state: state,
  }.compact

  @oauth.auth_code.authorize_url(params)
end
complete_auth(code, redirect_uri:) click to toggle source
# File lib/mailchimp3/oauth.rb, line 25
def complete_auth(code, redirect_uri:)
  token = @oauth.auth_code.get_token(
    code,
    redirect_uri: redirect_uri
  )
  {
    token: token,
    token_string: token.token,
    metadata: metadata(token)
  }
end

Private Instance Methods

metadata(token) click to toggle source
# File lib/mailchimp3/oauth.rb, line 39
def metadata(token)
  JSON.parse(token.get('/oauth2/metadata').body).tap do |hash|
    hash.keys.each do |key|
      hash[key.to_sym] = hash.delete(key)
    end
  end
end