/deno-pushbullet-api

PushBullet API module for Deno

Primary LanguageJavaScript

PushBullet API

A Deno module for using the PushBullet REST API.

Usage

This module is very simple to use. All you need is your PushBullet API key and you can begin pushing.

import PushBullet from 'https://github.com/qgustavor/deno-pushbullet-api/raw/master/lib/pushbullet.js'
const pusher = new PushBullet('YOUR-API-KEY')

const response = await pusher.devices()

const response = await pusher.note(deviceParams, noteTitle, noteBody)

Target devices

The push functions (note, link, file) have a deviceParams parameter which can be several types:

  • If it is a string containing an '@' it is treated as an email address.
  • If it is a string not containing an '@' it is treated as a device iden.
  • If it is a number it is treated as a device id.
  • If it is an object it is assumed to have one of the 'target parameters' as defined on https://docs.pushbullet.com/v2/pushes/ as an attribute. It can also have an optional source_device_iden attribute. If the object is empty, {}, then the push is sent to all devices.

Async/Await

Version 2 of the module supported callback and promise based execution. Version 3 uses async/await. Callbacks can still be used by utilising util.callbackify().

let response = await pusher.devices()
console.log(await response.json())

API

new PushBullet(apiKey)

Creates a new PushBullet object.

The apiKey parameter is the string API key provided by PushBullet.

PushBullet.me();

Get the current user's information.

await pusher.me()

PushBullet.devices([options])

Retrieves a list of pushable devices.

The options parameter can use two attributes cursor andlimit to control the data returned.

  • active is used to restrict the results to only active devices.
  • cursor is used to select the page if the results have been paginated.
  • limit is used to limit the number of objects in the reponse.
let options = {
  limit: 10
}

await pusher.devices(options)

PushBullet.createDevice(deviceOptions)

Creates a new device.

let deviceOptions = {
  nickname: 'deno-app'
}

await pusher.createDevice(deviceOptions)

PushBullet.updateDevice(deviceIden, deviceOptions)

Creates a new device.

let deviceOptions = {
  nickname: 'deno-app'
}

await pusher.updateDevice(deviceIden, deviceOptions)

PushBullet.deleteDevice(deviceIden)

Delete a device.

await pusher.deleteDevice('u1qSJddxeKwOGuGW')

PushBullet.note(deviceParams, noteTitle, noteBody)

Push a note to the specified device.

await pusher.note('u1qSJddxeKwOGuGW', 'New Note', 'Note body text')

PushBullet.link(deviceParams, name, url, body)

Push a link to the specified device.

await pusher.link('u1qSJddxeKwOGuGW', 'GitHub', 'https://github.com/', 'Note body text')

PushBullet.file(deviceParams, filePath, message)

Push a file to the specified device.

await pusher.file('u1qSJddxeKwOGuGW', '/path/to/file', 'Important file!')

PushBullet.dismissPush(pushIden)

Dismiss a push.

await pusher.dismissPush('udhrSpjAewzdwpCC')

PushBullet.deletePush(pushIden)

Delete a push.

await pusher.deletePush('udhrSpjAewzdwpCC')

PushBullet.deleteAllPushes(callback)

Delete all pushes associated with the current account.

await pusher.deleteAllPushes(function (error, response) {})

PushBullet.history([options])

Get the push history.

The options parameter can use three attributes cursor, limit and modified_after to control the data returned.

  • active is used to only select undeleted pushes. Defaults to true if not specified.
  • cursor is used to select the page if the results have been paginated.
  • limit is used to limit the number of objects in the reponse.
  • modified_after should be a timestamp. Defaults to 0 if not specified.
let options = {
  limit: 10,
  modified_after: 1400000000.00000
}

await pusher.history(options)

PushBullet.subscriptions([options])

Get a list of current subscriptions.

The options parameter can use two attributes cursor andlimit to control the data returned.

  • active is used to restrict the results to only active devices.
  • cursor is used to select the page if the results have been paginated.
  • limit is used to limit the number of objects in the reponse.
let options = {
  limit: 10
}

await pusher.subscriptions(options)

PushBullet.subscribe(channelTag)

Subscribe to a channel.

await pusher.subscribe('jblow')

PushBullet.unsubscribe(subscriptionIden)

Subscribe to a channel.

await pusher.unsubscribe('udprOsjAsLtNTRAG')

PushBullet.muteSubscription(subscriptionIden)

Mute a subscription.

await pusher.muteSubscription('udprOsjAsLtNTRAG')

PushBullet.unmuteSubscription(subscriptionIden)

Unmute a subscription.

await pusher.unmuteSubscription('udprOsjAsLtNTRAG')

PushBullet.channelInfo(channelTag)

Get information about a channel.

await pusher.channelInfo('jblow')

PushBullet.chats([options])

Get a list of current chats.

The options parameter can use two attributes cursor andlimit to control the data returned.

  • active is used to restrict the results to only active devices.
  • cursor is used to select the page if the results have been paginated.
  • limit is used to limit the number of objects in the reponse.
let options = {
  limit: 10
}

await pusher.chats(options)

PushBullet.createChat(email)

Create a new chat.

await pusher.createChat('a@b.com')

PushBullet.deleteChat(chatIden)

Delete a chat.

await pusher.deleteChat('udprOsjAsLtNTRAG')

PushBullet.muteChat(chatIden)

Mute a chat.

await pusher.muteChat('udprOsjAsLtNTRAG')

PushBullet.unmuteChat(chatIden)

Unmute a chat.

await pusher.unmuteChat('udprOsjAsLtNTRAG')

PushBullet.createText(deviceIden, addresses, message, [options])

Create a new text.

The options parameter can be used to add additional information to the text request.

  • file_url is a URL of a file to send with the text.
  • file_type is the mime type of the file being sent. Required if file_url is used.

Other options are available, see https://docs.pushbullet.com/#text

await pusher.createText('udprOsjAsLtNTRAG', '+13035551212', 'Test Message', {})

PushBullet.updateText(textIden, options)

Update a chat.

options is an object representing the text attributes to update. See https://docs.pushbullet.com/#text for the available attributes and structure.

await pusher.updateText('udprOsjAsLtNTRAG', {})

PushBullet.deleteText(textIden)

Delete a text.

await pusher.deleteText('udprOsjAsLtNTRAG')

PushBullet.sendClipboard(options)

Send clipboard content.

let options = {
  source_user_iden: 'ujpah72o0', // The iden of the user sending this message
  source_device_iden: 'ujpah72o0sjAoRtnM0jc', // The iden of the device sending this message
  body: 'http://www.google.com' // The text to copy to the clipboard
}

await pusher.sendClipboard(options)

PushBullet.dismissEphemeral(options)

Dismiss an ephemeral.

let options = {
  package_name: 'com.pushbullet.android', // Set to the package_name field from the mirrored notification
  notification_id: '-8', // Set to the notification_id field from the mirrored notification
  notification_tag: null, // Set to the notification_tag field from the mirrored notification
  source_user_iden: 'ujpah72o0' // Set to the source_user_iden field from the mirrored notification
}

await pusher.dismissEphemeral(options)

PushBullet.stream()

Returns a new stream listener which will emit events from the stream.

let stream = pusher.stream()

connect()

Connects to the stream.

stream.connect()

close()

Disconnects from the stream.

stream.close()

Events

connect

Emitted when the stream has connected.

stream.on('connect', function () {
  // stream has connected
})
close

Emitted when the stream has disconnected.

stream.on('close', function () {
  // stream has disconnected
})
error

Emitted when there is a connection or streaming error.

stream.on('error', function (error) {
  // stream error
})
message

Emitted when a message is received from the stream. message will be emitted for all messages but you can listen for specific messages with nop, tickle and push.

stream.on('message', function (message) {
  // message received
})
nop

Emitted when the keep-alive 'no-operation' message is received.

stream.on('nop', function () {
  // nop message received
})
tickle

Emitted when the tickle message is received.

stream.on('tickle', function (type) {
  // tickle message received
})
push

Emited when the push message is received.

stream.on('push', function (push) {
  // push message received
})

PushBullet.enableEncryption(encryptionPassword, userIden)

Enables End-to-End encryption.

let response = await pusher.me()
let user = await response.json()

await pusher.enableEncryption('YOUR-END-TO-END-PASSWORD', user.iden)

let stream = pusher.stream()

stream.on('message', function (message) {
  console.log(message) // message is decrypted automatically
})

stream.connect()

let options = {
  source_user_iden: 'ujpah72o0',
  target_device_iden: 'ujpah72o0sjAoRtnM0jc',
  conversation_iden: '+1 303 555 1212',
  message: 'Hello!'
}

await pusher.sendSMS(options) // options are encrypted automatically