Internal/ConvertTo-JiraLink.ps1
function ConvertTo-JiraLink { [CmdletBinding()] param( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]] $InputObject ) process { foreach ($i in $InputObject) { # Write-Debug "[ConvertTo-JiraLink] Processing object: '$i'" # Write-Debug "[ConvertTo-JiraLink] Defining standard properties" $props = @{ 'Id' = $i.id; 'RestUrl' = $i.self; } if ($i.globalId) {$props.globalId = $i.globalId} if ($i.application) { $props.application = New-Object PSObject -Prop @{ type = $i.application.type name = $i.application.name } } if ($i.relationship) {$props.relationship = $i.relationship} if ($i.object) { if ($i.object.icon) { $icon = New-Object PSObject -Prop @{ title = $i.object.icon.title url16x16 = $i.object.icon.url16x16 } } else { $icon = $null } if ($i.object.status.icon) { $statusIcon = New-Object PSObject -Prop @{ link = $i.object.status.icon.link title = $i.object.status.icon.title url16x16 = $i.object.status.icon.url16x16 } } else { $statusIcon = $null } if ($i.object.status) { $status = New-Object PSObject -Prop @{ resolved = $i.object.status.resolved icon = $statusIcon } } else { $status = $null } $props.object = New-Object PSObject -Prop @{ url = $i.object.url title = $i.object.title summary = $i.object.summary icon = $icon status = $status } } # Write-Debug "[ConvertTo-JiraLink] Creating PSObject out of properties" $result = New-Object -TypeName PSObject -Property $props # Write-Debug "[ConvertTo-JiraLink] Inserting type name information" $result.PSObject.TypeNames.Insert(0, 'JiraPS.Link') # Write-Debug "[ConvertTo-JiraLink] Inserting custom toString() method" $result | Add-Member -MemberType ScriptMethod -Name "ToString" -Force -Value { Write-Output "$($this.Id)" } # Write-Debug "[ConvertTo-JiraLink] Outputting object" Write-Output $result } } end { # Write-Debug "[ConvertTo-JiraLink] Complete" } } |