Skip to content

Instantly share code, notes, and snippets.

View thomaszurkan-optimizely's full-sized avatar

Tom Zurkan thomaszurkan-optimizely

  • Optimizely
View GitHub Profile
@thomaszurkan-optimizely
thomaszurkan-optimizely / index.js
Created July 30, 2018 21:14
Using AWS Lambda with Optimizely Web hooks for Project Management
'use strict';
console.log('Loading function');
const http = require('https');
const doc = require('dynamodb-doc');
const dynamo = new doc.DynamoDB();
case 'POST':
let body = JSON.parse(event.body);
let projectId = body['project_id'];
let url = body['data']['cdn_url'];
console.log(‘project url:’, url);
break;
"body": "{\"project_id\":1234,\"timestamp\":1468447113,\"event\":\"project.datafile_updated\",\"data\":{\"revision\":1,\"origin_url\":\"https://optimizely.s3.amazonaws.com/json/1234.json\",\"cdn_url\":\"https://cdn.optimizely.com/json/1234.json\"}}",
const crypto = require('crypto');
const hmac = crypto.createHmac('sha1', process.env.SECRET_KEY);
let hubHeader = event.headers['X-Hub-Signature'];
hmac.update(event.body);
let secretCompare = 'sha1=' + hmac.digest('hex');
console.log(secretCompare + ' == ' + hubHeader, secretCompare == hubHeader);
function sendWebhook(data, done) {
var url = 'https://hooks.slack.com/services/LONG_UNIQUE_KEY';
const options = {
hostname: 'hooks.slack.com',
protocol: 'https:',
//port: 80,
path: '/services/LONG_UNIQUE_KEY',
method: 'POST',
headers: {
'Content-Type': 'application/json'
@thomaszurkan-optimizely
thomaszurkan-optimizely / UserAttribute.swift
Created August 9, 2019 19:41
A swift data object with a generic field
struct UserAttribute: Codable, Equatable {
// MARK: - JSON parse
var name: String?
var type: String?
var match: String?
var value: Any?
}