Class: TestdroidAPI::Files
- Inherits:
-
CloudListResource
- Object
- CloudListResource
- TestdroidAPI::Files
- Defined in:
- lib/testdroid_api/files.rb
Constant Summary collapse
- ACCEPTED_VIRUS_SCAN_STATUSES =
Set['safe', 'disabled', nil]
Instance Method Summary collapse
- #upload(filename, skip_scan_wait = false) ⇒ Object
- #wait_for_virus_scan(api_files, timeout = 300) ⇒ Object
Methods inherited from CloudListResource
#create, #get, #initialize, #list, #list_all, #total
Constructor Details
This class inherits a constructor from TestdroidAPI::CloudListResource
Instance Method Details
#upload(filename, skip_scan_wait = false) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 |
# 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) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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 |