UNPKG

ipsos-components

Version:

Material Design components for Angular

41 lines (34 loc) 1.56 kB
import * as firebaseFunctions from 'firebase-functions'; import {writeFileSync} from 'fs'; import {verifySecureToken} from './jwt-util'; import {isCreateEvent} from './util/util'; const gcs = require('@google-cloud/storage')(); /** The storage bucket to store the images. The bucket is also used by Firebase Storage. */ const bucket = gcs.bucket(firebaseFunctions.config().firebase.storageBucket); /** * Writes base-64 encoded test images to png files on the filesystem. * Image data posted to database will be saved as png files * and uploaded to screenshot/$prNumber/dataType/$filename * Convert BufferArray to .png image file */ export function writeTestImagesToFiles(event: any) { // Only edit data when it is first created. Exit when the data is deleted. if (!isCreateEvent(event)) { return; } let dataType = event.params.dataType; let prNumber = event.params.prNumber; let data = event.data.val(); let saveFilename = `${event.params.filename}.screenshot.png`; // Check it's either diff images generated by screenshot comparison, or the test image results if (dataType !== 'diff' && dataType !== 'test') { return; } return verifySecureToken(event).then(() => { let tempPath = `/tmp/${dataType}-${saveFilename}`; let filePath = `screenshots/${prNumber}/${dataType}/${saveFilename}`; let binaryData = new Buffer(data, 'base64').toString('binary'); writeFileSync(tempPath, binaryData, 'binary'); return bucket.upload(tempPath, {destination: filePath}); }); }