Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict';
const logger = require('../lib').logger;
const config = require('../config');
const EventHubClient = require('@azure/event-hubs').EventHubClient;
const EventPosition = require('@azure/event-hubs').EventPosition;
const ServiceClient = require('azure-iothub').Client;
var serviceConnection = null;
var eventHubConnection = null;
// Called whenever an error occurs in either the message callback or the eventhub connection setup
function errorCb(err) {
logger.crit(err.message);
};
// Called whenever we receive a telemetry message from the client
function messageReceivedCb(message) {
logger.debug('Service successfully received telemetry from client.');
logger.trace(JSON.stringify(message));
var targetDevice = message.body.toString();
if(!targetDevice) {
logger.crit('Client telemetry message did not contain the device, unable to respond.');
describe('Over ' + transportCtor.name, () => {
// tslint:disable:no-invalid-this
this.timeout(60000);
const testDevice = testUtils.createTestDevice();
const scs = ServiceConnectionString.parse(process.env.IOTHUB_CONNECTION_STRING);
const testDeviceCS = DeviceConnectionString.createWithSharedAccessKey(scs.HostName, testDevice.deviceId, testDevice.authentication.symmetricKey.primaryKey);
beforeEach((beforeEachCallback) => {
testUtils.addTestDeviceToRegistry(testDevice, beforeEachCallback);
});
afterEach((afterEachCallback) => {
testUtils.removeTestDeviceFromRegistry(testDevice, afterEachCallback);
});
[null, '', 'foo', { k1: 'v1' }, {}].forEach((testPayload) => {
it('device can receive a method call with a payload of ' + JSON.stringify(testPayload) + ' and send a response', (testCallback) => {
const methodName = 'testMethod';
const requestPayload = testPayload;
const responsePayload = { responseKey: uuid.v4() };
const deviceClient = DeviceClient.fromConnectionString(testDeviceCS, transportCtor);
describe('Over ' + transportCtor.name, () => {
// tslint:disable:no-invalid-this
this.timeout(60000);
const testDevice = testUtils.createTestDevice();
const scs = ServiceConnectionString.parse(process.env.IOTHUB_CONNECTION_STRING);
const testDeviceCS = DeviceConnectionString.createWithSharedAccessKey(scs.HostName, testDevice.deviceId, testDevice.authentication.symmetricKey.primaryKey);
beforeEach((beforeEachCallback) => {
testUtils.addTestDeviceToRegistry(testDevice, beforeEachCallback);
});
afterEach((afterEachCallback) => {
testUtils.removeTestDeviceFromRegistry(testDevice, afterEachCallback);
});
it('device can get its device twin and modify reported properties', (testCallback) => {
const deviceClient = DeviceClient.fromConnectionString(testDeviceCS, transportCtor);
const twinPatch = { twinKey: 'twinValue' };
deviceClient.open((err) => {
if (err) throw err;
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict';
var amqp10 = require('amqp10');
var Promise = require('bluebird');
var anHourFromNow = require('azure-iot-common').anHourFromNow;
var ConnectionString = require('azure-iot-common').ConnectionString;
var EventHubReceiver = require('./eventhubreceiver.js');
var SharedAccessSignature = require('azure-iothub').SharedAccessSignature;
var managementEndpoint = '$management';
function createConfig(connectionString, entityPath) {
var cn = ConnectionString.parse(connectionString);
var host = cn.HostName || (cn.Endpoint || '').slice('sb://'.length);
return {
host: host,
namespace: host.split('.')[0],
keyName: cn.SharedAccessKeyName,
key: cn.SharedAccessKey,
eventHubName: entityPath
};
}
/**
describe('C2D', () => {
// tslint:disable:no-invalid-this
this.timeout(60000);
const testDevice2 = testUtils.createTestDevice();
const hostName = ServiceConnectionString.parse(process.env.IOTHUB_CONNECTION_STRING).HostName;
const testDeviceCS2 = DeviceConnectionString.createWithSharedAccessKey(hostName, testDevice2.deviceId, testDevice2.authentication.symmetricKey.primaryKey);
before((beforeCallback) => {
testUtils.addTestDeviceToRegistry(testDevice2, beforeCallback);
});
after((afterCallback) => {
testUtils.removeTestDeviceFromRegistry(testDevice2, afterCallback);
});
[DeviceAmqp, DeviceAmqpWs, DeviceMqtt, DeviceMqttWs, DeviceHttp].forEach((transportCtor: any) => {
describe('Over ' + transportCtor.name, () => {
let deviceClient: DeviceClient;
beforeEach((beforeEachCallback) => {
deviceClient = DeviceClient.fromConnectionString(testDeviceCS2, transportCtor);
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict'
const logger = require('../lib').logger;
const iothub = require('azure-iothub');
const errors = require('azure-iot-common').errors;
const Registry = iothub.Registry;
const ConnectionString = require('azure-iothub').ConnectionString;
function getDevice(iotHubConnectionString, deviceId, done) {
var registry = Registry.fromConnectionString(iotHubConnectionString);
registry.get(deviceId, done);
}
function getDeviceConnectionString(iotHubConnectionString, deviceInfo) {
var deviceConnectionString = 'HostName=' + ConnectionString.parse(iotHubConnectionString).HostName + ';DeviceId=' + deviceInfo.deviceId + ';SharedAccessKey=' + deviceInfo.authentication.symmetricKey.primaryKey;
logger.trace('Connectionstring: ' + deviceConnectionString);
return deviceConnectionString;
}
// Create a new device
function createDevice(iotHubConnectionString, deviceId, done) {
var registry = Registry.fromConnectionString(iotHubConnectionString);
var device = {
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict';
var Registry = require('azure-iothub').Registry;
var Client = require('azure-iothub').Client;
var async = require('async');
// receive the IoT Hub connection string as a command line parameter
if(process.argv.length < 4) {
console.error('Usage: node dmpatterns_reboot_service.js <> <>');
process.exit(1);
}
var connectionString = process.argv[2];
var registry = Registry.fromConnectionString(connectionString);
var client = Client.fromConnectionString(connectionString);
var deviceToReboot = process.argv[3];
// Initiate the reboot process on the device using a device method
async.waterfall([
invokeReboot,
displayRebootStatus
],
function(err) {
if (err){
console.error(err);
} else {
console.log('Reboot complete');
}
});
// Initiate the reboot through a method
'use strict';
var Registry = require('azure-iothub').Registry;
var Client = require('azure-iothub').Client;
var async = require('async');
// receive the target device ID as a command line parameter
if (process.argv.length < 3) {
console.error('Usage: node dmpatterns_fwupdate_service.js <>');
process.exit(1);
}
var connectionString = process.env.IOTHUB_CONNECTION_STRING;
var deviceToUpdate = process.argv[2];
var registry = Registry.fromConnectionString(connectionString);
var client = Client.fromConnectionString(connectionString);
// Service entry point: Initiate the firmware update process on the device using a device method
async.waterfall([
invokeFirmwareUpdate,
displayFirmwareUpdateStatus
],
function(err) {
if (err) {
console.error(err);
} else {
console.log('Fimware update complete');
}
});
// Initiate the firmware update through a method
function invokeFirmwareUpdate(callback) {
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict';
var Registry = require('azure-iothub').Registry;
var connectionString = process.env.IOTHUB_CONNECTION_STRING;
var registry = Registry.fromConnectionString(connectionString);
var query = registry.createQuery('SELECT * FROM devices', 100);
var onResults = function(err, results) {
if (err) {
console.error('Failed to fetch the results: ' + err.message);
} else {
// Do something with the results
results.forEach(function(twin) {
console.log(twin.deviceId);
});
if (query.hasMoreResults) {
query.nextAsTwin(onResults);
}
}
};
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
'use strict';
var Client = require('azure-iothub').Client;
var connectionString = process.env.IOTHUB_CONNECTION_STRING;
var targetDevice = '';
var methodParams = {
methodName: '',
payload: '[Method Payload]',
responseTimeoutInSeconds: 15 // set response timeout as 15 seconds
};
var client = Client.fromConnectionString(connectionString);
client.invokeDeviceMethod(targetDevice, methodParams, function (err, result) {
if (err) {
console.error('Failed to invoke method \'' + methodParams.methodName + '\': ' + err.message);
} else {
console.log(methodParams.methodName + ' on ' + targetDevice + ':');
console.log(JSON.stringify(result, null, 2));
}
});