File: //var/cache/puppet/lib/puppet/functions/get_token.rb
require 'net/http'
require 'uri'
require 'json'
Puppet::Functions.create_function(:'get_token') do
dispatch :http_request do
param 'Stdlib::HTTPUrl', :url
param 'String', :token
end
def http_request(url, token)
uri = URI(url)
host = uri.host
port = uri.port
path = uri.path
scheme = uri.scheme
res = Net::HTTP.start(host, port, :use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Get.new(uri.request_uri)
request['Authorization'] = "Bearer #{token}"
http.request(request)
end
unless res.is_a?(Net::HTTPSuccess) or res.is_a?(Net::HTTPForbidden)
raise Puppet::Error, "get_token(): #{scheme}://#{host}:#{port}#{path} returned #{res.code} #{res.message}"
end
begin
JSON.parse(res.body)['SecretID']
rescue
""
end
end
end
# vim: et ts=8 sts=2 sw=2 fdm=marker