module NexusCli::CustomMetadataActions
def clear_artifact_custom_info(coordinates)
-
The
(String
) -- GAVE string of the artifact
def clear_artifact_custom_info(coordinates) get_artifact_custom_info(coordinates) # Check that artifact has custom metadata artifact = Artifact.new(coordinates) encoded_string = N3Metadata::create_base64_subject(artifact) response = nexus.post(nexus_url("service/local/index/custom_metadata/#{configuration['repository']}/#{encoded_string}"), :body => create_custom_metadata_clear_json, :header => DEFAULT_CONTENT_TYPE_HEADER) case response.status when 201 return true else raise UnexpectedStatusCodeException.new(response.status) end end
def create_custom_metadata_clear_json
def create_custom_metadata_clear_json JSON.dump(:data => {}) end
def create_custom_metadata_update_json(source, target)
def create_custom_metadata_update_json(source, target) JSON.dump(:data => N3Metadata::create_metadata_hash(source, target)) end
def do_update_custom_metadata(coordinates, source_metadata, target_metadata)
def do_update_custom_metadata(coordinates, source_metadata, target_metadata) artifact = Artifact.new(coordinates) encoded_string = N3Metadata::create_base64_subject(artifact) response = nexus.post(nexus_url("service/local/index/custom_metadata/#{configuration['repository']}/#{encoded_string}"), :body => create_custom_metadata_update_json(source_metadata, target_metadata), :header => DEFAULT_CONTENT_TYPE_HEADER) case response.code when 201 return true else raise UnexpectedStatusCodeException.new(response.status) end end
def get_artifact_array(document)
-
document
(REXML::Document
) -- The object to be divided byelements
def get_artifact_array(document) artifacts = [] REXML::XPath.each(document, "//artifact") { |matched_artifact| artifacts << matched_artifact.text } artifacts end
def get_artifact_custom_info(coordinates)
-
coordinates
(String
) -- The GAVE string of the artifact
def get_artifact_custom_info(coordinates) N3Metadata::convert_result_to_simple_xml(get_artifact_custom_info_raw(coordinates)) end
def get_artifact_custom_info_raw(coordinates)
-
coordinates
(String
) -- The GAVE string of the artifact
def get_artifact_custom_info_raw(coordinates) artifact = Artifact.new(coordinates) encoded_string = N3Metadata::create_base64_subject(artifact) response = nexus.get(nexus_url("service/local/index/custom_metadata/#{configuration['repository']}/#{encoded_string}")) case response.status when 200 if N3Metadata::missing_custom_metadata?(response.content) raise N3NotFoundException else return response.content end when 404 raise ArtifactNotFoundException else raise UnexpectedStatusCodeException.new(response.status) end end
def get_common_artifact_set(left_document, right_document)
-
left_document,
(REXML::Document
) -- right_document
def get_common_artifact_set(left_document, right_document) intersection = get_artifact_array(left_document) & get_artifact_array(right_document) return intersection.count > 0 ? REXML::Document.new("<data>#{intersection.join}</data>").root : nil end
def get_custom_metadata_hash(coordinates)
def get_custom_metadata_hash(coordinates) begin N3Metadata::convert_result_to_hash(get_artifact_custom_info_raw(coordinates)) rescue N3NotFoundException Hash.new end end
def parse_custom_metadata_search_params(*params)
-
*params
(Array
) -- The array of key:type:value strings
def parse_custom_metadata_search_params(*params) params.inject([]) do |parsed_params, param| # param = key:type:value metadata_key, search_type, metadata_value = param.split(":", 3) if N3Metadata::valid_n3_key?(metadata_key) && N3Metadata::valid_n3_value?(metadata_value) && N3Metadata::valid_n3_search_type?(search_type) parsed_params.push([metadata_key, search_type, metadata_value]) else raise SearchParameterMalformedException end parsed_params end end
def parse_custom_metadata_update_params(*params)
-
(Hash)
- The resulting hash of parsed key:value items
Parameters:
-
*params
(Array
) -- The array of key:value strings
def parse_custom_metadata_update_params(*params) params.inject({}) do |parsed_params, param| # param = key:value metadata_key, metadata_value = param.split(":", 2) if N3Metadata::valid_n3_key?(metadata_key) && N3Metadata::valid_n3_value?(metadata_value) parsed_params[metadata_key] = metadata_value else raise N3ParameterMalformedException end parsed_params end end
def search_artifacts_custom(*params)
-
*params
(Array
) -- The array of key:type:value strings
def search_artifacts_custom(*params) nodesets = Array.new parse_custom_metadata_search_params(*params).each do |param| response = nexus.get(nexus_url("service/local/search/m2/freeform"), :query => {:p => param[0], :t => param[1], :v => param[2]}) case response.status when 200 nodesets.push(REXML::Document.new(response.body).elements["/search-results/data"]) when 400 raise BadSearchRequestException when 404 raise ArtifactNotFoundException else raise UnexpectedStatusCodeException.new(response.status) end end # Perform array intersection across all NodeSets for the final common set. result = nodesets.inject(nodesets.first) {|memo, nodeset| get_common_artifact_set(memo, nodeset)} formatter = REXML::Formatters::Pretty.new(4) formatter.compact = true return result.nil? ? "" : formatter.write(result, "") end
def update_artifact_custom_info(coordinates, *params)
-
*params
(Array
) -- The array of key:value strings -
coordinates
(String
) -- The GAVE string of the artifact
def update_artifact_custom_info(coordinates, *params) target_n3 = parse_custom_metadata_update_params(*params) nexus_n3 = get_custom_metadata_hash(coordinates) do_update_custom_metadata(coordinates, nexus_n3, target_n3) end