Method: ArtifactoryExtensions::ClassMethods#pattern_search
- Defined in:
- lib/packaging/artifactory/extensions.rb
#pattern_search(options = {}) ⇒ Array<Resource::Artifact>
Search for an artifact in a repo using an Ant-like pattern. Unlike many Artifactory searches, this one is restricted to a single repository.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/packaging/artifactory/extensions.rb', line 29 def pattern_search( = {}) client = extract_client!() params = Artifactory::Util.slice(, :pattern, :repo) pattern_search_parameter = { :pattern => "#{params[:repo]}:#{params[:pattern]}" } response = client.get('/api/search/pattern', pattern_search_parameter) return [] if response['files'].nil? || response['files'].empty? # A typical response: # { # "repoUri"=>"https:<artifactory endpoint>/<repo>", # "sourcePattern"=>"<repo>:<provided search pattern>", # "files"=>[<filename that matched pattern>, ...] # } # # Inserting '/api/storage' before the repo makes the 'from_url' call work correctly. # repo_uri = response['repoUri'] unless repo_uri.include?('/api/storage/') # rubocop:disable Style/PercentLiteralDelimiters repo_uri.sub!(%r(/#{params[:repo]}$), "/api/storage/#{params[:repo]}") # rubocop:enable Style/PercentLiteralDelimiters end response['files'].map do |file_path| from_url("#{repo_uri}/#{file_path}", client: client) end end |