Private/ConvertTo-InfisicalFolder.ps1
|
# ConvertTo-InfisicalFolder.ps1 # Converts an Infisical API folder response object into an InfisicalFolder instance. # Called by: Public folder functions that return InfisicalFolder objects. # Dependencies: InfisicalFolder class function ConvertTo-InfisicalFolder { [CmdletBinding()] [OutputType([InfisicalFolder])] param( [Parameter(Mandatory)] [PSObject] $FolderData, [Parameter(Mandatory)] [string] $Environment, [Parameter(Mandatory)] [string] $ProjectId, [Parameter()] [string] $FallbackPath = '/' ) $folder = [InfisicalFolder]::new() $folder.Id = if ($FolderData -is [hashtable]) { if ($FolderData.ContainsKey('id')) { $FolderData['id'] } else { '' } } else { if ($FolderData.id) { $FolderData.id } else { '' } } $folder.Name = if ($FolderData -is [hashtable]) { $FolderData['name'] } else { $FolderData.name } $folder.Environment = $Environment $folder.ProjectId = $ProjectId # Path from response or fallback $hasPath = if ($FolderData -is [hashtable]) { $FolderData.ContainsKey('path') } else { $null -ne $FolderData.PSObject.Properties['path'] } $folder.Path = if ($hasPath -and $FolderData.path) { $FolderData.path } else { $FallbackPath } # Description $hasDesc = if ($FolderData -is [hashtable]) { $FolderData.ContainsKey('description') } else { $null -ne $FolderData.PSObject.Properties['description'] } $folder.Description = if ($hasDesc -and $FolderData.description) { $FolderData.description } else { '' } # Parse timestamps safely with invariant culture $parsedDate = [datetime]::MinValue if ($FolderData.createdAt -and [datetime]::TryParse($FolderData.createdAt, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$parsedDate)) { $folder.CreatedAt = $parsedDate } if ($FolderData.updatedAt -and [datetime]::TryParse($FolderData.updatedAt, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$parsedDate)) { $folder.UpdatedAt = $parsedDate } return $folder } |