Class: Seam::Resources::BaseResource
- Inherits:
-
Object
- Object
- Seam::Resources::BaseResource
show all
- Defined in:
- lib/seam/base_resource.rb
Direct Known Subclasses
AccessCode, AccessCode::DormakabaOracodeMetadata, AccessCode::Errors, AccessCode::Errors::ConflictingExternalModification::ModifiedFields, AccessCode::PendingMutations, AccessCode::PendingMutations::From, AccessCode::PendingMutations::To, AccessCode::Warnings, AccessCode::Warnings::ExternalModificationInEffect::ModifiedFields, AccessGrant, AccessGrant::Errors, AccessGrant::PendingMutations, AccessGrant::PendingMutations::From, AccessGrant::PendingMutations::To, AccessGrant::RequestedAccessMethods, AccessGrant::Warnings, AccessGrant::Warnings::OverprovisionedAccess::FailedDevices, AccessMethod, AccessMethod::Errors, AccessMethod::PendingMutations, AccessMethod::PendingMutations::From, AccessMethod::PendingMutations::To, AccessMethod::Warnings, AcsAccessGroup, AcsAccessGroup::AccessSchedule, AcsAccessGroup::Errors, AcsAccessGroup::PendingMutations, AcsAccessGroup::PendingMutations::From, AcsAccessGroup::PendingMutations::To, AcsAccessGroup::Warnings, AcsCredential, AcsCredential::AkilesMetadata, AcsCredential::AssaAbloyVostioMetadata, AcsCredential::Errors, AcsCredential::VisionlineMetadata, AcsCredential::Warnings, AcsEncoder, AcsEncoder::Errors, AcsEntrance, AcsEntrance::AkilesMetadata, AcsEntrance::AkilesMetadata::Actions, AcsEntrance::AssaAbloyVostioMetadata, AcsEntrance::AvigilonAltaMetadata, AcsEntrance::BrivoMetadata, AcsEntrance::DormakabaAmbianceMetadata, AcsEntrance::DormakabaCommunityMetadata, AcsEntrance::Errors, AcsEntrance::HotekMetadata, AcsEntrance::LatchMetadata, AcsEntrance::SaltoKsMetadata, AcsEntrance::SaltoSpaceMetadata, AcsEntrance::VisionlineMetadata, AcsEntrance::VisionlineMetadata::Profiles, AcsEntrance::Warnings, AcsSystem, AcsSystem::Errors, AcsSystem::Location, AcsSystem::VisionlineMetadata, AcsSystem::Warnings, AcsUser, AcsUser::AccessSchedule, AcsUser::Errors, AcsUser::PendingMutations, AcsUser::PendingMutations::From, AcsUser::PendingMutations::To, AcsUser::SaltoKsMetadata, AcsUser::SaltoSpaceMetadata, AcsUser::Warnings, ActionAttempt, ActionAttempt::ActivateClimatePreset::Error, ActionAttempt::ActivateClimatePreset::Result, ActionAttempt::AssignCredential::Error, ActionAttempt::AssignCredential::Result, ActionAttempt::AssignCredential::Result::Errors, ActionAttempt::AssignCredential::Result::PendingMutations, ActionAttempt::AssignCredential::Result::PendingMutations::From, ActionAttempt::AssignCredential::Result::PendingMutations::To, ActionAttempt::AssignCredential::Result::Warnings, ActionAttempt::ConfigureAutoLock::Error, ActionAttempt::ConfigureAutoLock::Result, ActionAttempt::CreateAccessCode::Error, ActionAttempt::CreateAccessCode::Result, ActionAttempt::CreateNoiseThreshold::Error, ActionAttempt::CreateNoiseThreshold::Result, ActionAttempt::DeleteAccessCode::Error, ActionAttempt::DeleteAccessCode::Result, ActionAttempt::DeleteNoiseThreshold::Error, ActionAttempt::DeleteNoiseThreshold::Result, ActionAttempt::EncodeCredential::Error, ActionAttempt::EncodeCredential::Result, ActionAttempt::EncodeCredential::Result::AkilesMetadata, ActionAttempt::EncodeCredential::Result::AssaAbloyVostioMetadata, ActionAttempt::EncodeCredential::Result::Errors, ActionAttempt::EncodeCredential::Result::VisionlineMetadata, ActionAttempt::EncodeCredential::Result::Warnings, ActionAttempt::Error, ActionAttempt::LockDoor::Error, ActionAttempt::LockDoor::Result, ActionAttempt::PushThermostatPrograms::Error, ActionAttempt::PushThermostatPrograms::Result, ActionAttempt::ResetSandboxWorkspace::Error, ActionAttempt::ResetSandboxWorkspace::Result, ActionAttempt::Result, ActionAttempt::ScanCredential::Error, ActionAttempt::ScanCredential::Result, ActionAttempt::ScanCredential::Result::AcsCredentialOnEncoder, ActionAttempt::ScanCredential::Result::AcsCredentialOnEncoder::VisionlineMetadata, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam::AkilesMetadata, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam::AssaAbloyVostioMetadata, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam::Errors, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam::VisionlineMetadata, ActionAttempt::ScanCredential::Result::AcsCredentialOnSeam::Warnings, ActionAttempt::ScanCredential::Result::Warnings, ActionAttempt::ScanToAssignCredential::Error, ActionAttempt::ScanToAssignCredential::Result, ActionAttempt::ScanToAssignCredential::Result::AkilesMetadata, ActionAttempt::ScanToAssignCredential::Result::AssaAbloyVostioMetadata, ActionAttempt::ScanToAssignCredential::Result::Errors, ActionAttempt::ScanToAssignCredential::Result::VisionlineMetadata, ActionAttempt::ScanToAssignCredential::Result::Warnings, ActionAttempt::SetFanMode::Error, ActionAttempt::SetFanMode::Result, ActionAttempt::SetHvacMode::Error, ActionAttempt::SetHvacMode::Result, ActionAttempt::SimulateKeypadCodeEntry::Error, ActionAttempt::SimulateKeypadCodeEntry::Result, ActionAttempt::SimulateManualLockViaKeypad::Error, ActionAttempt::SimulateManualLockViaKeypad::Result, ActionAttempt::SyncAccessCodes::Error, ActionAttempt::SyncAccessCodes::Result, ActionAttempt::UnlockDoor::Error, ActionAttempt::UnlockDoor::Result, ActionAttempt::UpdateAccessCode::Error, ActionAttempt::UpdateAccessCode::Result, ActionAttempt::UpdateNoiseThreshold::Error, ActionAttempt::UpdateNoiseThreshold::Result, Batch, ClientSession, ConnectWebview, ConnectedAccount, ConnectedAccount::Errors, ConnectedAccount::Errors::SaltoKsSubscriptionLimitExceeded::SaltoKsMetadata, ConnectedAccount::Errors::SaltoKsSubscriptionLimitExceeded::SaltoKsMetadata::Sites, ConnectedAccount::UserIdentifier, ConnectedAccount::Warnings, ConnectedAccount::Warnings::SaltoKsSubscriptionLimitAlmostReached::SaltoKsMetadata, ConnectedAccount::Warnings::SaltoKsSubscriptionLimitAlmostReached::SaltoKsMetadata::Sites, CustomerPortal, Device, Device::DeviceManufacturer, Device::DeviceProvider, Device::Errors, Device::Location, Device::Properties, Device::Properties::AccessoryKeypad, Device::Properties::AccessoryKeypad::Battery, Device::Properties::ActiveThermostatSchedule, Device::Properties::ActiveThermostatSchedule::Errors, Device::Properties::AkilesMetadata, Device::Properties::Appearance, Device::Properties::AqaraMetadata, Device::Properties::AssaAbloyCredentialServiceMetadata, Device::Properties::AssaAbloyCredentialServiceMetadata::Endpoints, Device::Properties::AssaAbloyVostioMetadata, Device::Properties::AugustMetadata, Device::Properties::AvailableClimatePresets, Device::Properties::AvailableClimatePresets::EcobeeMetadata, Device::Properties::AvigilonAltaMetadata, Device::Properties::Battery, Device::Properties::BrivoMetadata, Device::Properties::CodeConstraints, Device::Properties::ControlbywebMetadata, Device::Properties::CurrentClimateSetting, Device::Properties::CurrentClimateSetting::EcobeeMetadata, Device::Properties::DefaultClimateSetting, Device::Properties::DefaultClimateSetting::EcobeeMetadata, Device::Properties::DormakabaOracodeMetadata, Device::Properties::DormakabaOracodeMetadata::PredefinedTimeSlots, Device::Properties::EcobeeMetadata, Device::Properties::FourSuitesMetadata, Device::Properties::GenieMetadata, Device::Properties::HoneywellResideoMetadata, Device::Properties::IglooMetadata, Device::Properties::IgloohomeMetadata, Device::Properties::KeynestMetadata, Device::Properties::KeypadBattery, Device::Properties::KisiMetadata, Device::Properties::KorelockMetadata, Device::Properties::KwiksetMetadata, Device::Properties::LocklyMetadata, Device::Properties::MinutMetadata, Device::Properties::MinutMetadata::LatestSensorValues, Device::Properties::MinutMetadata::LatestSensorValues::AccelerometerZ, Device::Properties::MinutMetadata::LatestSensorValues::Humidity, Device::Properties::MinutMetadata::LatestSensorValues::Pressure, Device::Properties::MinutMetadata::LatestSensorValues::Sound, Device::Properties::MinutMetadata::LatestSensorValues::Temperature, Device::Properties::Model, Device::Properties::NestMetadata, Device::Properties::NoiseawareMetadata, Device::Properties::NukiMetadata, Device::Properties::OfflineTimeFrameOptions, Device::Properties::OfflineTimeFrameOptions::TimePairs, Device::Properties::OmnitecMetadata, Device::Properties::OnlineTimeFrameOptions, Device::Properties::OnlineTimeFrameOptions::TimePairs, Device::Properties::RingMetadata, Device::Properties::SaltoKsMetadata, Device::Properties::SaltoMetadata, Device::Properties::SaltoSpaceCredentialServiceMetadata, Device::Properties::SchlageMetadata, Device::Properties::SeamBridgeMetadata, Device::Properties::SensiMetadata, Device::Properties::SmartthingsMetadata, Device::Properties::TadoMetadata, Device::Properties::TedeeMetadata, Device::Properties::TemperatureThreshold, Device::Properties::ThermostatDailyPrograms, Device::Properties::ThermostatDailyPrograms::Periods, Device::Properties::ThermostatWeeklyProgram, Device::Properties::TtlockMetadata, Device::Properties::TtlockMetadata::Features, Device::Properties::TtlockMetadata::WirelessKeypads, Device::Properties::TwoNMetadata, Device::Properties::UltraloqMetadata, Device::Properties::VisionlineMetadata, Device::Properties::WyzeMetadata, Device::Properties::YacanMetadata, Device::Warnings, DeviceProvider, InstantKey, InstantKey::Customization, NoiseThreshold, Pagination, Phone, Phone::Errors, Phone::Properties, Phone::Properties::AssaAbloyCredentialServiceMetadata, Phone::Properties::AssaAbloyCredentialServiceMetadata::Endpoints, Phone::Properties::SaltoSpaceCredentialServiceMetadata, Phone::Warnings, SeamEvent, SeamEvent::AccessCodeChanged::ChangedProperties, SeamEvent::AccessCodeCodeChanged::From, SeamEvent::AccessCodeCodeChanged::To, SeamEvent::AccessCodeDelayInRemovingFromDevice::AccessCodeErrors, SeamEvent::AccessCodeDelayInRemovingFromDevice::AccessCodeWarnings, SeamEvent::AccessCodeDelayInRemovingFromDevice::ConnectedAccountErrors, SeamEvent::AccessCodeDelayInRemovingFromDevice::ConnectedAccountWarnings, SeamEvent::AccessCodeDelayInRemovingFromDevice::DeviceErrors, SeamEvent::AccessCodeDelayInRemovingFromDevice::DeviceWarnings, SeamEvent::AccessCodeDelayInSettingOnDevice::AccessCodeErrors, SeamEvent::AccessCodeDelayInSettingOnDevice::AccessCodeWarnings, SeamEvent::AccessCodeDelayInSettingOnDevice::ConnectedAccountErrors, SeamEvent::AccessCodeDelayInSettingOnDevice::ConnectedAccountWarnings, SeamEvent::AccessCodeDelayInSettingOnDevice::DeviceErrors, SeamEvent::AccessCodeDelayInSettingOnDevice::DeviceWarnings, SeamEvent::AccessCodeFailedToRemoveFromDevice::AccessCodeErrors, SeamEvent::AccessCodeFailedToRemoveFromDevice::AccessCodeWarnings, SeamEvent::AccessCodeFailedToRemoveFromDevice::ConnectedAccountErrors, SeamEvent::AccessCodeFailedToRemoveFromDevice::ConnectedAccountWarnings, SeamEvent::AccessCodeFailedToRemoveFromDevice::DeviceErrors, SeamEvent::AccessCodeFailedToRemoveFromDevice::DeviceWarnings, SeamEvent::AccessCodeFailedToSetOnDevice::AccessCodeErrors, SeamEvent::AccessCodeFailedToSetOnDevice::AccessCodeWarnings, SeamEvent::AccessCodeFailedToSetOnDevice::ConnectedAccountErrors, SeamEvent::AccessCodeFailedToSetOnDevice::ConnectedAccountWarnings, SeamEvent::AccessCodeFailedToSetOnDevice::DeviceErrors, SeamEvent::AccessCodeFailedToSetOnDevice::DeviceWarnings, SeamEvent::AccessCodeMutationsRequested::RequestedMutations, SeamEvent::AccessCodeNameChanged::From, SeamEvent::AccessCodeNameChanged::To, SeamEvent::AccessCodeTimeFrameChanged::From, SeamEvent::AccessCodeTimeFrameChanged::To, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::AccessCodeErrors, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::AccessCodeWarnings, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::ConnectedAccountErrors, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::ConnectedAccountWarnings, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::DeviceErrors, SeamEvent::AccessCodeUnmanagedFailedToConvertToManaged::DeviceWarnings, SeamEvent::AcsSystemDisconnected::AcsSystemErrors, SeamEvent::AcsSystemDisconnected::AcsSystemWarnings, SeamEvent::AcsSystemDisconnected::ConnectedAccountErrors, SeamEvent::AcsSystemDisconnected::ConnectedAccountWarnings, SeamEvent::ConnectedAccountDisconnected::ConnectedAccountErrors, SeamEvent::ConnectedAccountDisconnected::ConnectedAccountWarnings, SeamEvent::ConnectedAccountReauthorizationRequested::ConnectedAccountErrors, SeamEvent::ConnectedAccountReauthorizationRequested::ConnectedAccountWarnings, SeamEvent::DeviceAccessoryKeypadDisconnected::ConnectedAccountErrors, SeamEvent::DeviceAccessoryKeypadDisconnected::ConnectedAccountWarnings, SeamEvent::DeviceAccessoryKeypadDisconnected::DeviceErrors, SeamEvent::DeviceAccessoryKeypadDisconnected::DeviceWarnings, SeamEvent::DeviceConnectionBecameFlaky::ConnectedAccountErrors, SeamEvent::DeviceConnectionBecameFlaky::ConnectedAccountWarnings, SeamEvent::DeviceConnectionBecameFlaky::DeviceErrors, SeamEvent::DeviceConnectionBecameFlaky::DeviceWarnings, SeamEvent::DeviceDisconnected::ConnectedAccountErrors, SeamEvent::DeviceDisconnected::ConnectedAccountWarnings, SeamEvent::DeviceDisconnected::DeviceErrors, SeamEvent::DeviceDisconnected::DeviceWarnings, SeamEvent::DeviceErrorSubscriptionRequired::ConnectedAccountErrors, SeamEvent::DeviceErrorSubscriptionRequired::ConnectedAccountWarnings, SeamEvent::DeviceErrorSubscriptionRequired::DeviceErrors, SeamEvent::DeviceErrorSubscriptionRequired::DeviceWarnings, SeamEvent::DeviceUnmanagedDisconnected::ConnectedAccountErrors, SeamEvent::DeviceUnmanagedDisconnected::ConnectedAccountWarnings, SeamEvent::DeviceUnmanagedDisconnected::DeviceErrors, SeamEvent::DeviceUnmanagedDisconnected::DeviceWarnings, SeamEvent::LockAccessDenied::Reason, Space, Space::CustomerData, Space::Geolocation, ThermostatDailyProgram, ThermostatDailyProgram::Periods, ThermostatSchedule, ThermostatSchedule::Errors, UnmanagedAccessCode, UnmanagedAccessCode::DormakabaOracodeMetadata, UnmanagedAccessCode::Errors, UnmanagedAccessCode::Errors::ConflictingExternalModification::ModifiedFields, UnmanagedAccessCode::Warnings, UnmanagedAccessCode::Warnings::ExternalModificationInEffect::ModifiedFields, UnmanagedAccessGrant, UnmanagedAccessGrant::Errors, UnmanagedAccessGrant::PendingMutations, UnmanagedAccessGrant::PendingMutations::From, UnmanagedAccessGrant::PendingMutations::To, UnmanagedAccessGrant::RequestedAccessMethods, UnmanagedAccessGrant::Warnings, UnmanagedAccessGrant::Warnings::OverprovisionedAccess::FailedDevices, UnmanagedAccessMethod, UnmanagedAccessMethod::Errors, UnmanagedAccessMethod::PendingMutations, UnmanagedAccessMethod::PendingMutations::From, UnmanagedAccessMethod::PendingMutations::To, UnmanagedAccessMethod::Warnings, UnmanagedDevice, UnmanagedDevice::Errors, UnmanagedDevice::Location, UnmanagedDevice::Properties, UnmanagedDevice::Properties::AccessoryKeypad, UnmanagedDevice::Properties::AccessoryKeypad::Battery, UnmanagedDevice::Properties::Battery, UnmanagedDevice::Properties::Model, UnmanagedDevice::Warnings, UnmanagedUserIdentity, UnmanagedUserIdentity::Errors, UnmanagedUserIdentity::Warnings, UserIdentity, UserIdentity::Errors, UserIdentity::Warnings, Webhook, Workspace, Workspace::ConnectWebviewCustomization
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(data, client = nil) ⇒ BaseResource
Returns a new instance of BaseResource.
11
12
13
14
15
|
# File 'lib/seam/base_resource.rb', line 11
def initialize(data, client = nil)
@data = data
@client = client
process_data_attributes(@data)
end
|
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
9
10
11
|
# File 'lib/seam/base_resource.rb', line 9
def client
@client
end
|
#data ⇒ Object
Returns the value of attribute data.
9
10
11
|
# File 'lib/seam/base_resource.rb', line 9
def data
@data
end
|
Class Method Details
.aliased_accessor(attr, from:) ⇒ Object
64
65
66
67
|
# File 'lib/seam/base_resource.rb', line 64
def self.aliased_accessor(attr, from:)
attribute_aliases[from.to_s] = attr
attr_accessor attr
end
|
.attribute_aliases ⇒ Object
97
98
99
|
# File 'lib/seam/base_resource.rb', line 97
def self.attribute_aliases
@attribute_aliases ||= {}
end
|
.date_accessor(*attrs) ⇒ Object
101
102
103
104
105
106
107
108
109
|
# File 'lib/seam/base_resource.rb', line 101
def self.date_accessor(*attrs)
attrs.each do |attr|
define_method(attr) do
value = instance_variable_get(:"@#{attr}")
value.nil? ? nil : parse_datetime(value)
end
end
end
|
.discriminated_by(attribute, variants) ⇒ Object
38
39
40
41
|
# File 'lib/seam/base_resource.rb', line 38
def self.discriminated_by(attribute, variants)
@discriminator = attribute.to_s
@discriminated_variants = variants
end
|
.load_from_response(data, client = nil) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/seam/base_resource.rb', line 22
def self.load_from_response(data, client = nil)
return nil if data.nil?
if data.is_a?(Array)
data.map { |item| load_from_response(item, client) }
else
resource_class = if data.is_a?(Hash) && @discriminator
value = data[@discriminator] || data[@discriminator.to_sym]
@discriminated_variants.fetch(value, self)
else
self
end
resource_class.new(data, client)
end
end
|
.resource_accessor(attr, resource_class) ⇒ Object
59
60
61
62
|
# File 'lib/seam/base_resource.rb', line 59
def self.resource_accessor(attr, resource_class)
resource_accessors[attr.to_s] = resource_class
attr_accessor attr
end
|
.resource_accessors ⇒ Object
89
90
91
|
# File 'lib/seam/base_resource.rb', line 89
def self.resource_accessors
@resource_accessors ||= {}
end
|
.resource_list_accessor(attr, resource_class) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/seam/base_resource.rb', line 69
def self.resource_list_accessor(attr, resource_class)
resource_list_accessors[attr.to_s] = resource_class
attr_writer attr
define_method(attr) do
value = instance_variable_get(:"@#{attr}")
value.is_a?(Array) ? value : []
end
end
|
.resource_list_accessors ⇒ Object
93
94
95
|
# File 'lib/seam/base_resource.rb', line 93
def self.resource_list_accessors
@resource_list_accessors ||= {}
end
|
Instance Method Details
#[](key) ⇒ Object
52
53
54
55
56
57
|
# File 'lib/seam/base_resource.rb', line 52
def [](key)
name = key.to_s
return nil unless respond_to?(name)
public_send(name)
end
|
#inspect ⇒ Object
43
44
45
46
47
48
49
50
|
# File 'lib/seam/base_resource.rb', line 43
def inspect
"<#{self.class.name}:#{"0x00%x" % (object_id << 1)}\n" + instance_variables
.map { |k| k.to_s.sub("@", "") }
.filter { |k| k != "data" and k != "client" and respond_to? k }
.map { |k| " #{k}=#{send(k).inspect}" }
.join("\n") + ">"
end
|
#update_from_response(data) ⇒ Object
17
18
19
20
|
# File 'lib/seam/base_resource.rb', line 17
def update_from_response(data)
@data = data
process_data_attributes(@data)
end
|