class RDStation::Authentication
Constants
- AUTH_TOKEN_URL
- DEFAULT_HEADERS
- REVOKE_URL
Public Class Methods
new(client_id = nil, client_secret = nil)
click to toggle source
# File lib/rdstation/authentication.rb, line 10 def initialize(client_id = nil, client_secret = nil) warn_deprecation if client_id || client_secret @client_id = client_id || RDStation.configuration&.client_id @client_secret = client_secret || RDStation.configuration&.client_secret end
revoke(access_token:)
click to toggle source
# File lib/rdstation/authentication.rb, line 52 def self.revoke(access_token:) response = self.post( REVOKE_URL, body: revoke_body(access_token), headers: revoke_headers(access_token) ) ApiResponse.build(response) end
Private Class Methods
revoke_body(access_token)
click to toggle source
# File lib/rdstation/authentication.rb, line 63 def self.revoke_body(access_token) URI.encode_www_form({ token: access_token, token_type_hint: 'access_token' }) end
revoke_headers(access_token)
click to toggle source
# File lib/rdstation/authentication.rb, line 70 def self.revoke_headers(access_token) { "Authorization" => "Bearer #{access_token}", "Content-Type" => "application/x-www-form-urlencoded" } end
Public Instance Methods
auth_url(redirect_url)
click to toggle source
param redirect_url
URL that the user will be redirected after confirming application authorization
# File lib/rdstation/authentication.rb, line 21 def auth_url(redirect_url) "https://api.rd.services/auth/dialog?client_id=#{@client_id}&redirect_url=#{redirect_url}" end
authenticate(code)
click to toggle source
Public: Get the credentials from RD Station API
code - The code String sent by RDStation
after the user confirms authorization.
Examples
authenticate("123") # => { 'access_token' => '54321', 'expires_in' => 86_400, 'refresh_token' => 'refresh' }
Returns the credentials Hash. Raises RDStation::Error::ExpiredCodeGrant
if the code has expired Raises RDStation::Error::InvalidCredentials
if the client_id, client_secret or code is invalid.
# File lib/rdstation/authentication.rb, line 38 def authenticate(code) response = post_to_auth_endpoint(code: code) ApiResponse.build(response) end
update_access_token(refresh_token)
click to toggle source
param refresh_token
parameter sent by RDStation after authenticate
# File lib/rdstation/authentication.rb, line 47 def update_access_token(refresh_token) response = post_to_auth_endpoint(refresh_token: refresh_token) ApiResponse.build(response) end
Private Instance Methods
post_to_auth_endpoint(params)
click to toggle source
# File lib/rdstation/authentication.rb, line 77 def post_to_auth_endpoint(params) default_body = { client_id: @client_id, client_secret: @client_secret } body = default_body.merge(params) self.class.post( AUTH_TOKEN_URL, body: body.to_json, headers: DEFAULT_HEADERS ) end
warn_deprecation()
click to toggle source
# File lib/rdstation/authentication.rb, line 88 def warn_deprecation warn "DEPRECATION WARNING: Providing client_id and client_secret directly to RDStation::Authentication.new is deprecated and will be removed in future versions. Use RDStation.configure instead." end