Snippets

Learning.com IoT button build

Created by David Hogue last modified

###############################################################################
# Configuration
###############################################################################
$deploymentName = 'Microservices - CatalogSearchSync'
$environment = 'Test'
$branchName = 'develop'
$logFile = 'C:\Users\dhogue\dev\iot-button\buildlog.txt'
$bambooServer = 'http://bamboo.learning.local:8085'
$hipchatUrl = 'https://lcom.hipchat.com/v2/room/4714717/notification?auth_token=SY0KyOXerKEtSUEdVfZUIFZaOczMtlZzesnbCRz5'
$username = 'dhogue'
$password = '********'
###############################################################################

echo "Starting deployment at $(Get-Date) for $deploymentName with branch $branchName to $environment" | Tee-Object -FilePath $logFile

$deploymentsResponse = Invoke-RestMethod "$bambooServer/rest/api/latest/deploy/project/all"
$deploymentProject = ($deploymentsResponse | where {$_.name -eq $deploymentName })
$deploymentProjectId = $deploymentProject.id
$environmentId = ($deploymentProject.environments | Where {$_.name -eq $environment}).id

echo "deploymentProjectId: $deploymentProjectId, environmentId: $environmentId" | Tee-Object -FilePath $logFile

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$versionResponse = Invoke-RestMethod "$bambooServer/rest/api/latest/deploy/project/$deploymentProjectId/versions" -Headers @{"Authorization"=("Basic {0}" -f $base64AuthInfo)}
$versionId = ($versionResponse.versions | Where {$_.planBranchName -eq $branchName} | Select -First 1).id

echo "versionId: $versionId" | Tee-Object -FilePath $logFile

$deployResponse = Invoke-RestMethod "$bambooServer/rest/api/latest/queue/deployment/?environmentId=$environmentId&versionId=$versionId" -method Post -Headers @{"Authorization"=("Basic {0}" -f $base64AuthInfo); "Accepts"="application/json"; "Content-Type"="application/json"}
$deploymentResultId = $deployResponse.deploymentResultId

echo "Done at $(Get-Date). See results at $bambooServer/deploy/viewDeploymentResult.action?deploymentResultId=$deploymentResultId" | Tee-Object -FilePath $logFile

$message = ConvertTo-Json @{"color"="green";"message"="@TomMooney $bambooServer/deploy/viewDeploymentResult.action?deploymentResultId=$deploymentResultId (dropsmic)";"notify"=$false;"message_format"="text"}
Invoke-RestMethod $hipchatUrl -Method Post -Body $message -Headers @{"Content-Type"="application/json"}
/**
 * This is a sample Lambda function that sends an email on click of a
 * button. It requires these SES permissions.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:GetIdentityVerificationAttributes",
                "ses:SendEmail",
                "ses:VerifyEmailIdentity"
            ],
            "Resource": "*"
        }
    ]
}
 *
 * The following JSON template shows what is sent as the payload:
{
    "serialNumber": "GXXXXXXXXXXXXXXXXX",
    "batteryVoltage": "xxmV",
    "clickType": "SINGLE" | "DOUBLE" | "LONG"
}
 *
 * A "LONG" clickType is sent if the first press lasts longer than 1.5 seconds.
 * "SINGLE" and "DOUBLE" clickType payloads are sent for short clicks.
 *
 * For more documentation, follow the link below.
 * http://docs.aws.amazon.com/iot/latest/developerguide/iot-lambda-rule.html
 */

'use strict';

const AWS = require('aws-sdk');

const SES = new AWS.SES();
const EMAIL_ADDRESS = 'dhogue@learning.com'; // change it to your email address

// Send a verification email to the given email address.
function sendVerification(email, callback) {
    SES.verifyEmailIdentity({ EmailAddress: email }, (err) => {
        callback(err || 'Verification email sent. Please verify it.');
    });
}

// Check whether email is verified. Only verified emails are allowed to send emails to or from.
function checkEmail(email, callback) {
    SES.getIdentityVerificationAttributes({ Identities: [email] }, (err, data) => {
        if (err) {
            callback(err);
            return;
        }
        const attributes = data.VerificationAttributes;
        if (!(email in attributes) || attributes[email].VerificationStatus !== 'Success') {
            sendVerification(email, callback);
        } else {
            callback(err, data);
        }
    });
}

exports.handler = (event, context, callback) => {
    console.log('Received event:', event);

    checkEmail(EMAIL_ADDRESS, (err) => {
        if (err) {
            console.log(`Failed to check email: ${EMAIL_ADDRESS}`, err);
            callback(err);
            return;
        }
        const payload = JSON.stringify(event);
        const subject = `Hello from your IoT Button ${event.serialNumber}`;
        const bodyText = `Hello from your IoT Button ${event.serialNumber}. Here is the full event: ${payload}.`;
        const params = {
            Source: EMAIL_ADDRESS,
            Destination: { ToAddresses: [EMAIL_ADDRESS] },
            Message: { Subject: { Data: subject }, Body: { Text: { Data: bodyText } } },
        };
        SES.sendEmail(params, callback);
    });
};

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.