public/Publish-XSocialMediaContent.ps1

function Publish-XSocialMediaContent {
    <#
        .EXAMPLE
            Publish-XSocialMediaContent -ConsumerKey $ConsumerKey -ConsumerSecret $ConsumerSecret -Token $Token -TokenSecret $TokenSecret -Filter $Filter -Path $Path
     
    #>

    [CmdletBinding()]
    param(

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$ConsumerKey,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$ConsumerSecret,

        [Parameter(Mandatory=$true)]
        [ValidateSet('lineups','predictions','rumours','transfers')]
        [string]$Content,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Filter,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Path,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Token,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$TokenSecret

    )
    process{

        $ErrorActionPreference = 'Stop'

        try {

            # Create the directory
            New-Directory -Path "$Path\temp\$Content"

            # Test if path exists
            $PathExists = Test-Path -Path $Path -ErrorAction Stop

            if ($PathExists) {

                # Get files to process
                $FilesToProcess =  Get-ChildItem -Path "$Path\temp\$Content" -Recurse -File -Filter '*.txt' -ErrorAction Stop | Where-Object {$_.FullName -like "*$Filter*"}

                $Hash =@{
                    Path = $Path
                    FilesToProcess = $($FilesToProcess.Count)
                    Filter = $Filter
                }

                $Hash | Format-Table

                foreach ($FileToProcess in $FilesToProcess) {

                    Write-Warning -Message "$($MyInvocation.MyCommand.Name): Porcessing $($FileToProcess.Name)"

                    $Text = Get-Content -Path $($FileToProcess.FullName) -Raw -ErrorAction Stop

                    Invoke-XPost -ConsumerKey $ConsumerKey -ConsumerSecret $ConsumerSecret -Token $Token -TokenSecret $TokenSecret -Text $Text

                } # foreach

            } # if

        }
        catch {

            throw "$($MyInvocation.MyCommand.Name): $_.Exception.Message"

        } # try catch
  
    } # process

} # function