class RedHatSupportLib::Brokers::Case
Public Class Methods
new(connection)
click to toggle source
Calls superclass method
RedHatSupportLib::Brokers::Broker::new
# File lib/brokers/case.rb, line 4 def initialize(connection) super end
Public Instance Methods
create(product, version, summary, description, severity, folder_number=nil)
click to toggle source
# File lib/brokers/case.rb, line 42 def create(product, version, summary, description, severity, folder_number=nil) headers = {:content_type => 'application/xml'} data = StringIO.new data << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" data << "<tns:case xmlns:tns=\"http://www.redhat.com/gss/strata\"> " data << "<tns:summary>#{summary}</tns:summary>" data << "<tns:description>#{description}</tns:description>" data << "<tns:product>#{product}</tns:product>" data << "<tns:version>#{version}</tns:version>" data << "<tns:severity>#{severity}</tns:severity>" if folder_number data << "<tns:folderNumber>#{folder_number}</tns:folderNumber>" end data << "</tns:case>" result = @connection.post("/rs/cases", data.string, headers) do |code, headers| if code == 201 return get_id(headers[:location]) end end end
create_filter(keywords, include_closed, group, start_date, end_date, count, start, owner_sso_name)
click to toggle source
# File lib/brokers/case.rb, line 102 def create_filter(keywords, include_closed, group, start_date, end_date, count, start, owner_sso_name) #for now use xml version filter = StringIO.new filter << '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' filter << '<caseFilter xmlns="http://www.redhat.com/gss/strata">' if keywords keywords.each do |keyword| filter << "<keyword>#{keyword}</keyword>" end end if include_closed filter << "<includeClosed>true</includeClosed>" end if group.nil? filter << "<onlyUngrouped>false</onlyUngrouped>" else filter << "<groupNumber>#{group}</groupNumber>" end if start_date filter << "<startDate>#{start_date}</startDate>" end if end_date filter << "<endDate>#{end_date}</endDate>" end if count filter << "<count>#{count}</count>" end if start filter << "<start>#{start}</start>" end filter << "<ownerSSOName>#{owner_sso_name}</ownerSSOName>" filter << "</caseFilter>" filter.string end
create_update_data(product, version, alternate_id, status, severity, type)
click to toggle source
# File lib/brokers/case.rb, line 74 def create_update_data(product, version, alternate_id, status, severity, type) #for now use xml version data = StringIO.new data << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" if alternate_id data << "<case xmlns=\"http://www.redhat.com/gss/strata\" alternateId=\"#{alternate_id}\">" else data << "<case xmlns=\"http://www.redhat.com/gss/strata\">" end if product data << "<product>#{product}</product>" end if version data << "<version>#{version}</version>" end if status data << "<status>#{status}</status>" end if severity data << "<severity>#{severity}</severity>" end if type data << "<type>#{type}</type>" end data << "</case>" return data.string end
get(id)
click to toggle source
# File lib/brokers/case.rb, line 38 def get(id) result = @connection.get("/rs/cases/#{id}", {:accept => :json}) end
list(keywords, include_closed, detail, group, start_date, end_date, count, start, kwargs)
click to toggle source
# File lib/brokers/case.rb, line 8 def list(keywords, include_closed, detail, group, start_date, end_date, count, start, kwargs) headers = {:content_type => 'application/xml', :accept => :json} param ="" if detail param = "?detail=true" end filter = self.create_filter(keywords, include_closed, group, start_date, end_date, count, start, @connection.config.username) result = @connection.post("/rs/cases/filter#{param}", filter, headers) end
list_case_types()
click to toggle source
# File lib/brokers/case.rb, line 30 def list_case_types result = @connection.get("/rs/values/case/types", {:accept => :json}) list = result["value"].map do |item| item["name"] end end
list_severities()
click to toggle source
# File lib/brokers/case.rb, line 23 def list_severities result = @connection.get("/rs/values/case/severity", {:accept => :json}) list = result["value"].map do |item| item["name"] end end
update(case_number, product, version, alternate_id, status, severity, type)
click to toggle source
# File lib/brokers/case.rb, line 64 def update(case_number, product, version, alternate_id, status, severity, type) headers = {:content_type => 'application/xml'} data = create_update_data(product, version, alternate_id, status, severity, type) result = @connection.put("/rs/cases/#{case_number}", data, headers) do |code, headers| if code == 202 return get case_number end end end