# encoding: ascii
# api: powershell
# title: Paraimpu
# description: The first couple of functions for sending data to Paraimpu from PowerShell.  It’s the first step in letting PowerShell participate in a network of things…
# version: 1.7
# type: module
# author: Joel Bennett
# license: CC0
# function: Send-Paraimpu
# x-poshcode-id: 2931
# x-archived: 2011-11-05T18:08:55
# x-published: 2011-08-27T19:11:00
#
#
# This requires  JSON 1.7 ( http://poshcode.org/2930 ) and the HttpRest ( http://poshcode.org/2097 ) modules
# It's a first draft at Paraimpu cmdlets 
# I'm not sure yet that using Paraimpu with my Chumby gets me what I want, since it only shows one item and can't go back to old ones.
#
# YOU SHOULD SET THE $Token DEFAULT VALUES TO YOUR "Thing"'s Token!

ipmo json, httprest

function Send-Paraimpu {
#.Synopsis 
#  Send data to paraimpu!
#.Description
#  Send JSON data to Paraimpu (don't forget JSON is case sensitive)
#.Example
#  Send-Paraimpu @{ 
#     text  = "This is a test message for my chumby, so I'm sending an image and sound too!"
#     image = "http://www.blogsdna.com/wp-content/uploads/2009/12/PowerShell-Logo.png"
#     sound = "http://www.frogstar.com/audio/download/14250/gong.mp3"
#  }
#.Notes 
#  Remember javascript is case sensitive!
param(
   # The data you want to send to Paraimpu
   [Hashtable]$Data, 
   # The token of the paraimpu "Generic Sensor" to send the data to
   [Guid]$Token = "a9988bbd-cb35-4b2d-ba23-69198d36977b"
)
   $json = New-JSON @{
      token = $Token
      'content-type' = "application/json"
      data = $Data
   }
   http post http://paraimpu.crs4.it/data/new -content $json
}

function Send-ParaChumby { 
#.Synopsis 
#  Send data to paraimpu with an image and sound for Chumby
#.Description
#  Send JSON data to Paraimpu ...
#.Example
#  Send-Paraimpu "This is a test message for my chumby, and has default image and sound."
param(
   [Parameter(Position=0,ValueFromPipeline=$true,Mandatory=$true)]
   $InputObject,
   [Parameter(Position=1)]
   $Image, 
   [Parameter(Position=2)]
   $Sound = "http://www.frogstar.com/audio/download/14250/gong.mp3",
   [Switch]$Collect,
   [Int]$Width = 30,
   [Guid]$Token = "a9988bbd-cb35-4b2d-ba23-69198d36977b"
)
begin {
   if($Collect) {
      $output = New-Object System.Collections.ArrayList
   }
}
process {
   if(!$Collect) {
      Send-Paraimpu @{ text = ($InputObject | Out-String -Width $Width | Tee -var dbug) -replace "`r`n","`n"; image = $Image; sound = $Sound } -Token:$Token
      Write-Verbose $dbug
   } else {
      $null = $Output.Add($InputObject)
   }
}
end {
   if($Collect) {
      Send-Paraimpu @{ text = ($Output | Out-String -Width $Width | Tee -var dbug) -replace "`r`n","`n"; image = $Image; sound = $Sound } -Token:$Token
      Write-Verbose $dbug
   }
}}
