clearblade-js-client
Version:
ClearBlade JavaScript API =========================
396 lines (373 loc) • 15.8 kB
Markdown
# QuickStart
## Installation
### With modern build process
```npm i --save clearblade-js-client```
```javascript
import 'clearblade-js-client/lib/mqttws31';
import { ClearBlade } from 'clearblade-js-client';
```
### With script tag
Download and place https://raw.githubusercontent.com/ClearBlade/JavaScript-API/master/index.js as well as https://raw.githubusercontent.com/ClearBlade/JavaScript-API/master/lib/mqttws31.js inside your project directory and include them in your HTML file's header
## Usage
The ClearBlade object attaches to window after being included.
Calling ClearBlade.init(configObject) will initialize ClearBlade settings and functions and pass it as an argument to a callback.
```javascript
const cb = new ClearBlade();
cb.init({
URI: 'platform address', // e.g., 'https://platform.clearblade.com'
systemKey: 'theSystemKey',
systemSecret: 'theSystemSecret',
email: "userEmail", // use registerEmail instead if you wish to create a new user
password: "userPassword",
callback: initCallback,
});
function initCallback(err, authInfo) { // err is a boolean, authInfo is an object containing email and authToken
if (err) {
throw new Error(cb);
} else {
console.log("successfully inited ClearBlade");
}
}
function fetchData() {
var collection = cb.Collection();
collection.fetch(someQuery, collectionFetchCallback(err, rows) {
if (err) {
throw new Error(rows);
} else {
// do something with the collection rows
}
});
}
function subscribeMessaging() {
var messaging = cb.Messaging();
messaging.subscribe('someTopic', {timeout: 120}, subscribeCallback(err, message) {
if (err) {
throw new Error(message);
} else {
// do something with response
}
});
}
```
# API Reference
## Setup
var cb = new ClearBlade();
#### cb.init(Options)
Options // object
* systemKey // string
Required. The systemKey of the system to connect to. Retrievable from the Console's System Settings.
* systemSecret // string
Required. The systemSecret of the system to connect to. Retrievable from the Console's System Settings.
* logging // boolean
Enable logging by setting logging key to true.
* email // string
Email of non-dev user to connect to system as. If registerUser key is not provided, the user must be registered through the Auth tab of the console, and given appropriate roles.
* password // string
Password of non-dev user to connect to system as.
* registerUser // boolean
If registerUser key is present and set to true, a new user will be created in the system using the values set to email and password.
* callback // function
Callback to be asynchronously fired when the connection to the system is established.
* callTimeout // integer
Seconds to wait before timing out requests
* URI
Platform instance to connect to. Defaults to "https://platform.clearblade.com" if not provided.
* messagingURI
Platform instance to connect to for messaging. Defaults to "platform.clearblade.com" if not provided.
* messagingPort
Port to use when connecting to messaging server.
## Authentication
#### cb.setUser(email, authToken)
Set which user will make requests to the platform
* email // string
Required. The email of the user
* authToken // string
Required. The authToken returned by the platform as an argument to the init callback
#### cb.registerUser(email, password, callback)
Register a new user with the platform.
* email // string
Required. The email of the new user
* password // string
Required. The password of the new user
* callback // function
Asynchronously fired after user is registered with the platform
#### cb.isCurrentUserAuthenticated(callback)
Check if currently set user has an active session in the platform
* callback // function(err, response)
Asynchronously fired after response is received
#### cb.logoutUser(callback)
End session for currently set user
* callback // function(err, response)
Asynchronously fired after platform returns repsonse
#### cb.loginAnon(callback)
Authenticate with platform as anonymous user
* callback // function(err, response)
Asynchronously fired after platform creates new anonymous session
#### cb.loginUser(email, password, callback)
Authenticate with platform as provided user
* email // string
Required. The email for an existing user
* password // string
Required. The password for an existing user
* callback // function(err, response)
Asynchronously fired after platform creates new session for provided user
## Collections
#### var collection = cb.Collection(Options)
Options // object or serialized string
Required. Provide either:
* collectionName
Name of the collection on current system to connect to.
* collectionID
ID of the collection on current system to connect to. Available on data tab of console.
#### collection.fetch(query, callback)
Retrieve array of items from the collection
* query // object
key-value pairs representing column names and desired values
* callback // function(err, dataArray)
Asynchronously fired after platform returns response
#### collection.create(newItem, callback)
Create new item in the collection
* newItem // object
Required. An object with key-value pairs representing column names and desired values
* callback // function(err, newItem)
Asynchronously fired after platform returns response
#### collection.update(query, changes, callback)
Updates existing item in the collection
* query // ClearBlade.Query
* changes // object
Required. An object with key-value pairs representing column names to be updated and new values
* callback // function(err, updatedItem)
Asynchronously fired after platform returns response
#### collection.remove(query, callback)
Removes every item in the collection matching query
* query // ClearBlade.Query
* callback // function(err, removedItem)
Asynchronously fired after platform returns response
#### collection.columns(callback)
Retrieve column names, data types and whether the column is a primary key
* callback // function(err, columnsArray)
Asynchronously fired after platform returns response
#### collection.count(query, callback)
Count items in collection matching query
* query // ClearBlade.Query
* callback // function(err, count)
Asynchronously fired after platform returns response
## Query
#### var query = cb.Query(Options)
Creates new ClearBlade.Query to be used in Collection operations
Options // object or serialized string
Required. Provide either:
* collectionName
Name of the collection on current system to connect to.
* collectionID
ID of the collection on current system to connect to. Available on data tab of console.
#### query.addSortToQuery(queryObj, direction, fieldName)
Sort results according to direction by fieldName
* queryObj // object
* direction // string
Required. Choose from "ASC" or "DESC"
* fieldName // name of column to sort by
#### query.addFilterToQuery(queryObject, condition, key, value)
Filter results accord to queryObject
* queryObj // object
* condition // string, choose from "=", "!=", ">", "<", ">=", "<="
* key // string
* value // string, integer, float
#### query.ascending(fieldName)
Sort results ascending by fieldName
* fieldName // string
#### query.descending(fieldName)
Sort results descending by fieldName
* fieldName // string
#### query.equalTo(fieldName, value)
Query where field is equal to value
* fieldName // string
* value // string, integer float
#### query.greaterThan(fieldName, value)
Query where field is greater than value
* fieldName // string
* value // string, integer float
#### query.greaterThanEqualTo(field, value)
Query where field is greater than value
* fieldName // string
* value // string, integer float
#### query.lessThan(fieldName, value)
* fieldName // string
* value // string, integer, float
#### query.lessThanEqualTo(fieldName, value)
* fieldName // string
* value // string, integer, float
#### query.notEqualTo(fieldName, value)
* fieldName // string
* value // string, integer, float
#### query.matches(fieldName, regexPattern)
* fieldName // string
* value // string
#### query.or(otherQuery)
* otherQuery // ClearBlade.Query
#### query.setPage(pageSize, pageNum)
* pageSize // int
* pageNum // int
#### query.fetch(callback)
Execute built query and retrieve matching item(s)
* callback // function(err, itemsArray)
#### query.update(changes, callback)
Execute built query and update matching item(s)
* callback // function(err, itemsArray)
#### query.remove(callback)
Execute built query and remove matching item(s)
* callback // function(err, itemsArray)
## Item
#### var item = cb.Item(data, collectionID)
* data // object, contains structure of collection item
* collectionID // string, data collection ID in current system
#### item.save(callback)
* callback // function(err, result)
#### item.refresh(callback)
* callback // function(err, result)
#### item.destroy(callback)
* callback // function(err, result)
## Code Services
#### var code = cb.Code()
#### code.execute(name, options, callback)
Run a named code service that exists on the system with options
* name // string
Required. The name of code service to be executed
* options // object
The request object to be passed to the code service function on execution
* callback // function(err, response)
#### code.getCompletedServices(callback)
* callback // function(err, response)
#### code.getFailedServices(callback)
* callback // function(err, response)
## User Management
#### var user = cb.User()
ClearBlade User Object
#### user.getUser(callback)
Retrieve info on the current set user
* callback // function(err, userInfo)
#### user.setUser(userInfo, callback)
Set info on the current active user
* userInfo // object, contains key-value pairs representing the user info to be updated
* callback // function(err, userInfo)
#### user.allUsers(query, callback)
Return all users that match the specified query
* query // ClearBlade.query
* callback // function(err, usersArray)
#### user.setPassword(old, new, callback)
Change current set user's password
* old // string, old password of user
* new // string, new password of user
* callback // function(err, response)
#### user.count(query, callback)
Return a count of all users that match the specified query
* query // ClearBlade.query
* callback // function(err, count)
## Messaging
#### var messaging = cb.Messaging(options, callback)
ClearBlade Messaging object
* callback // function(err, data), asynchronously fired upon error or successful connection to messaging server
#### messaging.getMessageHistory(topic, last, count, callback)
* topic // string that signifies which topic to search
* count // int that signifies how many messages to return; 0 returns all messages
* last // int Epoch timestamp in seconds that will retrieve 'count' number of messages before that timestamp
* callback - Function that handles the response from the server
#### messaging.getMessageHistoryWithTimeFrame(topic, count, last, start, stop, callback)
* topic // string that signifies which topic to search
* count // int that signifies how many messages to return; 0 returns all messages
* last // int Epoch timestamp in seconds that will retrieve 'count' number of messages before that timestamp
* start // int Epoch timestamp in seconds that will retrieve 'count' number of messages within timeframe
* stop // int Epoch timestamp in seconds that will retrieve 'count' number of messages within timeframe
* callback - Function that handles the response from the server
#### messaging.getAndDeleteMessageHistory(topic, count, last, start, stop, callback)
* topic // string that signifies which topic to search
* count // int that signifies how many messages to return and delete; 0 returns and deletes all messages
* last // int Epoch timestamp in seconds that will retrieve and delete 'count' number of messages before that timestamp
* start // int Epoch timestamp in seconds that will retrieve and delete 'count' number of messages within timeframe
* stop // int Epoch timestamp in seconds that will retrieve and delete 'count' number of messages within timeframe
* callback - Function that handles the response from the server
#### messaging.currentTopics(callback)
Retrieve all active messaging topics on current system
* callback // function(err, topicsArray)
#### messaging.publish(topic, payload)
Publish payload on messaging topic via MQTT
* topic // string
Required. Messaging topic publish on
* payload // object
#### messaging.publishREST(topic, payload, callback)
Publish payload on messaging topic via HTTP
* topic // string
Required. Messaging topic publish on
* payload // object
Message payload
* callback // function(err, data)
#### messaging.subscribe(topic, options, callback)
Subscribe to MQTT topic
* topic // string, messaging topic to subscribe to via MQTT
* options // object
onSuccess: // function(payload)
Fired on successful subscription. Defaults to null
onFailure: // function(err)
Fired on error with subscription. Defaults to null
callback // function(err, payload)
#### messaging.unsubscribe(topic, options)
Unsubcribe from MQTT topic
* topic // string, name of MQTT topic to unsubscribe from
* options // object
onSuccess: // function
Fired on successful subscription. Defaults to null
onSuccess: function(response)
onFailure: // function
Fired on error with subscription. Defaults to null
onFailure: function(err)
#### messaging.disconnect()
Close connection to messaging server
## MessagingStats
#### var messagingStats = cb.MessagingStats()
ClearBlade Messaging Statistics object
#### messagingStats.getAveragePayloadSize(topic, start, stop, callback)
* topic // string that signifies which topic to search
* start // int Epoch timestamp in seconds that will retrieve 'count' number of messages within timeframe
* stop // int Epoch timestamp in seconds that will retrieve 'count' number of messages within timeframe
* callback - Function that handles the response from the server
#### messagingStats.getOpenConnections(callback)
* callback - Function that handles the response from the server
#### messagingStats.getCurrentSubscribers(topic, callback)
* topic // string that signifies which topic to search
* callback - Function that handles the response from the server
## Analytics
#### var analytics = cb.Analytics()
ClearBlade Analytics Object
Example filter object:
~~~
{
"scope": {
"system": "<systemKey>"
},
"filter": {
"module": "users",
"action": "create",
"range": {
"start": 1493010000,
"end": 1493137098
}
}
}
~~~
#### analytics.getStorage(filter, callback)
* filter // filter object (see above)
* callback - Function that handles the response from the server
#### analytics.getCount(filter, callback)
* filter // filter object (see above)
* callback - Function that handles the response from the server
#### analytics.getEventList(filter, callback)
* filter // filter object (see above)
* callback - Function that handles the response from the server
#### analytics.getEventTotals(filter, callback)
* filter // filter object (see above)
* callback - Function that handles the response from the server
#### analytics.getUserEvents(filter, callback)
* filter // filter object (see above)
* callback - Function that handles the response from the server
# Javadoc
The Javadoc for the JavaScript API can be found at https://docs.clearblade.com/v/3/static/jsapi/index.html