Skip to content

Commit eb1abd5

Browse files
authored
Fix Casting To Custom
Handle the casting of object to custom classes internally Merge pull request #89 from lipkau/fix/#88-FixCastingToCustom
2 parents 0343511 + 7ec2999 commit eb1abd5

File tree

8 files changed

+44
-15
lines changed

8 files changed

+44
-15
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function ConvertTo-HashTable {
2+
<#
3+
.SYNOPSIS
4+
Converts a PSCustomObject to Hashtable
5+
6+
.DESCRIPTION
7+
PowerShell v4 on Windows 8.1 seems to have trouble casting [PSCustomObject] to custom classes.
8+
This function is a workaround, as casting from [Hashtable] is no problem.
9+
#>
10+
param(
11+
# Object to convert
12+
[Parameter(Mandatory = $true)]
13+
[PSCustomObject]$InputObject
14+
)
15+
16+
begin {
17+
$hash = @{}
18+
$InputObject.PSObject.properties | Foreach-Object {
19+
$hash[$_.Name] = $_.Value
20+
}
21+
Write-Output $hash
22+
}
23+
}

ConfluencePS/Private/ConvertTo-Icon.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ function ConvertTo-Icon {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Icon"
18-
($object | Select-Object `
18+
[ConfluencePS.Icon](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
Path,
2020
Width,
2121
Height,
2222
IsDefault
23-
) -as [ConfluencePS.Icon]
23+
))
2424
}
2525
}
2626
}

ConfluencePS/Private/ConvertTo-Label.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ function ConvertTo-Label {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Label"
18-
($object | Select-Object `
18+
[ConfluencePS.Label](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
id,
2020
name,
2121
prefix
22-
) -as [ConfluencePS.Label]
22+
))
2323
}
2424
}
2525
}

ConfluencePS/Private/ConvertTo-Page.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function ConvertTo-Page {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Page"
18-
($object | Select-Object `
18+
[ConfluencePS.Page](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
id,
2020
status,
2121
title,
@@ -55,7 +55,7 @@ function ConvertTo-Page {
5555
else {$null}
5656
}
5757
}
58-
) -as [ConfluencePS.Page]
58+
))
5959
}
6060
}
6161
}

ConfluencePS/Private/ConvertTo-PageAncestor.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ function ConvertTo-PageAncestor {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Page (Ancestor)"
18-
($object | Select-Object `
18+
[ConfluencePS.Page](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
id,
2020
status,
2121
title
22-
) -as [ConfluencePS.Page]
22+
))
2323
}
2424
}
2525
}

ConfluencePS/Private/ConvertTo-Space.ps1

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,25 @@ function ConvertTo-Space {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Space"
18-
($object | Select-Object `
18+
[ConfluencePS.Space](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
id,
2020
key,
2121
name,
2222
@{Name = "description"; Expression = {$_.description.plain.value}},
23-
icon,
23+
@{Name = "Icon"; Expression = {
24+
if ($_.icon) {
25+
ConvertTo-Icon $_.icon
26+
}
27+
else {$null}
28+
}
29+
},
2430
type,
2531
@{Name = "Homepage"; Expression = {
2632
if ($_.homepage -is [PSCustomObject]) {
2733
ConvertTo-Page $_.homepage
2834
} else {$null} # homepage might be a string
2935
}}
30-
) -as [ConfluencePS.Space]
36+
))
3137
}
3238
}
3339
}

ConfluencePS/Private/ConvertTo-User.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ function ConvertTo-User {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to User"
18-
($object | Select-Object `
18+
[ConfluencePS.User](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
username,
2020
userKey,
2121
@{Name = "profilePicture"; Expression = { ConvertTo-Icon $_.profilePicture }},
2222
displayname
23-
) -as [ConfluencePS.User]
23+
))
2424
}
2525
}
2626
}

ConfluencePS/Private/ConvertTo-Version.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ function ConvertTo-Version {
1515
Process {
1616
foreach ($object in $InputObject) {
1717
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Converting Object to Version"
18-
($object | Select-Object `
18+
[ConfluencePS.Version](ConvertTo-Hashtable -InputObject ($object | Select-Object `
1919
@{Name = "by"; Expression = { ConvertTo-User $_.by }},
2020
when,
2121
friendlyWhen,
2222
number,
2323
message,
2424
minoredit
25-
) -as [ConfluencePS.Version]
25+
))
2626
}
2727
}
2828
}

0 commit comments

Comments
 (0)