Functions/Public/Set-GitHubSessionInformation.ps1

function Set-GitHubSessionInformation {
<#
    .SYNOPSIS
    Create information for this session
 
    .DESCRIPTION
    Create information for this session
 
    .PARAMETER Username
    The username that has priveleges to manage the repository
 
    .PARAMETER APIKey
    The personal access token associated with the username
 
    .INPUTS
    System.String
 
    .OUTPUTS
    System.Management.Automation.PSObject
 
    .EXAMPLE
    Set-GitHubSessionInformation -Username user -APIKey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
#>

[CmdletBinding(SupportsShouldProcess,ConfirmImpact="Low")][OutputType('System.Management.Automation.PSObject')]

    Param (

        [Parameter(Mandatory=$true, Position=0)]
        [ValidateNotNullOrEmpty()]
        [String]$Username,

        [Parameter(Mandatory=$true, Position=1)]
        [ValidateNotNullOrEmpty()]
        [String]$APIKey

    )

    Write-Verbose -Message "Creating new SessionState variable GithubSessionInformation"

    try {

        if ($PSCmdlet.ShouldProcess("GithubSessionInformation")){

            $EncodedAuth = [System.Text.Encoding]::UTF8.GetBytes("$($Username):$($APIKey)")

            $Script:GithubSessionInformation = [PSCustomObject]@{

                Username = $Username
                Authorization = [System.Convert]::ToBase64String($EncodedAuth)

            }

        }

    } catch {

        throw $_.Exception

    }

    Write-Output $Script:GithubSessionInformation

}