class NexusAPI::API

Constants

TEAM_CONFIG

Attributes

connection[RW]
docker[RW]
protocol[RW]
team_config[RW]

Public Class Methods

new(username:, password:, hostname:, docker_pull_hostname: nil, docker_push_hostname: nil, team_config: nil, protocol: "https") click to toggle source
# File lib/nexus_api.rb, line 18
def initialize(username:, password:, hostname:, docker_pull_hostname: nil, docker_push_hostname: nil, team_config: nil, protocol: "https")
  @protocol = protocol
  @connection = NexusAPI::NexusConnection.new(
    username: username,
    password: password,
    hostname: hostname,
    protocol: protocol,
  )
  if docker_pull_hostname.nil? || docker_push_hostname.nil?
    @docker = nil
  else
    @docker = NexusAPI::DockerManager.new(
      docker: NexusAPI::DockerShell.new,
      options: {
        'username' => username,
        'password' => password,
        'pull_host' => docker_pull_hostname,
        'push_host' => docker_push_hostname,
      }
    )
  end
  team_config ||= TEAM_CONFIG
  @team_config = NexusAPI::ConfigManager.new(config_path: team_config)
end

Public Instance Methods

associate_tag(name:, sha1: nil, repository: nil, tag: nil) click to toggle source

POST /service/rest/v1/tags/associate/{tagName}

# File lib/endpoints/tags.rb, line 33
def associate_tag(name:, sha1: nil, repository: nil, tag: nil)
  repository ||= @team_config.tag_repository
  if sha1.nil? && repository.nil? && tag.nil?
    puts_error(__method__)
    return false
  end

  search_query = "?wait=true"
  search_query += "&sha1=#{sha1}" unless sha1.nil?
  search_query += "&repository=#{repository}" unless repository.nil?
  search_query += "&tag=#{tag}" unless tag.nil?

  @connection.post(endpoint: "tags/associate/#{name}" + search_query)
end
create_privilege_repository_view(name:, description: nil, actions: ['READ'], format: '*', repository: '*') click to toggle source

POST /service/rest/beta/security/privileges/application PUT /service/rest/beta/security/privileges/application/{privilegeId} POST /service/rest/beta/security/privileges/repository-admin PUT /service/rest/beta/security/privileges/repository-admin/{privilegeId} POST /service/rest/beta/security/privileges/repository-content-selector PUT /service/rest/beta/security/privileges/repository-content-selector/{privilegeId} POST /service/rest/beta/security/privileges/repository-view

# File lib/endpoints/privileges.rb, line 25
def create_privilege_repository_view(name:, description: nil, actions: ['READ'], format: '*', repository: '*')
  parameters = {
    # The name is also used as the privilege_id
    'name' => name,
    'description' => description,
    # READ, BROWSE, EDIT, ADD, DELETE, RUN, ASSOCIATE, DISASSOCIATE, ALL
    'actions' => actions,
    # The repository format (i.e 'nuget', 'npm') this privilege will grant access to (or * for all)
    'format' => format,
    # The name of the repository this privilege will grant access to (or * for all)
    'repository' => repository
  }
  @connection.post(endpoint: 'security/privileges/repository-view', parameters: parameters, api_version: 'beta')
end
create_repository_docker_group(name:, members:, options: {}) click to toggle source

POST /service/rest/beta/repositories/{repositoryName}/health-check DELETE /service/rest/beta/repositories/{repositoryName}/health-check POST /service/rest/beta/repositories/{repositoryName}/invalidate-cache POST /service/rest/beta/repositories/{repositoryName}/rebuild-index POST /service/rest/beta/repositories/apt/hosted PUT /service/rest/beta/repositories/apt/hosted/{repositoryName} POST /service/rest/beta/repositories/apt/proxy PUT /service/rest/beta/repositories/apt/proxy/{repositoryName} POST /service/rest/beta/repositories/bower/group PUT /service/rest/beta/repositories/bower/group/{repositoryName} POST /service/rest/beta/repositories/bower/hosted PUT /service/rest/beta/repositories/bower/hosted/{repositoryName} POST /service/rest/beta/repositories/bower/proxy PUT /service/rest/beta/repositories/bower/proxy/{repositoryName} POST /service/rest/beta/repositories/cocoapods/proxy PUT /service/rest/beta/repositories/cocoapods/proxy/{repositoryName} POST /service/rest/beta/repositories/conan/proxy PUT /service/rest/beta/repositories/conan/proxy/{repositoryName} POST /service/rest/beta/repositories/docker/group

# File lib/endpoints/repositories.rb, line 39
def create_repository_docker_group(name:, members:, options: {})
  parameters = ParameterBuilder.docker_group(name, members, options)
  create('repositories/docker/group', parameters)
end
create_repository_docker_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/docker/group/{repositoryName} POST /service/rest/beta/repositories/docker/hosted

# File lib/endpoints/repositories.rb, line 46
def create_repository_docker_hosted(name:, options: {})
  parameters = ParameterBuilder.docker_hosted(name, options)
  create('repositories/docker/hosted', parameters)
end
create_repository_docker_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/docker/hosted/{repositoryName} POST /service/rest/beta/repositories/docker/proxy

# File lib/endpoints/repositories.rb, line 53
def create_repository_docker_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.docker_proxy(name, remote_url, options)
  create('repositories/docker/proxy', parameters)
end
create_repository_maven_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/docker/proxy/{repositoryName} POST /service/rest/beta/repositories/gitlfs/hosted PUT /service/rest/beta/repositories/gitlfs/hosted/{repositoryName} POST /service/rest/beta/repositories/go/group PUT /service/rest/beta/repositories/go/group/{repositoryName} POST /service/rest/beta/repositories/go/proxy PUT /service/rest/beta/repositories/go/proxy/{repositoryName} POST /service/rest/beta/repositories/helm/hosted PUT /service/rest/beta/repositories/helm/hosted/{repositoryName} POST /service/rest/beta/repositories/helm/proxy PUT /service/rest/beta/repositories/helm/proxy/{repositoryName} POST /service/rest/beta/repositories/maven/group

# File lib/endpoints/repositories.rb, line 70
def create_repository_maven_group(name:, members:, options: {})
  parameters = ParameterBuilder.maven_group(name, members, options)
  create('repositories/maven/group', parameters)
end
create_repository_maven_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/maven/group/{repositoryName} POST /service/rest/beta/repositories/maven/hosted

# File lib/endpoints/repositories.rb, line 77
def create_repository_maven_hosted(name:, options: {})
  parameters = ParameterBuilder.maven_hosted(name, options)
  create('repositories/maven/hosted', parameters)
end
create_repository_maven_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/maven/hosted/{repositoryName} POST /service/rest/beta/repositories/maven/proxy

# File lib/endpoints/repositories.rb, line 84
def create_repository_maven_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.maven_proxy(name, remote_url, options)
  create('repositories/maven/proxy', parameters)
end
create_repository_npm_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/maven/proxy/{repositoryName} POST /service/rest/beta/repositories/npm/group

# File lib/endpoints/repositories.rb, line 91
def create_repository_npm_group(name:, members:, options: {})
  parameters = ParameterBuilder.npm_group(name, members, options)
  create('repositories/npm/group', parameters)
end
create_repository_npm_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/npm/group/{repositoryName} POST /service/rest/beta/repositories/npm/hosted

# File lib/endpoints/repositories.rb, line 98
def create_repository_npm_hosted(name:, options: {})
  parameters = ParameterBuilder.npm_hosted(name, options)
  create('repositories/npm/hosted', parameters)
end
create_repository_npm_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/npm/hosted/{repositoryName} POST /service/rest/beta/repositories/npm/proxy

# File lib/endpoints/repositories.rb, line 105
def create_repository_npm_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.npm_proxy(name, remote_url, options)
  create('repositories/npm/proxy', parameters)
end
create_repository_pypi_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/npm/proxy/{repositoryName} POST /service/rest/beta/repositories/nuget/group PUT /service/rest/beta/repositories/nuget/group/{repositoryName} POST /service/rest/beta/repositories/nuget/hosted PUT /service/rest/beta/repositories/nuget/hosted/{repositoryName} POST /service/rest/beta/repositories/nuget/proxy PUT /service/rest/beta/repositories/nuget/proxy/{repositoryName} POST /service/rest/beta/repositories/p2/proxy PUT /service/rest/beta/repositories/p2/proxy/{repositoryName} POST /service/rest/beta/repositories/pypi/group

# File lib/endpoints/repositories.rb, line 120
def create_repository_pypi_group(name:, members:, options: {})
  parameters = ParameterBuilder.pypi_group(name, members, options)
  create('repositories/pypi/group', parameters)
end
create_repository_pypi_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/pypi/group/{repositoryName} POST /service/rest/beta/repositories/pypi/hosted

# File lib/endpoints/repositories.rb, line 127
def create_repository_pypi_hosted(name:, options: {})
  parameters = ParameterBuilder.pypi_hosted(name, options)
  create('repositories/pypi/hosted', parameters)
end
create_repository_pypi_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/pypi/hosted/{repositoryName} POST /service/rest/beta/repositories/pypi/proxy

# File lib/endpoints/repositories.rb, line 134
def create_repository_pypi_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.pypi_proxy(name, remote_url, options)
  create('repositories/pypi/proxy', parameters)
end
create_repository_raw_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/pypi/proxy/{repositoryName} POST /service/rest/beta/repositories/r/group PUT /service/rest/beta/repositories/r/group/{repositoryName} POST /service/rest/beta/repositories/r/hosted PUT /service/rest/beta/repositories/r/hosted/{repositoryName} POST /service/rest/beta/repositories/r/proxy PUT /service/rest/beta/repositories/r/proxy/{repositoryName} POST /service/rest/beta/repositories/raw/group

# File lib/endpoints/repositories.rb, line 147
def create_repository_raw_group(name:, members:, options: {})
  parameters = ParameterBuilder.raw_group(name, members, options)
  create('repositories/raw/group', parameters)
end
create_repository_raw_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/raw/group/{repositoryName} POST /service/rest/beta/repositories/raw/hosted

# File lib/endpoints/repositories.rb, line 154
def create_repository_raw_hosted(name:, options: {})
  parameters = ParameterBuilder.raw_hosted(name, options)
  create('repositories/raw/hosted', parameters)
end
create_repository_raw_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/raw/hosted/{repositoryName} POST /service/rest/beta/repositories/raw/proxy

# File lib/endpoints/repositories.rb, line 161
def create_repository_raw_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.raw_proxy(name, remote_url, options)
  create('repositories/raw/proxy', parameters)
end
create_repository_rubygems_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/raw/proxy/{repositoryName} POST /service/rest/beta/repositories/rubygems/group

# File lib/endpoints/repositories.rb, line 168
def create_repository_rubygems_group(name:, members:, options: {})
  parameters = ParameterBuilder.rubygems_group(name, members, options)
  create('repositories/rubygems/group', parameters)
end
create_repository_rubygems_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/rubygems/group/{repositoryName} POST /service/rest/beta/repositories/rubygems/hosted

# File lib/endpoints/repositories.rb, line 175
def create_repository_rubygems_hosted(name:, options: {})
  parameters = ParameterBuilder.rubygems_hosted(name, options)
  create('repositories/rubygems/hosted', parameters)
end
create_repository_rubygems_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/rubygems/hosted/{repositoryName} POST /service/rest/beta/repositories/rubygems/proxy

# File lib/endpoints/repositories.rb, line 182
def create_repository_rubygems_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.rubygems_proxy(name, remote_url, options)
  create('repositories/rubygems/proxy', parameters)
end
create_repository_yum_group(name:, members:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/rubygems/proxy/{repositoryName} POST /service/rest/beta/repositories/yum/group

# File lib/endpoints/repositories.rb, line 189
def create_repository_yum_group(name:, members:, options: {})
  parameters = ParameterBuilder.yum_group(name, members, options)
  create('repositories/yum/group', parameters)
end
create_repository_yum_hosted(name:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/yum/group/{repositoryName} POST /service/rest/beta/repositories/yum/hosted

# File lib/endpoints/repositories.rb, line 196
def create_repository_yum_hosted(name:, options: {})
  parameters = ParameterBuilder.yum_hosted(name, options)
  create('repositories/yum/hosted', parameters)
end
create_repository_yum_proxy(name:, remote_url:, options: {}) click to toggle source

PUT /service/rest/beta/repositories/yum/hosted/{repositoryName} POST /service/rest/beta/repositories/yum/proxy

# File lib/endpoints/repositories.rb, line 203
def create_repository_yum_proxy(name:, remote_url:, options: {})
  parameters = ParameterBuilder.yum_proxy(name, remote_url, options)
  create('repositories/yum/proxy', parameters)
end
create_role(id:, name:, description: nil, privileges: [], roles: []) click to toggle source

POST /service/rest/beta/security/roles

# File lib/endpoints/roles.rb, line 9
def create_role(id:, name:, description: nil, privileges: [], roles: [])
  parameters = {
    'id' => id,
    'name' => name,
    'description' => description,
    'privileges' => privileges,
    'roles' => roles
  }
  @connection.post(endpoint: 'security/roles', parameters: parameters, api_version: 'beta')
end
create_tag(name:) click to toggle source

POST /service/rest/v1/tags

# File lib/endpoints/tags.rb, line 18
def create_tag(name:)
  parameters = {
    'name' => name,
  }
  @connection.post(endpoint: 'tags', parameters: parameters)
end
create_user(user_id:, first_name:, last_name:, email:, password:, roles:) click to toggle source

POST /service/rest/beta/security/users

# File lib/endpoints/users.rb, line 9
def create_user(user_id:, first_name:, last_name:, email:, password:, roles:)
  parameters = {
    'userId' => user_id,
    'firstName' => first_name,
    'lastName' => last_name,
    'emailAddress' => email,
    'password' => password,
    'status' => 'active',
    'roles' => roles,
  }
  @connection.post(endpoint: 'security/users', parameters: parameters, api_version: 'beta')
end
delete_associated_tag(name:, sha1: nil, repository: nil, tag: nil) click to toggle source

DELETE /service/rest/v1/tags/associate/{tagName}

# File lib/endpoints/tags.rb, line 49
def delete_associated_tag(name:, sha1: nil, repository: nil, tag: nil)
  repository ||= @team_config.tag_repository
  parameters = {}
  parameters['sha1'] = sha1 unless sha1.nil?
  parameters['repository'] = repository unless repository.nil?
  parameters['tag'] = tag unless tag.nil?
  if parameters.empty?
    puts_error(__method__)
    return false
  end

  search_query = parameters.map do |parameter, value|
    "#{parameter}=#{value}"
  end.join("&")

  @connection.delete(endpoint: "tags/associate/#{name}?" + search_query)
end
delete_local_docker_image(image:, tag:) click to toggle source
# File lib/nexus_api.rb, line 67
def delete_local_docker_image(image:, tag:)
  @docker.delete(image_name: image, tag: tag) if docker_ready?
end
delete_privilege(privilege_id:) click to toggle source

DELETE /service/rest/beta/security/privileges/{privilegeId}

# File lib/endpoints/privileges.rb, line 14
def delete_privilege(privilege_id:)
  @connection.delete(endpoint: "security/privileges/#{privilege_id}", api_version: 'beta')
end
delete_repository(name:) click to toggle source

DELETE /service/rest/beta/repositories/{repositoryName}

# File lib/endpoints/repositories.rb, line 16
def delete_repository(name:)
  @connection.delete(endpoint: "repositories/#{name}", api_version: 'beta')
end
delete_role(id:) click to toggle source

PUT /service/rest/beta/security/roles/{id} DELETE /service/rest/beta/security/roles/{id}

# File lib/endpoints/roles.rb, line 27
def delete_role(id:)
  @connection.delete(endpoint: "security/roles/#{id}", api_version: 'beta')
end
delete_script(name:) click to toggle source

GET /service/rest/v1/script/{name} PUT /service/rest/v1/script/{name} DELETE /service/rest/v1/script/{name}

# File lib/endpoints/script.rb, line 18
def delete_script(name:)
  @connection.delete(endpoint: "script/#{name}")
end
delete_tag(name:) click to toggle source

GET /service/rest/v1/tags/{name} PUT /service/rest/v1/tags/{name} DELETE /service/rest/v1/tags/{name}

# File lib/endpoints/tags.rb, line 28
def delete_tag(name:)
  @connection.delete(endpoint: "tags/#{name}")
end
delete_user(user_id:) click to toggle source

PUT /service/rest/beta/security/users/{userId} DELETE /service/rest/beta/security/users/{userId}

# File lib/endpoints/users.rb, line 24
def delete_user(user_id:)
  @connection.delete(endpoint: "security/users/#{user_id}", api_version: 'beta')
end
docker_ready?() click to toggle source
# File lib/nexus_api.rb, line 47
def docker_ready?
  if @docker.nil?
    raise 'Docker push and pull endpoints not initialized!'
    return false
  end
  true
end
download(id:, name: nil) click to toggle source
# File lib/nexus_api.rb, line 71
def download(id:, name: nil)
  asset = list_asset(id: id)
  return false if asset == '' || asset.empty?
  return false if asset["downloadUrl"].nil?
  url = asset["downloadUrl"]
  response = @connection.download(url: url)
  if name
    File.write(name, response.body)
  else
    File.write(url.split('/').last, response.body)
  end
  true
end
download_docker_component(image:, tag:) click to toggle source
# File lib/nexus_api.rb, line 55
def download_docker_component(image:, tag:)
  @docker.download(image_name: image, tag: tag) if docker_ready?
end
get_asset_size(asset_url:) click to toggle source
# File lib/nexus_api.rb, line 43
def get_asset_size(asset_url:)
  @connection.content_length(asset_url: asset_url)
end
list_all_assets(repository: nil) click to toggle source
# File lib/endpoints/assets.rb, line 9
def list_all_assets(repository: nil)
  Array.new.tap do |assets|
    loop do
      assets.concat(list_assets(repository: repository, paginate: true))
      break unless paginate?
    end
  end
end
list_all_components(repository: nil) click to toggle source
# File lib/endpoints/components.rb, line 9
def list_all_components(repository: nil)
  Array.new.tap do |components|
    loop do
      components.concat(list_components(repository: repository, paginate: true))
      break unless paginate?
    end
  end
end
list_all_tags() click to toggle source
# File lib/endpoints/tags.rb, line 8
def list_all_tags
  Array.new.tap do |tags|
    loop do
      tags.concat(list_tags(paginate: true))
      break unless paginate?
    end
  end
end
list_asset(id:) click to toggle source

GET /service/rest/v1/assets/{id}

# File lib/endpoints/assets.rb, line 19
def list_asset(id:)
  @connection.get_response(endpoint: "assets/#{id}")
end
list_assets(repository: nil, paginate: false) click to toggle source

GET /service/rest/v1/assets

# File lib/endpoints/assets.rb, line 4
def list_assets(repository: nil, paginate: false)
  repository ||= @team_config.assets_repository
  @connection.get_response(endpoint: "assets?repository=#{repository}", paginate: paginate)
end
list_component(id:) click to toggle source

GET /service/rest/v1/components/{id}

# File lib/endpoints/components.rb, line 82
def list_component(id:)
  @connection.get_response(endpoint: "components/#{id}")
end
list_components(repository: nil, paginate: false) click to toggle source

GET /service/rest/v1/components

# File lib/endpoints/components.rb, line 4
def list_components(repository: nil, paginate: false)
  repository ||= @team_config.components_repository
  @connection.get_response(endpoint: "components?repository=#{repository}", paginate: paginate)
end
list_privilege(privilege_id:) click to toggle source

GET /service/rest/beta/security/privileges/{privilegeId}

# File lib/endpoints/privileges.rb, line 9
def list_privilege(privilege_id:)
  @connection.get_response(endpoint: "security/privileges/#{privilege_id}", api_version: 'beta')
end
list_privileges() click to toggle source

GET /service/rest/beta/security/privileges

# File lib/endpoints/privileges.rb, line 4
def list_privileges
  @connection.get_response(endpoint: 'security/privileges', api_version: 'beta')
end
list_repositories() click to toggle source

GET /service/rest/v1/repositories (This endpoint does not paginate) GET /service/rest/beta/repositories

# File lib/endpoints/repositories.rb, line 7
def list_repositories
  @connection.get_response(endpoint: 'repositories', api_version: 'beta')
end
list_repository_names() click to toggle source
# File lib/endpoints/repositories.rb, line 11
def list_repository_names
  list_repositories.map { |repo| repo['name'] }
end
list_role(id:) click to toggle source

GET /service/rest/beta/security/roles/{id}

# File lib/endpoints/roles.rb, line 21
def list_role(id:)
  @connection.get_response(endpoint: "security/roles/#{id}?source=default", api_version: 'beta')
end
list_roles() click to toggle source

GET /service/rest/beta/security/roles

# File lib/endpoints/roles.rb, line 4
def list_roles
  @connection.get_response(endpoint: 'security/roles', api_version: 'beta')
end
list_scripts() click to toggle source

GET /service/rest/v1/script

# File lib/endpoints/script.rb, line 4
def list_scripts
  @connection.get_response(endpoint: "script")
end
list_tags(paginate: false) click to toggle source

GET /service/rest/v1/tags

# File lib/endpoints/tags.rb, line 4
def list_tags(paginate: false)
  @connection.get_response(endpoint: 'tags', paginate: paginate)
end
list_users() click to toggle source

GET /service/rest/beta/security/users

# File lib/endpoints/users.rb, line 4
def list_users
  @connection.get_response(endpoint: 'security/users', api_version: 'beta')
end
local_docker_image_exists?(image:, tag:) click to toggle source
# File lib/nexus_api.rb, line 63
def local_docker_image_exists?(image:, tag:)
  @docker.exists?(image_name: image, tag: tag) if docker_ready?
end
move_components_to(destination:, tag:, source: nil, keyword: nil) click to toggle source

POST /service/rest/v1/staging/delete POST /service/rest/v1/staging/move/{destination}

# File lib/endpoints/staging.rb, line 5
def move_components_to(destination:, tag:, source: nil, keyword: nil)
  endpoint = "staging/move/#{destination}?tag=#{tag}"
  endpoint += "&repository=#{source}" unless source.nil?
  endpoint += "&q=#{keyword}" unless keyword.nil?
  @connection.post(endpoint: endpoint)
end
paginate?() click to toggle source
# File lib/nexus_api.rb, line 85
def paginate?
  @connection.paginate?
end
run_script(name:) click to toggle source

POST /service/rest/v1/script/{name}/run

# File lib/endpoints/script.rb, line 23
def run_script(name:)
  puts_deprecated_notice
  @connection.post(endpoint: "script/#{name}/run", headers: {'Content-Type' => 'text/plain'})
end
search_all_assets(name:, format: nil, repository: nil, sha1: nil, version: nil) click to toggle source
# File lib/endpoints/search.rb, line 16
def search_all_assets(name:, format: nil, repository: nil, sha1: nil, version: nil)
  Array.new.tap do |results|
    loop do
      results.concat(
        search_asset(
          name: name,
          format: format,
          repository: repository,
          sha1: sha1,
          version: version,
          paginate: true
        ))
      break unless paginate?
    end
  end
end
search_asset(name:, format: nil, repository: nil, sha1: nil, version: nil, paginate: false) click to toggle source

GET /service/rest/v1/search/assets

# File lib/endpoints/search.rb, line 6
def search_asset(name:, format: nil, repository: nil, sha1: nil, version: nil, paginate: false)
  repository ||= @team_config.search_repository
  endpoint = "search/assets?q=#{name}"
  endpoint += "&format=#{format}" unless format.nil?
  endpoint += "&repository=#{repository}" unless repository.nil?
  endpoint += "&sha1=#{sha1}" unless sha1.nil?
  endpoint += "&version=#{version}" unless version.nil?
  @connection.get_response(endpoint: endpoint, paginate: paginate)
end
status() click to toggle source

GET /service/rest/v1/status

# File lib/endpoints/status.rb, line 4
def status
  @connection.get(endpoint: 'status')
end
status_writable() click to toggle source

GET /service/rest/v1/status/writable

# File lib/endpoints/status.rb, line 11
def status_writable
  @connection.get(endpoint: 'status/writable')
end
upload_docker_component(image:, tag:) click to toggle source
# File lib/nexus_api.rb, line 59
def upload_docker_component(image:, tag:)
  @docker.upload(image_name: image, tag: tag) if docker_ready?
end
upload_maven_component(filename:, group_id:, artifact_id:, version:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source

POST /service/rest/v1/components

# File lib/endpoints/components.rb, line 19
def upload_maven_component(filename:, group_id:, artifact_id:, version:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.maven_repository
  parameters = {
    'maven2.groupId' => group_id,
    'maven2.artifactId' => artifact_id,
    'maven2.version' => version,
    'maven2.asset1' => File.open(upstream_filename || filename, 'r'),
    'maven2.asset1.extension' => filename.split('.').last,
  }
  parameters['maven2.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end
upload_npm_component(filename:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source
# File lib/endpoints/components.rb, line 32
def upload_npm_component(filename:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.npm_repository
  parameters = {
    'npm.asset' => File.open(upstream_filename || filename, 'r'),
  }
  parameters['npm.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end
upload_pypi_component(filename:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source
# File lib/endpoints/components.rb, line 41
def upload_pypi_component(filename:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.pypi_repository
  parameters = {
    'pypi.asset' => File.open(upstream_filename || filename, 'r'),
  }
  parameters['pypi.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end
upload_raw_component(filename:, directory:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source
# File lib/endpoints/components.rb, line 50
def upload_raw_component(filename:, directory:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.raw_repository
  parameters = {
    'raw.directory' => directory,
    'raw.asset1' => File.open(upstream_filename || filename, 'r'),
    'raw.asset1.filename' => filename.split('/').last,
  }
  parameters['raw.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end
upload_rubygems_component(filename:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source
# File lib/endpoints/components.rb, line 61
def upload_rubygems_component(filename:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.rubygems_repository
  parameters = {
    'rubygems.asset' => File.open(upstream_filename || filename, 'r'),
  }
  parameters['rubygems.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end
upload_script(filename:) click to toggle source

POST /service/rest/v1/script

# File lib/endpoints/script.rb, line 9
def upload_script(filename:)
  puts_deprecated_notice
  file = File.read(filename)
  @connection.post(endpoint: "script", parameters: file)
end
upload_yum_component(filename:, directory:, repository: nil, tag: nil, upstream_filename: nil) click to toggle source
# File lib/endpoints/components.rb, line 70
def upload_yum_component(filename:, directory:, repository: nil, tag: nil, upstream_filename: nil)
  repository ||= @team_config.yum_repository
  parameters = {
    'yum.directory' => directory,
    'yum.asset' => File.open(upstream_filename || filename, 'r'),
    'yum.asset.filename' => filename.split('/').last,
  }
  parameters['yum.tag'] = tag if tag
  @connection.post(endpoint: "components?repository=#{repository}", parameters: parameters, headers: {})
end

Private Instance Methods

create(endpoint, parameters) click to toggle source

PUT /service/rest/beta/repositories/yum/proxy/{repositoryName}

# File lib/endpoints/repositories.rb, line 212
def create(endpoint, parameters)
  @connection.post(
    endpoint: endpoint,
    parameters: parameters,
    api_version: 'beta'
  )
end
puts_deprecated_notice() click to toggle source
# File lib/endpoints/script.rb, line 31
def puts_deprecated_notice
  puts 'WARNING: This endpoint has been disabled in Nexus due to a vulnerability'
  puts '         and may not work as intended. An HTTP 410 is an indication of this'
  puts '         See https://issues.sonatype.org/browse/NEXUS-23205 for details'
end
puts_error(method) click to toggle source
# File lib/endpoints/tags.rb, line 70
def puts_error(method)
  puts "ERROR: NexusAPI::API::#{method}() requires AT LEAST one optional parameter to"
  puts "       be set otherwise ALL assets in Nexus will be tagged. If this is desired"
  puts "       please open an issue or a PR to add a new method to handle this case."
end