Class: Spaceship::ConnectAPI::Device
- Inherits:
-
Object
- Object
- Spaceship::ConnectAPI::Device
- Includes:
- Model
- Defined in:
- spaceship/lib/spaceship/connect_api/models/device.rb
Defined Under Namespace
Modules: DeviceClass, Status
Instance Attribute Summary collapse
-
#added_date ⇒ Object
Returns the value of attribute added_date.
-
#device_class ⇒ Object
Returns the value of attribute device_class.
-
#model ⇒ Object
Returns the value of attribute model.
-
#name ⇒ Object
Returns the value of attribute name.
-
#platform ⇒ Object
Returns the value of attribute platform.
-
#status ⇒ Object
Returns the value of attribute status.
-
#udid ⇒ Object
Returns the value of attribute udid.
Attributes included from Model
Class Method Summary collapse
-
.all(client: nil, filter: {}, includes: nil, fields: nil, limit: Spaceship::ConnectAPI::MAX_OBJECTS_PER_PAGE_LIMIT, sort: nil) ⇒ Object
API.
-
.create(client: nil, name: nil, platform: nil, udid: nil) ⇒ Device
Find a device based on the UDID of the device.
-
.devices_for_platform(platform: nil, include_mac_in_profiles: false, client: nil) ⇒ Device
List of enabled devices.
-
.disable(device_udid, client: nil) ⇒ Device
Modified device based on the UDID of the device.
-
.enable(device_udid, client: nil) ⇒ Device
Modified device based on the UDID of the device.
-
.find_by_udid(device_udid, client: nil, include_disabled: false) ⇒ Device
Find a device based on the UDID of the device.
-
.find_or_create(device_udid, client: nil, name: nil, platform: nil) ⇒ Device
Find a device based on the UDID of the device.
-
.modify(device_udid, client: nil, enabled: nil, new_name: nil) ⇒ Device
Modified device based on the UDID of the device.
-
.rename(device_udid, new_name, client: nil) ⇒ Device
Modified device based on the UDID of the device.
- .type ⇒ Object
Instance Method Summary collapse
Methods included from Model
#attr_mapping, included, #initialize, #reverse_attr_mapping, #to_json, #update_attributes
Instance Attribute Details
#added_date ⇒ Object
Returns the value of attribute added_date.
14 15 16 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 14 def added_date @added_date end |
#device_class ⇒ Object
Returns the value of attribute device_class.
8 9 10 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 8 def device_class @device_class end |
#model ⇒ Object
Returns the value of attribute model.
9 10 11 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 9 def model @model end |
#name ⇒ Object
Returns the value of attribute name.
10 11 12 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 10 def name @name end |
#platform ⇒ Object
Returns the value of attribute platform.
11 12 13 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 11 def platform @platform end |
#status ⇒ Object
Returns the value of attribute status.
12 13 14 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 12 def status @status end |
#udid ⇒ Object
Returns the value of attribute udid.
13 14 15 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 13 def udid @udid end |
Class Method Details
.all(client: nil, filter: {}, includes: nil, fields: nil, limit: Spaceship::ConnectAPI::MAX_OBJECTS_PER_PAGE_LIMIT, sort: nil) ⇒ Object
API
56 57 58 59 60 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 56 def self.all(client: nil, filter: {}, includes: nil, fields: nil, limit: Spaceship::ConnectAPI::MAX_OBJECTS_PER_PAGE_LIMIT, sort: nil) client ||= Spaceship::ConnectAPI resps = client.get_devices(filter: filter, includes: includes, fields: fields, limit: limit, sort: sort).all_pages return resps.flat_map(&:to_models) end |
.create(client: nil, name: nil, platform: nil, udid: nil) ⇒ Device
Returns Find a device based on the UDID of the device. nil if no device was found.
168 169 170 171 172 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 168 def self.create(client: nil, name: nil, platform: nil, udid: nil) client ||= Spaceship::ConnectAPI resp = client.post_device(name: name, platform: platform, udid: udid) return resp.to_models.first end |
.devices_for_platform(platform: nil, include_mac_in_profiles: false, client: nil) ⇒ Device
Returns List of enabled devices.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 66 def self.devices_for_platform(platform: nil, include_mac_in_profiles: false, client: nil) platform = platform.to_sym include_mac_in_profiles &&= platform == :ios device_platform = case platform when :osx, :macos, :mac Spaceship::ConnectAPI::Platform::MAC_OS when :ios, :tvos, :xros, :visionos Spaceship::ConnectAPI::Platform::IOS when :catalyst Spaceship::ConnectAPI::Platform::MAC_OS end device_platforms = [ device_platform ] device_classes = case platform when :ios [ Spaceship::ConnectAPI::Device::DeviceClass::IPAD, Spaceship::ConnectAPI::Device::DeviceClass::IPHONE, Spaceship::ConnectAPI::Device::DeviceClass::IPOD, Spaceship::ConnectAPI::Device::DeviceClass::APPLE_WATCH, Spaceship::ConnectAPI::Device::DeviceClass::APPLE_VISION_PRO ] when :tvos [ Spaceship::ConnectAPI::Device::DeviceClass::APPLE_TV ] when :macos, :catalyst [ Spaceship::ConnectAPI::Device::DeviceClass::MAC, Spaceship::ConnectAPI::Device::DeviceClass::APPLE_SILICON_MAC, Spaceship::ConnectAPI::Device::DeviceClass::INTEL_MAC ] else [] end if include_mac_in_profiles device_classes << Spaceship::ConnectAPI::Device::DeviceClass::APPLE_SILICON_MAC device_platforms << Spaceship::ConnectAPI::Platform::MAC_OS end filter = { status: Spaceship::ConnectAPI::Device::Status::ENABLED } filter[:platform] = device_platforms.uniq.join(',') unless device_platforms.empty? devices = Spaceship::ConnectAPI::Device.all( client: client, filter: filter ) unless device_classes.empty? devices.select! do |device| # App Store Connect API return MAC in device_class instead of APPLE_SILICON_MAC for Silicon Macs. # The difference between old MAC and APPLE_SILICON_MAC is provisioning uuid. # Intel-based provisioning UUID: 01234567-89AB-CDEF-0123-456789ABCDEF. # arm64-based provisioning UUID: 01234567-89ABCDEF12345678. # Workaround is to include macs having: # * 25 chars length and only one hyphen in provisioning UUID. if include_mac_in_profiles && device.device_class == Spaceship::ConnectAPI::Device::DeviceClass::MAC next device.udid.length == 25 && device.udid.count('-') == 1 end device_classes.include?(device.device_class) end end devices end |
.disable(device_udid, client: nil) ⇒ Device
Returns Modified device based on the UDID of the device. nil if no device was found.
203 204 205 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 203 def self.disable(device_udid, client: nil) self.modify(device_udid, client: client, enabled: false) end |
.enable(device_udid, client: nil) ⇒ Device
Returns Modified device based on the UDID of the device. nil if no device was found.
196 197 198 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 196 def self.enable(device_udid, client: nil) self.modify(device_udid, client: client, enabled: true) end |
.find_by_udid(device_udid, client: nil, include_disabled: false) ⇒ Device
Returns Find a device based on the UDID of the device. nil if no device was found.
147 148 149 150 151 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 147 def self.find_by_udid(device_udid, client: nil, include_disabled: false) self.all(client: client).find do |device| device.udid.casecmp(device_udid) == 0 && (include_disabled ? true : device.enabled?) end end |
.find_or_create(device_udid, client: nil, name: nil, platform: nil) ⇒ Device
Returns Find a device based on the UDID of the device. If no device was found, nil if no device was found.
157 158 159 160 161 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 157 def self.find_or_create(device_udid, client: nil, name: nil, platform: nil) existing = self.find_by_udid(device_udid, client: client) return existing if existing return self.create(client: client, name: name, platform: platform, udid: device_udid) end |
.modify(device_udid, client: nil, enabled: nil, new_name: nil) ⇒ Device
Returns Modified device based on the UDID of the device. nil if no device was found.
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 179 def self.modify(device_udid, client: nil, enabled: nil, new_name: nil) client ||= Spaceship::ConnectAPI existing = self.find_by_udid(device_udid, client: client, include_disabled: true) return nil if existing.nil? enabled = existing.enabled? if enabled.nil? new_name ||= existing.name return existing if existing.name == new_name && existing.enabled? == enabled new_status = enabled ? Status::ENABLED : Status::DISABLED resp = client.patch_device(id: existing.id, new_name: new_name, status: new_status) return resp.to_models.first end |
.rename(device_udid, new_name, client: nil) ⇒ Device
Returns Modified device based on the UDID of the device. nil if no device was found.
211 212 213 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 211 def self.rename(device_udid, new_name, client: nil) self.modify(device_udid, client: client, new_name: new_name) end |
.type ⇒ Object
45 46 47 |
# File 'spaceship/lib/spaceship/connect_api/models/device.rb', line 45 def self.type return "devices" end |