Public/Get-DokuPageVersionData.ps1

function Get-DokuPageVersionData {
<#
    .SYNOPSIS
        Returns the raw Wiki text for a specific version of a page
 
    .DESCRIPTION
        Returns the raw Wiki text for a specific version of a page
 
    .PARAMETER DokuSession
        The DokuSession (generated by New-DokuSession) from which to get the page data
 
    .PARAMETER FullName
        The full page name for which to return the data, including any namespaces
 
    .PARAMETER VersionTimestamp
        The timestamp for which version to get the info from
 
    .EXAMPLE
        PS C:\> $PageData = Get-DokuPageVersionData -DokuSession $DokuSession -FullName "namespace:namespace:page" -VersionTimestamp 1497464418
 
    .OUTPUTS
        System.Management.Automation.PSObject
 
    .NOTES
        AndyDLP - 2018-05-26
#>


    [CmdletBinding()]
    [OutputType([psobject])]
    param
    (
        [Parameter(Mandatory = $true,
                   Position = 1,
                   HelpMessage = 'The DokuSession from which to get the page data')]
        [ValidateNotNullOrEmpty()]
        [psobject]$DokuSession,
        [Parameter(Mandatory = $true,
                   Position = 2,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true,
                   HelpMessage = 'The full page name for which to return the data')]
        [ValidateNotNullOrEmpty()]
        [string[]]$FullName,
        [Parameter(Mandatory = $true,
                   Position = 3,
                   HelpMessage = 'The timestamp for which version to get the info from')]
        [ValidateNotNullOrEmpty()]
        [int]$VersionTimestamp
    )

    begin {

    } # begin

    process {
        foreach ($PageName in $FullName) {
            $APIResponse = Invoke-DokuApiCall -DokuSession $DokuSession -MethodName 'wiki.getPageVersion' -MethodParameters @($PageName,$VersionTimestamp)
            if ($APIResponse.CompletedSuccessfully -eq $true) {
                $PageObject = New-Object PSObject -Property @{
                    FullName = $PageName
                    VersionTimestamp = $VersionTimestamp
                    RawText = [string]($APIResponse.XMLPayloadResponse  | Select-Xml -XPath "//value/string").Node.InnerText
                    PageName = ($PageName -split ":")[-1]
                    ParentNamespace = ($PageName -split ":")[-2]
                    RootNamespace = ($PageName -split ":")[0]
                }
                $PageObject
            } elseif ($null -eq $APIResponse.ExceptionMessage) {
                Write-Error "Fault code: $($APIResponse.FaultCode) - Fault string: $($APIResponse.FaultString)"
            } else {
                Write-Error "Exception: $($APIResponse.ExceptionMessage)"
            }
        }
    } # process

    end {

    } # end
}