Skip to content

From v0.X to v1.X

This is a brief guide on migrating from Pode v0.X to Pode v1.X.

In Pode v1.X all functions were refactored from short syntax (ie, route), to PowerShell syntax (ie, Add-PodeRoute). This means some of the older functions, such as header have now been split out into 4, or more, different functions.

Also being changed is the pode.json configuration file, which is now a server.<env>.psd1 file.

Note

With all the functions being refactored, the old syntax of not needing to supply parameter names (and relying on position) is gone - for a lot of cases. It's now worth referencing parameters by name (-Name, -ScriptBlock, etc.).

Authentication

(Tutorial)

The old auth use has been split into two to make it easier - there are now functions that define authentication types (which retrieve credentials from the request object), and validators (which take the credentials and ensure the user is valid).

For auth check, this has now been replaced with Get-PodeAuthMiddleware, and the hashtable is now function parameters.

Types

Using inbuilt authentication types, and creating custom types, is now possible use the New-PodeAuthType function. This function will return valid Basic, Form, or Custom authentication types for use with Add-PodeAuth and Add-PodeAuthWindowsAd.

Validators

Configuring an authentication validator is now a case of using the Add-PodeAuth function with a -Name and a -ScriptBlock.

For inbuilt validators, like Windows AD, you can use Add-PodeAuthWindowsAd.

In both cases, the -Type parameter comes from using New-PodeAuthType.

Functions
Add-PodeAuth
Add-PodeAuthWindowsAd
Remove-PodeAuth
Clear-PodeAuth

Cookies

Cookies use to be done via actions following the cookie function, such as cookie set. These actions are now the following functions:

Action Function
cookie check Test-PodeCookieSigned
cookie exists Test-PodeCookie
cookie extend Update-PodeCookieExpiry
cookie get Get-PodeCookie
cookie remove Remove-PodeCookie
cookie secrets Get-PodeCookieSecret and Set-PodeCookieSecret
cookie set Set-PodeCookie

Configuration

(Tutorial)

The config function has simply been renamed to Get-PodeConfig.

PSD1

The pode.<env>.json configuration files have been changed from json to psd1 format, and their name changed from pode to server.

The structure of the file name still uses the environment format: server.<env>.psd1.

The structure of the file itself is basically a PowerShell hashtable, so the following:

{
    "server": {
        "fileMonitor": {
            "enable": true
        }
    }
}

would now be:

@{
    Server = @{
        FileMonitor = @{
            Enable = $true
        }
    }
}

Flash Messages

(Tutorial)

Flash messages use to be done via actions following flash function, such as flash add. These actions are now the following functions:

Action Function
flash add Add-PodeFlashMessage
flash clear Clear-PodeFlashMessages
flash get Get-PodeFlashMessage
flash keys Get-PodeFlashMessageNames
flash remove Remove-PodeFlashMessage
flash test Test-PodeFlashMessage

GUI

(Tutorial)

The gui function use to take a Name with a hashtable of options. This function has now been renamed to Show-PodeGui, and the options are all now function parameters.

Handlers

(Tutorial)

The biggest change the Handlers is that you can now create multiple handlers for each of SMTP, TCP and Service - rather than just one. With this, the new Add-PodeHandler requires a -Name to be supplied.

Functions
Add-PodeHandler
Remove-PodeHandler
Clear-PodeHandlers

Headers

Headers use to be done via actions following the header function, such as header add. These actions are now the following functions:

Action Function
header add Add-PodeHeader
header get Get-PodeHeader
header set Set-PodeHeader
header exists Test-PodeHeader

Logging

(Tutorial)

Logging in Pode has had by far the biggest refactor, so big it's completely different - so it may just be worth looking at the tutorial.

The old logging used to only support logging Requests, whereas now it can log Requests, Errors, and anything else you feel like! You can also write to a custom log using the new write function.

Methods

Logging methods define how a log item should be logged. The inbuilt File and Terminal logging methods are now reusable, with the ability to now more easily create custom logging methods using New-PodeLoggingMethod. The output from this function can be used when enabling or adding logging types, such as with Add-PodeLogger.

Types

Request and Error logging are inbuilt logging types that can be enabled using Enable-PodeRequestLogging and Enable-PodeErrorLogging. To create a custom logger you can use the Add-PodeLogger function. In each case, the -Method comes from using New-PodeLoggingMethod.

Functions
Enable-PodeRequestLogging
Enable-PodeErrorLogging
Add-PodeLogger
Disable-PodeRequestLogging
Disable-PodeErrorLogging
Remove-PodeLogger
Clear-PodeLoggers

Writing Logs

You can now write items from anywhere in your server to a custom logger, including the inbuilt Error log.

Functions
Write-PodeErrorLog
Write-PodeLog

Middleware

(Tutorial)

General

Middleware has changed a fair bit, however, generally you'll just be using the Add-PodeMiddleware function with a -ScriptBlock which replaces the old middleware function. The only difference now is you're required to supply a -Name for the new Remove-PodeMiddleware function.

There is a new New-PodeMiddleware function which wil return a valid middleware object to re-use - such as piping into Add-PodeMiddleware, or using as -Middleware for Routes.

Functions
Add-PodeMiddleware
New-PodeMiddleware
Remove-PodeMiddleware
Clear-PodeMiddlewares

Sessions

(Tutorial)

The session function has now been replaced by the new Enable-PodeSessionMiddleware function. With the new function, not only will it automatically enabled session middleware for you, but the old -Options hashtable has now been converted into proper function parameters.

CSRF

(Tutorial)

The csrf function used to take actions that defined what it did, such as csrf token. Now, each of these actions has been split up into their own functions:

Action Function
csrf middleware Enable-PodeCsrfMiddleware
csrf setup Initialize-PodeCsrf
csrf check Get-PodeCsrfMiddleware
csrf token New-PodeCsrfToken

Note

Similar to the old setup, the Initialize-PodeCsrf function must be called before you can use Get-PodeCsrfMiddleware or New-PodeCsrfToken. The Enable-PodeCsrfMiddleware does automatically call Initialize-PodeCsrf as well as configure CSRF globally.

Importing Modules/Scripts

(Tutorial)

The functions to import and load Modules, Scripts and SnapIns have all changed to the following:

Old Function
import Import-PodeModule and Import-PodeSnapIn
load Use-PodeScript

Response Helpers

The old response helpers have all been updated:

Old Function
engine Set-PodeViewEngine
view Write-PodeViewResponse
json Write-PodeJsonResponse
text Write-PodeTextResponse
xml Write-PodeXmlResponse
csv Write-PodeCsvResponse
html Write-PodeHtmlResponse
file Write-PodeFileResponse
attach Set-PodeResponseAttachment
save Save-PodeRequestFile
status Set-PodeResponseStatus
include Use-PodePartialView
redirect Move-PodeResponseUrl
tcp Write-PodeTcpClient and Read-PodeTcpClient

Routes

(Tutorial)

Normal

Normal routes defined via route can now be done using Add-PodeRoute. The parameters are practically the same, such as -Method, -Path and -ScriptBlock.

Functions
Add-PodeRoute
Remove-PodeRoute
Clear-PodeRoutes

Static

Static routes that used to be setup using route static are now setup using the new Add-PodeStaticRoute.

Functions
Add-PodeStaticRoute
Remove-PodeStaticRoute
Clear-PodeStaticRoutes

Schedules

(Tutorial)

Schedules haven't changed too much, though there are now some new functions to remove and clear schedules. The main one is that schedule has been changed to Add-PodeSchedule.

Functions
Add-PodeSchedule
Remove-PodeSchedule
Clear-PodeSchedules

Server

(Tutorial)

The server function has had a fair overhaul. A lot of the parameters which were old/legacy have now been removed - such as -Port, -IP, and all of the -Http swicthes.

The server function itself has been renamed to Start-PodeServer.

State

(Tutorial)

The shared state use to be done via actions following the state function, such as state set. These actions are now the following functions:

Action Function
state set Set-PodeState
state get Get-PodeState
state remove Remove-PodeState
state save Save-PodeState
state restore Restore-PodeState
state test Test-PodeState

Timers

(Tutorial)

Timers haven't changed too much, though there are now some new functions to remove and clear timers. The main one is that timer has been changed to Add-PodeTimer.

Functions
Add-PodeTimer
Remove-PodeTimer
Clear-PodeTimers