UMN-Trello.psm1
# Copyright 2017 University of Minnesota, Office of Information Technology # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with Foobar. If not, see <http://www.gnu.org/licenses/>. # Based off # https://developers.trello.com/reference #region Auth Trello function Get-TAuthToken{ <# .Synopsis Used to get a user auth token .DESCRIPTION Authentication tokens are used along with the app key for all API calls. .PARAMETER appKey Application key from Trello. Retrieved from trello.com/app-key. .PARAMETER appName The name exposed to the Trello API for authorization. .PARAMETER expiration Length of time token is valid for. Never is an option. What ever you want it to be. .PARAMETER scope Permision scope comma delimited . read,write,account .EXAMPLE $token = Get-TAuthToken -expiration 'never' -scope 'read,write,account' -appKey 'cb6c8d2993cf5f4432de1224c67' -appName 'powerShell' .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$appName, [Parameter(Mandatory)] [string]$expiration, [Parameter(Mandatory)] [string]$scope ) Begin{ $baseURI = 'https://api.trello.com/1/' } Process { $api = "authorize?expiration=$expiration&scope=$scope&response_type=token&name=$appName&key=$appKey" $uri = $baseURI + $api ### Get the token $approval_prompt = "force" $ie = New-Object -comObject InternetExplorer.Application if($approval_prompt -eq "force"){$ie.visible = $true} $null = $ie.navigate($uri) #Wait for user interaction in IE, manual approval do{Start-Sleep 1}until($ie.LocationURL -match 'https://trello.com/1/token/approve') $token = (((($ie.Document.body.innerHTML -replace "`t|`n|`r | ","") -split "<pre>")[1]).Split("<"))[0] $null = $ie.Quit() } End{ return $token } } #endregion #region Get Trello function Get-TBoardCardList{ <# .Synopsis Return list of cards on a board .DESCRIPTION Usefull to get a list of all cards on a board .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key. .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER boardID id of a board. .EXAMPLE $return = Get-TBoardCardList -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -boardID $boardID .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$boardID ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "boards/$boardID/cards/?fields=name&members=true&member_fields=fullName" $uri = $baseURI + $api + $auth $cards = Invoke-RestMethod -Method Get -Uri $uri } End{ return $cards } } function Get-TBoardCheckLists{ <# .Synopsis Return list of checkLists on a board .DESCRIPTION Usefull to get a list of all checkList data on a board .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER boardID board ID of a board. .EXAMPLE $return = Get-TCardCheckLists -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -boardID $boardID .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$boardID ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "boards/$boardID/checklists?checkItem_fields=name&fields=name" $uri = $baseURI + $api + $auth $checklists = Invoke-RestMethod -Method Get -Uri $uri } End{ return $checkLists } } function Get-TCardCheckLists{ <# .Synopsis Return list of checkLists on a card .DESCRIPTION Usefull to get a list of all checkList data for a trello card on a board .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER cardID cardID on a board. .EXAMPLE $return = Get-TCardCheckLists -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -cardID $cardID .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$cardID ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "cards/$cardID/checklists?key=$appKey&token=$token" $uri = $baseURI + $api $checkLists = Invoke-RestMethod -Method Get -Uri $uri } End{ return $checkLists } } function Get-TCheckItems{ <# .Synopsis Return list of items on a check list .DESCRIPTION Usefull to get a list of all idCheckItem IDs of items on a checkList .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER idCheckList checkList ID of a checklist on a card on a board. .EXAMPLE $return = Get-TCardCheckLists -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -idCheckList $idCheckList .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$idCheckList ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "checklists/$idCheckList/checkItems?" $uri = $baseURI + $api + $auth $checkItems = Invoke-RestMethod -Method Get -Uri $uri } End{ return $checkItems } } function Get-Trello{ <# .Synopsis Super basic query function. .DESCRIPTION Starting point for getting any information out of Trello. .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER query Query for anything your user has access to on Trello. .EXAMPLE $return = Get-Trello -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -query 'Name of a board' .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$query ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "search?query=$query" $uri = $baseURI + $api + $auth $return = Invoke-RestMethod -Method Get -Uri $uri } End{ return $return } } #endregion #region Set Trello function Set-TCheckItems{ <# .Synopsis Update check item state .DESCRIPTION For setting the state of a check item on a check list to complete of incomplete .PARAMETER appKey Application key from trello. Retrieved from trello.com/app-key .PARAMETER token User authentication token. Retrieved from trello.com/app-key, or call Get-TAuthToken .PARAMETER idCheckItem ID of a check list item on a check list on a card on a board. .PARAMETER cardID card ID of a card on a board. .PARAMETER state state to set the item to. complete or incomplete .EXAMPLE $return = Set-TCheckItems -appKey 'cb6c8d2993cf5f4432de1224c67' -token $token -idCheckItem $idCheckItem -cardID $cardID .Notes Author: Kyle Weeks #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$appKey, [Parameter(Mandatory)] [string]$token, [Parameter(Mandatory)] [string]$cardID, [Parameter(Mandatory)] [string]$idCheckItem, [Parameter(Mandatory)] [ValidateSet('complete','incomplete')] [string]$state ) Begin{ $auth = "&key=$appKey&token=$token" $baseURI = 'https://api.trello.com/1/' } Process { $api = "cards/$cardID/checkItem/$idCheckItem"+"?state=$state" $uri = $baseURI + $api + $auth $return = Invoke-RestMethod -Method Put -Uri $uri } End{ return $checkItems } } #endregion |