class RightScaleCLI::Refresh

Represents an API token refresh

Public Class Methods

banner(task, _namespace = true, subcommand = false) click to toggle source
new(*args) click to toggle source

namespace :volumes

Calls superclass method
# File lib/rightscale_cli/refresh.rb, line 30
def initialize(*args)
  super
  # @client = RightScaleCLI::Client.new(options)
  @logger = RightScaleCLI::Logger.new
  @config = RightScaleCLI::Config.new
  @directives = @config.directives
end

Public Instance Methods

token() click to toggle source
# File lib/rightscale_cli/refresh.rb, line 40
def token
  token_endpoint = @directives[:token_endpoint]
  refresh_token = @directives[:refresh_token]
  @logger.info "Requesting API token from #{token_endpoint}"
  uri = URI.parse(token_endpoint)
  https = Net::HTTP.new(uri.host, uri.port)
  https.set_debug_output($stdout) if options[:debug]
  https.use_ssl = true
  request = Net::HTTP::Post.new(uri.path)
  request['X-API-Version'] = '1.5'
  request.set_form_data(grant_type: 'refresh_token',
                        refresh_token: refresh_token)
  response = https.request(request)
  access_token = JSON.parse(response.body)['access_token']
  @directives[:access_token] = access_token
  File.open(@config.config_path, 'w') {|f| f.write(ERB.new(IO.read(@config.template_path)).result(binding)) }
  @logger.info 'API token refreshed.'
end