Private/ConvertTo-InfisicalIdentity.ps1
|
# ConvertTo-InfisicalIdentity.ps1 # Converts an Infisical API identity response into an InfisicalIdentity instance. # Called by: Public identity functions. # Dependencies: InfisicalIdentity class function ConvertTo-InfisicalIdentity { [CmdletBinding()] [OutputType([InfisicalIdentity])] param( [Parameter(Mandatory)] [PSObject] $IdentityData ) $identity = [InfisicalIdentity]::new() $identity.Id = if ($IdentityData -is [hashtable]) { if ($IdentityData.ContainsKey('id')) { $IdentityData['id'] } else { '' } } else { if ($IdentityData.id) { $IdentityData.id } else { '' } } $identity.Name = if ($IdentityData -is [hashtable]) { if ($IdentityData.ContainsKey('name')) { $IdentityData['name'] } else { '' } } else { $prop = $IdentityData.PSObject.Properties['name'] if ($null -ne $prop) { $prop.Value } else { '' } } # OrgId may come as 'orgId' or 'organizationId' $orgId = if ($IdentityData -is [hashtable]) { if ($IdentityData.ContainsKey('orgId')) { $IdentityData['orgId'] } elseif ($IdentityData.ContainsKey('organizationId')) { $IdentityData['organizationId'] } else { '' } } else { if ($null -ne $IdentityData.PSObject.Properties['orgId']) { $IdentityData.orgId } elseif ($null -ne $IdentityData.PSObject.Properties['organizationId']) { $IdentityData.organizationId } else { '' } } $identity.OrganizationId = $orgId $identity.Role = if ($IdentityData -is [hashtable]) { if ($IdentityData.ContainsKey('role')) { $IdentityData['role'] } else { '' } } else { $prop = $IdentityData.PSObject.Properties['role'] if ($null -ne $prop) { $prop.Value } else { '' } } # Auth methods array $hasAuthMethods = if ($IdentityData -is [hashtable]) { $IdentityData.ContainsKey('authMethods') } else { $null -ne $IdentityData.PSObject.Properties['authMethods'] } if ($hasAuthMethods -and $null -ne $IdentityData.authMethods) { $identity.AuthMethods = @($IdentityData.authMethods) } # Delete protection $hasProtection = if ($IdentityData -is [hashtable]) { $IdentityData.ContainsKey('hasDeleteProtection') } else { $null -ne $IdentityData.PSObject.Properties['hasDeleteProtection'] } $identity.HasDeleteProtection = if ($hasProtection) { [bool]$IdentityData.hasDeleteProtection } else { $false } # Metadata $hasMeta = if ($IdentityData -is [hashtable]) { $IdentityData.ContainsKey('metadata') } else { $null -ne $IdentityData.PSObject.Properties['metadata'] } if ($hasMeta -and $null -ne $IdentityData.metadata -and @($IdentityData.metadata).Count -gt 0) { $ht = @{} foreach ($entry in $IdentityData.metadata) { $k = if ($entry -is [hashtable]) { $entry['key'] } else { $entry.key } $v = if ($entry -is [hashtable]) { $entry['value'] } else { $entry.value } if ($k) { $ht[$k] = $v } } $identity.Metadata = $ht } # Timestamps $parsedDate = [datetime]::MinValue if ($IdentityData.createdAt -and [datetime]::TryParse($IdentityData.createdAt, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$parsedDate)) { $identity.CreatedAt = $parsedDate } if ($IdentityData.updatedAt -and [datetime]::TryParse($IdentityData.updatedAt, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$parsedDate)) { $identity.UpdatedAt = $parsedDate } return $identity } |