module PDC::Request::TokenFetcher

Public Class Methods

curl_easy() click to toggle source
# File lib/pdc/http/request/token_fetcher.rb, line 37
def self.curl_easy
  Curl::Easy.new(url.to_s) do |request|
    request.ssl_verify_peer    = ssl_verify_mode != OpenSSL::SSL::VERIFY_NONE
    request.headers['Accept']  = 'application/json'
    request.http_auth_types    = :gssnegotiate

    # The curl man page (http://curl.haxx.se/docs/manpage.html)
    # specifes setting a fake username when using Negotiate auth,
    # and use ':' in their example.
    request.username = ':'
  end
end
fetch() click to toggle source

uses kerberos token to obtain token from pdc

# File lib/pdc/http/request/token_fetcher.rb, line 22
def self.fetch
  PDC.logger.debug "Fetch token from: #{url}"

  curl = curl_easy
  curl.perform
  if curl.response_code != 200
    PDC.logger.info "Obtain token from #{url} failed: #{curl.body_str}"
    error = { url: url, body: curl.body, code: curl.response_code }
    raise PDC::TokenFetchFailed, error
  end
  result = JSON.parse(curl.body_str)
  curl.close
  result['token']
end