src/Client.psm1
|
<#
.SYNOPSIS Sends messages by SMS to a [FreeMobile](https://mobile.free.fr) account. #> class Client { <# .SYNOPSIS The base URL of the remote API endpoint. #> [ValidateNotNull()] [uri] $BaseUrl <# .SYNOPSIS The Free Mobile user name and password. #> [ValidateNotNull()] hidden [pscredential] $Credential <# .SYNOPSIS Creates a new client. .PARAMETER Credential The Free Mobile user name and password. #> Client([pscredential] $Credential) { $this.BaseUrl = "https://smsapi.free-mobile.fr/" $this.Credential = $Credential } <# .SYNOPSIS Creates a new client. .PARAMETER Credential The Free Mobile user name and password. .PARAMETER BaseUrl The base URL of the remote API endpoint. #> Client([pscredential] $Credential, [string] $BaseUrl) { $this.BaseUrl = $BaseUrl.EndsWith("/") ? $BaseUrl : "$BaseUrl/" $this.Credential = $Credential } <# .SYNOPSIS Sends an SMS message to the underlying account. .PARAMETER Text The message text. #> [void] SendMessage([string] $Text) { $trimmedText = $Text.Trim() Invoke-WebRequest ([uri]::new($this.BaseUrl, "sendmsg")) -Body @{ msg = $trimmedText.Length -gt 160 ? $trimmedText[0..159] : $trimmedText pass = ConvertFrom-SecureString $this.Credential.Password -AsPlainText user = $this.Credential.UserName } } } |