Sha256: d5bf59c10134941b8a7d60a756b57ec59aa60071f7934aaf7af662a7ccbfce87
Contents?: true
Size: 2 KB
Versions: 3
Compression:
Stored size: 2 KB
Contents
# encoding: utf-8 module RDStation class Authentication include HTTParty AUTH_TOKEN_URL = 'https://api.rd.services/auth/token'.freeze DEFAULT_HEADERS = { 'Content-Type' => 'application/json' }.freeze def initialize(client_id, client_secret) @client_id = client_id @client_secret = client_secret end # # param redirect_url # URL that the user will be redirected # after confirming application authorization # def auth_url(redirect_url) "https://api.rd.services/auth/dialog?client_id=#{@client_id}&redirect_url=#{redirect_url}" end # 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. def authenticate(code) response = post_to_auth_endpoint(code: code) parsed_body = JSON.parse(response.body) return parsed_body unless parsed_body['errors'] RDStation::ErrorHandler.new(response).raise_errors end # # param refresh_token # parameter sent by RDStation after authenticate # def update_access_token(refresh_token) response = post_to_auth_endpoint(refresh_token: refresh_token) parsed_body = JSON.parse(response.body) return parsed_body unless parsed_body['errors'] RDStation::ErrorHandler.new(response).raise_errors end private 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rdstation-ruby-client-1.1.0 | lib/rdstation/authentication.rb |
rdstation-ruby-client-1.0.1 | lib/rdstation/authentication.rb |
rdstation-ruby-client-1.0.0 | lib/rdstation/authentication.rb |