Class: DeviceAPI::IOS::IDevice

Inherits:
Execution
  • Object
show all
Defined in:
lib/device_api/ios/idevice.rb

Overview

Namespace for all methods encapsulating idevice calls

Class Method Summary collapse

Class Method Details

.devicesArray

Returns an array of hashes representing connected devices

Returns:

  • (Array)

    Hash containing serial and device name

Raises:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/device_api/ios/idevice.rb', line 12

def self.devices
  result = execute_with_timeout_and_retry('idevice_id -l')

  raise IDeviceCommandError.new(result.stderr) if result.exit != 0

  lines = result.stdout.split("\n")
  results = []

  lines.each do |ln|
    if /[0-9a-zA-Z].*/.match(ln)
      results.push(ln => execute_with_timeout_and_retry("ideviceinfo -u #{ln} -k DeviceName").stdout.split("\n"))
    end
  end
  results
end

.get_props(device_id) ⇒ Hash

Returns a Hash containing properties of the specified device using idevice_id.

Parameters:

  • device_id

    uuid of the device

Returns:

  • (Hash)

    key value pair of properties

Raises:



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/device_api/ios/idevice.rb', line 41

def self.get_props(device_id)
  result = execute("ideviceinfo -u '#{device_id}'")

  raise IDeviceCommandError.new(result.stderr) if result.exit != 0

  result = result.stdout
  props = {}
  unless result.start_with?('Usage:')
    prop_list = result.split("\n")
    prop_list.each do |line|
      matches = line.scan(/(.*): (.*)/)
      prop_name, prop_value = matches[0]
      props[prop_name.strip] = prop_value.strip
    end
  end

  props
end

.trusted?(device_id) ⇒ Boolean

Check to see if device has trusted the computer

Parameters:

  • device_id

    uuid of the device

Returns:

  • (Boolean)

    true if the device returns information to ideviceinfo, otherwise false



31
32
33
34
35
36
# File 'lib/device_api/ios/idevice.rb', line 31

def self.trusted?(device_id)
  result = execute("ideviceinfo -u '#{device_id}'")

  return true if result.exit == 0 && !result.stdout.split("\n")[0].match('Usage')
  false
end