Class: Artifactory::Resource::Artifact
- Defined in:
- lib/artifactory/resources/artifact.rb
Class Method Summary collapse
-
.checksum_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its checksum.
-
.creation_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its creation date.
- .from_hash(hash, options = {}) ⇒ Object
-
.gavc_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by Maven coordinates: Group ID, Artifact ID,
Version
andClassifier
. -
.latest_version(options = {}) ⇒ String?
Get the latest version of an artifact.
-
.property_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by the given properties.
-
.search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by the full or partial filename.
-
.usage_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its usage.
-
.versions(options = {}) ⇒ Object
Get all versions of an artifact.
Instance Method Summary collapse
-
#checksums ⇒ Object
Return this object’s
checksums
. -
#checksums=(value) ⇒ Object
Set this object’s
checksums
. -
#checksums? ⇒ Boolean
Determines if the
checksums
value exists and is truthy. -
#compliance ⇒ Hash<String, Array<Hash>>
Get compliance info for a given artifact path.
- #copy(destination, options = {}) ⇒ Object
-
#created ⇒ Object
Return this object’s
created
. -
#created=(value) ⇒ Object
Set this object’s
created
. -
#created? ⇒ Boolean
Determines if the
created
value exists and is truthy. -
#delete ⇒ Boolean
Delete this artifact from repository, suppressing any
ResourceNotFound
exceptions might occur. -
#download(target = Dir.mktmpdir, options = {}) ⇒ String
Download the artifact onto the local disk.
-
#download_uri ⇒ Object
Return this object’s
download_uri
. -
#download_uri=(value) ⇒ Object
Set this object’s
download_uri
. -
#download_uri? ⇒ Boolean
Determines if the
download_uri
value exists and is truthy. -
#key ⇒ Object
Return this object’s
key
. -
#key=(value) ⇒ Object
Set this object’s
key
. -
#key? ⇒ Boolean
Determines if the
key
value exists and is truthy. -
#last_modified ⇒ Object
Return this object’s
last_modified
. -
#last_modified=(value) ⇒ Object
Set this object’s
last_modified
. -
#last_modified? ⇒ Boolean
Determines if the
last_modified
value exists and is truthy. -
#last_updated ⇒ Object
Return this object’s
last_updated
. -
#last_updated=(value) ⇒ Object
Set this object’s
last_updated
. -
#last_updated? ⇒ Boolean
Determines if the
last_updated
value exists and is truthy. -
#local_path ⇒ Object
Return this object’s
local_path
. -
#local_path=(value) ⇒ Object
Set this object’s
local_path
. -
#local_path? ⇒ Boolean
Determines if the
local_path
value exists and is truthy. -
#md5 ⇒ String
The MD5 of this artifact.
-
#mime_type ⇒ Object
Return this object’s
mime_type
. -
#mime_type=(value) ⇒ Object
Set this object’s
mime_type
. -
#mime_type? ⇒ Boolean
Determines if the
mime_type
value exists and is truthy. - #move(destination, options = {}) ⇒ Object
-
#properties ⇒ Hash<String, Object>
The list of properties for this object.
-
#repo ⇒ Object
Return this object’s
repo
. -
#repo=(value) ⇒ Object
Set this object’s
repo
. -
#repo? ⇒ Boolean
Determines if the
repo
value exists and is truthy. -
#sha1 ⇒ String
The SHA of this artifact.
-
#size ⇒ Object
Return this object’s
size
. -
#size=(value) ⇒ Object
Set this object’s
size
. -
#size? ⇒ Boolean
Determines if the
size
value exists and is truthy. -
#upload(repo, remote_path, properties = {}, headers = {}) ⇒ Resource::Artifact
Upload an artifact into the repository.
-
#upload_checksum(repo, remote_path, type, value) ⇒ true
Upload the checksum for this artifact.
-
#upload_from_archive(repo, remote_path, properties = {}) ⇒ Object
Upload an artifact with the given archive.
-
#upload_with_checksum(repo, remote_path, checksum, properties = {}) ⇒ Object
Upload an artifact with the given SHA checksum.
-
#uri ⇒ Object
Return this object’s
uri
. -
#uri=(value) ⇒ Object
Set this object’s
uri
. -
#uri? ⇒ Boolean
Determines if the
uri
value exists and is truthy.
Methods inherited from Base
attribute, attributes, #attributes, #client, #client=, #client?, #extract_client!, extract_client!, find_from_config, format_repos!, #format_repos!, from_url, has_attribute?, #initialize, #inspect, list_from_config, #set, #to_hash, #to_json, #to_matrix_properties, #to_query_string_parameters, #to_s, url_safe, #url_safe
Constructor Details
This class inherits a constructor from Artifactory::Resource::Base
Class Method Details
.checksum_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its checksum
178 179 180 181 182 183 184 185 186 |
# File 'lib/artifactory/resources/artifact.rb', line 178 def checksum_search( = {}) client = extract_client!() params = Util.slice(, :md5, :sha1, :repos) format_repos!(params) client.get('/api/search/checksum', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.creation_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its creation date
260 261 262 263 264 265 266 267 268 |
# File 'lib/artifactory/resources/artifact.rb', line 260 def creation_search( = {}) client = extract_client!() params = Util.slice(, :from, :to, :repos) format_repos!(params) client.get('/api/search/creation', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.from_hash(hash, options = {}) ⇒ Object
364 365 366 367 368 369 370 371 |
# File 'lib/artifactory/resources/artifact.rb', line 364 def from_hash(hash, = {}) super.tap do |instance| instance.created = Time.parse(instance.created) rescue nil instance.last_modified = Time.parse(instance.last_modified) rescue nil instance.last_updated = Time.parse(instance.last_updated) rescue nil instance.size = instance.size.to_i end end |
.gavc_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by Maven coordinates: Group ID, Artifact ID, Version
and Classifier
.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/artifactory/resources/artifact.rb', line 94 def gavc_search( = {}) client = extract_client!() = Util.rename_keys(, :group => :g, :name => :a, :version => :v, :classifier => :c, ) params = Util.slice(, :g, :a, :v, :c, :repos) format_repos!(params) client.get('/api/search/gavc', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.latest_version(options = {}) ⇒ String?
Get the latest version of an artifact.
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 |
# File 'lib/artifactory/resources/artifact.rb', line 341 def latest_version( = {}) client = extract_client!() = Util.rename_keys(, :group => :g, :name => :a, :version => :v, ) params = Util.slice(, :g, :a, :v, :repos, :remote) format_repos!(params) # For whatever reason, Artifactory won't accept "true" - they want a # literal "1"... params[:remote] = 1 if [:remote] client.get('/api/search/latestVersion', params) rescue Error::HTTPError => e raise unless e.code == 404 nil end |
.property_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by the given properties. These are arbitrary properties defined by the user on artifact, so the search uses a free- form schema.
139 140 141 142 143 144 145 146 147 |
# File 'lib/artifactory/resources/artifact.rb', line 139 def property_search( = {}) client = extract_client!() params = .dup format_repos!(params) client.get('/api/search/prop', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by the full or partial filename.
44 45 46 47 48 49 50 51 52 |
# File 'lib/artifactory/resources/artifact.rb', line 44 def search( = {}) client = extract_client!() params = Util.slice(, :name, :repos) format_repos!(params) client.get('/api/search/artifact', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.usage_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact by its usage
219 220 221 222 223 224 225 226 227 |
# File 'lib/artifactory/resources/artifact.rb', line 219 def usage_search( = {}) client = extract_client!() params = Util.slice(, :notUsedSince, :createdBefore, :repos) format_repos!(params) client.get('/api/search/usage', params)['results'].map do |artifact| from_url(artifact['uri'], client: client) end end |
.versions(options = {}) ⇒ Object
Get all versions of an artifact.
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'lib/artifactory/resources/artifact.rb', line 290 def versions( = {}) client = extract_client!() = Util.rename_keys(, :group => :g, :name => :a, :version => :v, ) params = Util.slice(, :g, :a, :v, :repos) format_repos!(params) client.get('/api/search/versions', params)['results'] rescue Error::HTTPError => e raise unless e.code == 404 [] end |
Instance Method Details
#checksums ⇒ Object
Return this object’s checksums
375 |
# File 'lib/artifactory/resources/artifact.rb', line 375 attribute :checksums |
#checksums=(value) ⇒ Object
Set this object’s checksums
375 |
# File 'lib/artifactory/resources/artifact.rb', line 375 attribute :checksums |
#checksums? ⇒ Boolean
Determines if the checksums
value exists and is truthy
375 |
# File 'lib/artifactory/resources/artifact.rb', line 375 attribute :checksums |
#compliance ⇒ Hash<String, Array<Hash>>
Get compliance info for a given artifact path. The result includes license and vulnerabilities, if any.
**This requires the Black Duck addon to be enabled!**
455 456 457 |
# File 'lib/artifactory/resources/artifact.rb', line 455 def compliance @compliance ||= client.get(File.join('/api/compliance', relative_path)) end |
#copy(destination, options = {}) ⇒ Object
407 408 409 |
# File 'lib/artifactory/resources/artifact.rb', line 407 def copy(destination, = {}) copy_or_move(:copy, destination, ) end |
#created ⇒ Object
Return this object’s created
376 |
# File 'lib/artifactory/resources/artifact.rb', line 376 attribute :created |
#created=(value) ⇒ Object
Set this object’s created
376 |
# File 'lib/artifactory/resources/artifact.rb', line 376 attribute :created |
#created? ⇒ Boolean
Determines if the created
value exists and is truthy
376 |
# File 'lib/artifactory/resources/artifact.rb', line 376 attribute :created |
#delete ⇒ Boolean
Delete this artifact from repository, suppressing any ResourceNotFound
exceptions might occur.
418 419 420 421 422 |
# File 'lib/artifactory/resources/artifact.rb', line 418 def delete !!client.delete(download_uri) rescue Error::HTTPError false end |
#download(target = Dir.mktmpdir, options = {}) ⇒ String
Download the artifact onto the local disk.
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 |
# File 'lib/artifactory/resources/artifact.rb', line 480 def download(target = Dir.mktmpdir, = {}) target = File.(target) # Make the directory if it doesn't yet exist FileUtils.mkdir_p(target) unless File.exists?(target) # Use the server artifact's filename if one wasn't given filename = [:filename] || File.basename(download_uri) # Construct the full path for the file destination = File.join(target, filename) File.open(destination, 'wb') do |file| file.write(client.get(download_uri)) end destination end |
#download_uri ⇒ Object
Return this object’s download_uri
377 |
# File 'lib/artifactory/resources/artifact.rb', line 377 attribute :download_uri, ->{ raise 'Download URI missing!' } |
#download_uri=(value) ⇒ Object
Set this object’s download_uri
377 |
# File 'lib/artifactory/resources/artifact.rb', line 377 attribute :download_uri, ->{ raise 'Download URI missing!' } |
#download_uri? ⇒ Boolean
Determines if the download_uri
value exists and is truthy
377 |
# File 'lib/artifactory/resources/artifact.rb', line 377 attribute :download_uri, ->{ raise 'Download URI missing!' } |
#key ⇒ Object
Return this object’s key
378 |
# File 'lib/artifactory/resources/artifact.rb', line 378 attribute :key |
#key=(value) ⇒ Object
Set this object’s key
378 |
# File 'lib/artifactory/resources/artifact.rb', line 378 attribute :key |
#key? ⇒ Boolean
Determines if the key
value exists and is truthy
378 |
# File 'lib/artifactory/resources/artifact.rb', line 378 attribute :key |
#last_modified ⇒ Object
Return this object’s last_modified
379 |
# File 'lib/artifactory/resources/artifact.rb', line 379 attribute :last_modified |
#last_modified=(value) ⇒ Object
Set this object’s last_modified
379 |
# File 'lib/artifactory/resources/artifact.rb', line 379 attribute :last_modified |
#last_modified? ⇒ Boolean
Determines if the last_modified
value exists and is truthy
379 |
# File 'lib/artifactory/resources/artifact.rb', line 379 attribute :last_modified |
#last_updated ⇒ Object
Return this object’s last_updated
380 |
# File 'lib/artifactory/resources/artifact.rb', line 380 attribute :last_updated |
#last_updated=(value) ⇒ Object
Set this object’s last_updated
380 |
# File 'lib/artifactory/resources/artifact.rb', line 380 attribute :last_updated |
#last_updated? ⇒ Boolean
Determines if the last_updated
value exists and is truthy
380 |
# File 'lib/artifactory/resources/artifact.rb', line 380 attribute :last_updated |
#local_path ⇒ Object
Return this object’s local_path
381 |
# File 'lib/artifactory/resources/artifact.rb', line 381 attribute :local_path, ->{ raise 'Local destination missing!' } |
#local_path=(value) ⇒ Object
Set this object’s local_path
381 |
# File 'lib/artifactory/resources/artifact.rb', line 381 attribute :local_path, ->{ raise 'Local destination missing!' } |
#local_path? ⇒ Boolean
Determines if the local_path
value exists and is truthy
381 |
# File 'lib/artifactory/resources/artifact.rb', line 381 attribute :local_path, ->{ raise 'Local destination missing!' } |
#md5 ⇒ String
The MD5 of this artifact.
400 401 402 |
# File 'lib/artifactory/resources/artifact.rb', line 400 def md5 checksums && checksums['md5'] end |
#mime_type ⇒ Object
Return this object’s mime_type
382 |
# File 'lib/artifactory/resources/artifact.rb', line 382 attribute :mime_type |
#mime_type=(value) ⇒ Object
Set this object’s mime_type
382 |
# File 'lib/artifactory/resources/artifact.rb', line 382 attribute :mime_type |
#mime_type? ⇒ Boolean
Determines if the mime_type
value exists and is truthy
382 |
# File 'lib/artifactory/resources/artifact.rb', line 382 attribute :mime_type |
#move(destination, options = {}) ⇒ Object
427 428 429 |
# File 'lib/artifactory/resources/artifact.rb', line 427 def move(destination, = {}) copy_or_move(:move, destination, ) end |
#properties ⇒ Hash<String, Object>
The list of properties for this object.
440 441 442 |
# File 'lib/artifactory/resources/artifact.rb', line 440 def properties @properties ||= client.get(File.join('/api/storage', relative_path), properties: nil)['properties'] end |
#repo ⇒ Object
Return this object’s repo
383 |
# File 'lib/artifactory/resources/artifact.rb', line 383 attribute :repo |
#repo=(value) ⇒ Object
Set this object’s repo
383 |
# File 'lib/artifactory/resources/artifact.rb', line 383 attribute :repo |
#repo? ⇒ Boolean
Determines if the repo
value exists and is truthy
383 |
# File 'lib/artifactory/resources/artifact.rb', line 383 attribute :repo |
#sha1 ⇒ String
The SHA of this artifact.
391 392 393 |
# File 'lib/artifactory/resources/artifact.rb', line 391 def sha1 checksums && checksums['sha1'] end |
#size ⇒ Object
Return this object’s size
384 |
# File 'lib/artifactory/resources/artifact.rb', line 384 attribute :size |
#size=(value) ⇒ Object
Set this object’s size
384 |
# File 'lib/artifactory/resources/artifact.rb', line 384 attribute :size |
#size? ⇒ Boolean
Determines if the size
value exists and is truthy
384 |
# File 'lib/artifactory/resources/artifact.rb', line 384 attribute :size |
#upload(repo, remote_path, properties = {}, headers = {}) ⇒ Resource::Artifact
Upload an artifact into the repository. If the first parameter is a File object, that file descriptor is passed to the uploader. If the first parameter is a string, it is assumed to be the path to a local file on disk. This method will automatically construct the File object from the given path.
532 533 534 535 536 537 538 539 540 541 542 543 544 |
# File 'lib/artifactory/resources/artifact.rb', line 532 def upload(repo, remote_path, properties = {}, headers = {}) file = File.new(File.(local_path)) matrix = to_matrix_properties(properties) endpoint = File.join("#{url_safe(repo)}#{matrix}", remote_path) # Include checksums in headers if given. headers['X-Checksum-Md5'] = md5 if md5 headers['X-Checksum-Sha1'] = sha1 if sha1 response = client.put(endpoint, file, headers) self.class.from_hash(response) end |
#upload_checksum(repo, remote_path, type, value) ⇒ true
Upload the checksum for this artifact. **The artifact must already be uploaded or Artifactory will throw an exception!**.
562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 |
# File 'lib/artifactory/resources/artifact.rb', line 562 def upload_checksum(repo, remote_path, type, value) file = Tempfile.new("checksum.#{type}") file.write(value) file.rewind endpoint = File.join(url_safe(repo), "#{remote_path}.#{type}") client.put(endpoint, file) true ensure if file file.close file.unlink end end |
#upload_from_archive(repo, remote_path, properties = {}) ⇒ Object
Upload an artifact with the given archive. Consult the artifactory documentation for the format of the archive to upload.
612 613 614 615 616 |
# File 'lib/artifactory/resources/artifact.rb', line 612 def upload_from_archive(repo, remote_path, properties = {}) upload(repo, remote_path, properties, 'X-Explode-Archive' => true, ) end |
#upload_with_checksum(repo, remote_path, checksum, properties = {}) ⇒ Object
Upload an artifact with the given SHA checksum. Consult the artifactory documentation for the possible responses when the checksums fail to match.
593 594 595 596 597 598 |
# File 'lib/artifactory/resources/artifact.rb', line 593 def upload_with_checksum(repo, remote_path, checksum, properties = {}) upload(repo, remote_path, properties, 'X-Checksum-Deploy' => true, 'X-Checksum-Sha1' => checksum, ) end |
#uri ⇒ Object
Return this object’s uri
374 |
# File 'lib/artifactory/resources/artifact.rb', line 374 attribute :uri, ->{ raise 'API path missing!' } |
#uri=(value) ⇒ Object
Set this object’s uri
374 |
# File 'lib/artifactory/resources/artifact.rb', line 374 attribute :uri, ->{ raise 'API path missing!' } |
#uri? ⇒ Boolean
Determines if the uri
value exists and is truthy
374 |
# File 'lib/artifactory/resources/artifact.rb', line 374 attribute :uri, ->{ raise 'API path missing!' } |