class TestdroidAPI::Files
Constants
- ACCEPTED_VIRUS_SCAN_STATUSES
Public Instance Methods
upload(filename, skip_scan_wait=false)
click to toggle source
# File lib/testdroid_api/files.rb, line 6 def upload(filename, skip_scan_wait=false) unless ::File.exist?(filename) @client.logger.error("Invalid filename") return end file = @client.upload("#{@uri}", filename) result = File.new("#{@uri}/#{file['id']}", @client, file) if !skip_scan_wait wait_for_virus_scan(Array(result)) end return result end
wait_for_virus_scan(api_files, timeout=300)
click to toggle source
# File lib/testdroid_api/files.rb, line 19 def wait_for_virus_scan(api_files, timeout=300) all_safe = false begin Timeout.timeout(timeout) do while !all_safe do statuses = Set.new api_files.each do |file| current_status = get_virus_scan_status(file) if ACCEPTED_VIRUS_SCAN_STATUSES.include?(current_status) statuses.add(current_status) else sleep(1) file.refresh statuses.add(get_virus_scan_status(file)) end end if statuses.include?('infected') raise 'File rejected by virus scan' end if ACCEPTED_VIRUS_SCAN_STATUSES.superset?(statuses) all_safe = true end end end rescue Timeout::Error @client.logger.error("Waiting for virus scan timed out") raise end end
Private Instance Methods
get_virus_scan_status(file)
click to toggle source
# File lib/testdroid_api/files.rb, line 51 def get_virus_scan_status(file) return file.file_properties.find{ |item| item['key'] == "virus_scan_status" }['value'] end