Public/EnergyProducts/Get-OctopusEnergyHelperEnergyProductList.ps1


<#
.Synopsis
   Retrieves the list of energy products
.PARAMETER apikey
   The Octopus Energy API Key
.PARAMETER is_variable
   Show only variable products
.PARAMETER is_green
   Show only green products
.PARAMETER is_tracker
   Show only tracker products
.PARAMETER is_prepay
   Show only pre-pay products
.PARAMETER is_business
   Show only business products
.PARAMETER available_at
   Show products available for new agreements on the give datetime.
.INPUTS
   None
.OUTPUTS
   Returns a object with details of the energy products
.EXAMPLE
   Get-OctopusEnergyHelperEnergyProductList
.EXAMPLE
   Get-OctopusEnergyHelperEnergyProductList -is_variable
.FUNCTIONALITY
   Retrieves the list of energy products

#>

function Get-OctopusEnergyHelperEnergyProductList
{
   [CmdletBinding(SupportsShouldProcess=$true)]
   Param(
      [securestring]$ApiKey=(Get-OctopusEnergyHelperAPIAuth),

      [switch]$is_variable,

      [switch]$is_green,

      [switch]$is_tracker,

      [switch]$is_prepay,

      [switch]$is_business,

      [datetime]$available_at
   )
   $oeAPIKey = (New-Object PSCredential "user",$ApiKey).GetNetworkCredential().Password
   $Credential = New-Object System.Management.Automation.PSCredential ($oeAPIKey, (New-Object System.Security.SecureString))
   $requestURL = Get-OctopusEnergyHelperBaseURL -endpoint products

   $psParams = @{}
   $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters
   $ParamsToIgnore = @("apikey")
   foreach ($key in $ParameterList.keys)
   {
      $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
      if($ParamsToIgnore -contains $var.Name)
      {
          continue
      }
      elseif($var.value -or $var.value -eq 0)
      {
         $value = $var.value
         $psParams.Add($var.name,$value)
      }
   }

   $apiParams = $psParams | ConvertTo-OctopusEnergyHelperAPIParam
   $requestParams = @{
      Credential = $Credential
      uri = $requestURL
      UseBasicParsing = $true
      method = "Get"
      ContentType = "application/x-www-form-urlencoded"
      body = $apiParams
  }
   if( $pscmdlet.ShouldProcess("Octopus Energy API", "Retrieve Product List") )
   {
      $response = Get-OctopusEnergyHelperResponse -requestParams $requestParams
      Return $response
   }
}