class NexusCli::Connection

def initialize(configuration, ssl_verify)

def initialize(configuration, ssl_verify)
  @configuration = configuration
  @ssl_verify = ssl_verify
  @nexus = setup_nexus(configuration)
end

def nexus_url(url)

Returns:
  • (String) -

Parameters:
  • url (String) --
def nexus_url(url)
  File.join(configuration['url'], url)
end

def running_nexus_pro?

connected to is running Nexus Pro.
Determines whether or not the Nexus server being
def running_nexus_pro?
  status['edition_long'] == "Professional"
end

def sanitize_for_id(unsanitized_string)

Returns:
  • (String) - the sanitized String

Parameters:
  • unsanitized_string (String) -- the String to sanitize
def sanitize_for_id(unsanitized_string)
  unsanitized_string.gsub(" ", "_").downcase
end

def setup_nexus(configuration)

Returns:
  • (HTTPClient) -
def setup_nexus(configuration)
  client = HTTPClient.new
  client.send_timeout = 6000
  client.receive_timeout = 6000
  if configuration['username'] and configuration['password']
    # https://github.com/nahi/httpclient/issues/63
    client.set_auth(nil, configuration['username'], configuration['password'])
    client.www_auth.basic_auth.challenge(configuration['url'])
  end
  client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE unless ssl_verify
  client
end

def status

Returns:
  • (Hash) -
def status
  response = nexus.get(nexus_url("service/local/status"))
  case response.status
  when 200
    doc = REXML::Document.new(response.content).elements["/status/data"]
    data = Hash.new
    data['app_name'] = doc.elements["appName"].text
    data['version'] = doc.elements["version"].text
    data['edition_long'] = doc.elements["editionLong"].text
    data['state'] = doc.elements["state"].text
    data['started_at'] = doc.elements["startedAt"].text
    data['base_url'] = doc.elements["baseUrl"].text
    return data
  when 401
    raise PermissionsException
  when 503
    raise CouldNotConnectToNexusException
  else
    raise UnexpectedStatusCodeException.new(response.status)
  end
end