Pushbullet makes possible to add notification for your apps or send remote commands from your mobile phone. This is useful for monitoring your software running in servers.
Pushbullet documentation @ https://docs.pushbullet.com/
Requirement:
You need to download curl.exe and place on same directory.
Code: Select all
; By: JCV
; API Documentation @ https://docs.pushbullet.com/
Global accountToken.s
Global PINFO.PROCESS_INFORMATION
Global hWritePipe.l,hReadPipe.l
Global compx.l,last.s,PID.l
Global *PipeMem = AllocateMemory(1024)
Procedure.s ReadProgramOutput()
BytesRead.l = 0
r.l=PeekNamedPipe_(hreadPipe,0,0,0,@BytesRead,0)
If BytesRead>0
o.l=ReadFile_(hReadPipe,*PipeMem,1023,@BytesRead,0)
If o
Ret.s = PeekS(*PipeMem,BytesRead,#PB_UTF8)
RtlZeroMemory_(*PipeMem,1024)
ProcedureReturn Ret
EndIf
EndIf
EndProcedure
Procedure.l RunProgramEx(cmd.s)
SECA.SECURITY_ATTRIBUTES
SECA\nLength=SizeOf(SECURITY_ATTRIBUTES)
SECA\bInheritHandle=1
SECA\lpSecurityDescriptor=0
xx.l=CreatePipe_(@hReadPipe,@hWritePipe,@SECA,1)
SINFO.STARTUPINFO
SINFO\cb=SizeOf(STARTUPINFO)
SINFO\dwFlags=#STARTF_USESTDHANDLES|#STARTF_USESHOWWINDOW
SINFO\hStdOutput=hWritePipe
SINFO\hStdError=hWritePipe
ResultC = CreateProcess_(0,cmd,@SECA,@SECA,1,#CREATE_NEW_CONSOLE,0,0,@SINFO,@PINFO)
PID = PINFO\dwProcessId
ProcedureReturn ResultC
EndProcedure
Procedure.l ProgramRunningEx()
GetExitCodeProcess_(PINFO\hProcess,@exitcode)
If ExitCode=259
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
Procedure.l KillProgramEx()
phandle = OpenProcess_(#PROCESS_TERMINATE, #False, pid)
If phandle <> #Null
If TerminateProcess_(phandle, 1)
result = #True
EndIf
CloseHandle_(phandle)
EndIf
ProcedureReturn result
EndProcedure
Procedure.l CloseProgramEx()
CloseHandle_(PINFO\hProcess)
CloseHandle_(PINFO\hThread)
CloseHandle_(hReadPipe)
ProcedureReturn 1
EndProcedure
Procedure.s pushbullet_clean_text(Returns.s)
Returns = ReplaceString(Returns, "\" + #DOUBLEQUOTE$, #DOUBLEQUOTE$)
Returns = ReplaceString(Returns, "]", "")
Returns = ReplaceString(Returns, "[", "")
Returns = ReplaceString(Returns, "{", "")
Returns = ReplaceString(Returns, "}", "")
Returns = ReplaceString(Returns, "'", "")
ProcedureReturn Returns
EndProcedure
Procedure pushbullet_check_account()
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/users/me --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns)
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_send_message(title.s = "title", body.s = "body", iden.s = "")
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/pushes -X POST -u " + accountToken
line$ + ": --header " + #DOUBLEQUOTE$ + "Content-Type: application/json" + #DOUBLEQUOTE$ + " --Data-binary " + #DOUBLEQUOTE$
line$ + "{\"
If Len(iden) > 0 ; if iden is empty, it will send to all devices
line$ + #DOUBLEQUOTE$ + "device_iden\" + #DOUBLEQUOTE$ + ": \" + #DOUBLEQUOTE$ + iden + "\" + #DOUBLEQUOTE$
line$ + ", \"
EndIf
line$ + #DOUBLEQUOTE$ + "type\" + #DOUBLEQUOTE$ + ": \" + #DOUBLEQUOTE$ + "note\" + #DOUBLEQUOTE$
line$ + ", \"
line$ + #DOUBLEQUOTE$ + "title\" + #DOUBLEQUOTE$ + ":\" + #DOUBLEQUOTE$ + title + "\" + #DOUBLEQUOTE$
line$ + ", \"
line$ + #DOUBLEQUOTE$ + "body\" + #DOUBLEQUOTE$ + ": \" + #DOUBLEQUOTE$ + body + "\" + #DOUBLEQUOTE$
line$ + "}" + #DOUBLEQUOTE$
Debug line$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns); Debug Returns
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_get_devices()
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/devices -X GET "
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns)
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_create_device(stream_device.s = "sample_device")
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/devices -X POST -d nickname=" + #DOUBLEQUOTE$ + stream_device + #DOUBLEQUOTE$ + " type=stream"
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns)
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_update_device(iden.s, stream_device.s = "new_device_name")
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/devices/" + iden + " -X POST -d nickname=" + #DOUBLEQUOTE$ + stream_device + #DOUBLEQUOTE$
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns)
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_delete_device(iden.s)
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/devices/" + iden + " -X DELETE "
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns)
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_get_messages(iden.s = "")
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/pushes?modified_after=0&active=true -X GET "
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns);
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_delete_message(push_iden.s = "")
Protected Returns.s
If Len(push_iden) > 0 ; delete specific message
line$ = "https://api.pushbullet.com/v2/pushes/" + push_iden + " -X DELETE "
Else ; delete all messages
line$ = "https://api.pushbullet.com/v2/pushes -X DELETE "
EndIf
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns); Debug Returns
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
Procedure pushbullet_upload_image(image_path.s)
Protected Returns.s
line$ = "https://api.pushbullet.com/v2/upload-request -X POST -d file_name=" + #DOUBLEQUOTE$ + image_path + #DOUBLEQUOTE$ + " file_type=image/jpg"
line$ + " --header " + #DOUBLEQUOTE$ + "Authorization: Bearer " + accountToken + #DOUBLEQUOTE$
If RunProgramEx("curl -s " + line$)
While ProgramRunningEx()
Returns + ReadProgramOutput()
Wend
CloseProgramEx()
KillProgramEx()
If Returns <> ""
Returns = pushbullet_clean_text(Returns); Debug Returns
total = CountString(Returns, ",")
For x = 1 To total
Debug StringField(Returns, x, ",")
Next
EndIf
Else
Debug GetLastError_()
EndIf
EndProcedure
; Enter your Access Token. Get yours @ https://www.pushbullet.com/account
accountToken = ""
If accountToken <> ""
pushbullet_check_account()
pushbullet_create_device("register_sample_device")
; pushbullet_update_device("ajz3F0PR0QmsjxtSbKapaL", "rename_device")
; pushbullet_get_devices()
; pushbullet_delete_message()
; pushbullet_delete_device()
; pushbullet_get_messages()
; pushbullet_send_message("mytitle", "mybody")
Else
MessageRequester("", "Get your own Access Token @ http://www.pushbullet.com")
EndIf