Public/Add-DokuPageData.ps1

function Add-DokuPageData {
    <#
    .SYNOPSIS
        Appends wiki text to the end of a page.
 
    .DESCRIPTION
        Appends wiki text to the end of a page. Can create new page or namespace by referencing a (currnely non-existant) page / namespace
 
    .PARAMETER FullName
        The full name of the to-be-edited page, including parent namespace(s)
 
    .PARAMETER RawWikiText
        The raw wiki text to append to the page
 
    .PARAMETER PassThru
        Pass the newly created page object back out
 
    .PARAMETER MinorChange
        State if the change was minor or not
 
    .PARAMETER SummaryText
        A short summary of the change, visible in the revisions list
 
    .EXAMPLE
        PS C:\> Add-DokuPageData -FullName 'namespace:page' -RawWikiText 'TEST TEST TEST'
 
    .OUTPUTS
        System.Boolean, System.Management.Automation.PSObject
 
    .NOTES
        AndyDLP - 2018-05-26
 
    .LINK
        https://github.com/AndyDLP/PSDokuWiki
#>


    [CmdletBinding(PositionalBinding = $true, SupportsShouldProcess=$True, ConfirmImpact='Medium')]
    [OutputType([boolean], [psobject])]
    param
    (
        [Parameter(Mandatory = $true,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName=$true,
            Position = 1,
            HelpMessage = 'The full name of the to-be-edited page, including parent namespace(s)')]
        [ValidateNotNullOrEmpty()]
        [string[]]$FullName,
        [Parameter(Mandatory = $true,
            Position = 2,
            HelpMessage = 'The raw wiki text to append to the page')]
        [ValidateNotNullOrEmpty()]
        [string]$RawWikiText,
        [Parameter(Position = 3,
            HelpMessage = 'State if the change was minor or not')]
        [switch]$MinorChange,
        [Parameter(Position = 4,
            HelpMessage = 'A short summary of the change')]
        [string]$SummaryText,
        [Parameter(Position = 5,
            HelpMessage = 'Pass the newly created object back out')]
        [switch]$PassThru
    )

    begin {

    } # begin

    process {
        foreach ($Page in $FullName) {
            If ($PSCmdlet.ShouldProcess("Add data: $RawWikiText to page: $Page")) {
                $Change = if ($MinorChange) {$true} else {$false}
                $APIResponse = Invoke-DokuApiCall -MethodName 'dokuwiki.appendPage' -MethodParameters @($Page, $RawWikiText, @{ sum = $SummaryText; minor = [int]$Change })
                if ($APIResponse.CompletedSuccessfully -eq $true) {
                    if ($PassThru) {
                        $PageObject = New-Object PSObject -Property @{
                            FullName        = $Page
                            AddedText       = $RawWikiText
                            MinorChange     = $MinorChange
                            SummaryText     = $SummaryText
                            PageName        = ($Page -split ":")[-1]
                            ParentNamespace = ($Page -split ":")[-2]
                            RootNamespace   = ($Page -split ":")[0]
                        }
                        $PageObject
                    }
                } elseif ($null -eq $APIResponse.ExceptionMessage) {
                    Write-Error "Fault code: $($APIResponse.FaultCode) - Fault string: $($APIResponse.FaultString)"
                } else {
                    Write-Error "Exception: $($APIResponse.ExceptionMessage)"
                }
            } # should process
        } # foreach
    } # process

    end {

    } # end
}