Public/Connect-LemmyInstance.ps1
Function Connect-LemmyInstance { <# .SYNOPSIS Use to authenticate to a Lemmy Instance. .PARAMETER Instance The URI of the lemmy instance .PARAMETER Credential A credential object with the username and password. Will be prompted if not supplied. .PARAMETER ApiVersion The Lemmy api version to use. Default to v3. You should not need to change this. .PARAMETER SkipCertificateCheck Use to skip certificate checks. Should only be used if you know what you are doing with it. .EXAMPLE An example .NOTES General notes #> [CmdletBinding()] param( [parameter(Mandatory=$true)] [Alias('Uri','Site')] [string]$Instance, [parameter(Mandatory=$false)] [pscredential]$Credential, [parameter(Mandatory=$false)] [string]$ApiVersion = 'v3', [parameter(Mandatory=$false)] [switch]$SkipCertificateCheck=$false ) if(-not $PSBoundParameters['Credential']){ $Credential = Get-Credential } $RequestBody = @{ password = $credential.GetNetworkCredential().Password username_or_email = $Credential.UserName } | ConvertTo-Json if($Instance -notmatch 'https://'){ $Instance = 'https://' + $Instance } $Instance = $Instance -replace ('/$', '') $InvokeRestMethodParam = @{ Uri = "$($Instance)/api/$($ApiVersion)/user/login" Method = 'POST' Body = $RequestBody ContentType = 'application/json' SkipCertificateCheck = $SkipCertificateCheck } $authRequest = Invoke-RestMethod @InvokeRestMethodParam $LemmyInstance = [PSCustomObject]@{ Domain = $Instance auth = $authRequest.jwt SkipCertificateCheck = $SkipCertificateCheck Api = $ApiVersion } $global:__LemmyInstance = $LemmyInstance Write-Output "Connected to $($global:__LemmyInstance.Domain)" } |