Skip to content

Instantly share code, notes, and snippets.

View DinoChiesa's full-sized avatar

Dino Chiesa DinoChiesa

View GitHub Profile
// weightedRandomSelector.js
//
// simple weighted random selector.
//
// Copyright © 2013, 2014 Dino Chiesa and Apigee Corp
// All rights reserved.
//
// created: Fri, 26 Jul 2013 11:14
// last saved: <2019-June-24 06:13:20>
//
// fixupCookies.js
// ------------------------------------------------------------------
//
// Intended to modify cookies within an API Proxy to
// add SameSite=None; Secure to each cookie.
//
// Implements a parser to extract cookies from a header.
//
// This is necessary because Apigee folds all the
// Set-Cookie header values into one, which isn't right
@DinoChiesa
DinoChiesa / updateSheets.js
Last active January 14, 2020 14:40
boilerplate for building a command-line app in nodejs that uses OAuth2 client id to update Google sheets
// updateSheets.js
// ------------------------------------------------------------------
//
// created: Tue Jan 14 05:22:42 2020
// last saved: <2020-January-14 06:34:31>
const fs = require('fs'),
path = require('path'),
util = require('util'),
{google} = require('googleapis'),
// base64.js
// ------------------------------------------------------------------
//
// Bas64 encoder and decoder
//
// created: Sat Feb 20 12:30:51 2016
// last saved: <2016-May-19 11:48:04>
(function (){
const app = require('express')(),
bodyParser = require('body-parser'),
yes = require('yes-https'); // HSTS => https always
var gStatus = {
version : '20180619-1845'
};
// HSTS on only if process.env.NODE_ENV == 'production'
app.use(yes());
@DinoChiesa
DinoChiesa / service.js
Last active June 20, 2018 16:23
nodejs hello world
const app = require('express')(),
bodyParser = require('body-parser');
var gStatus = {
version : '20180619-1845'
};
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// extractJsonToContextVars.js
// ------------------------------------------------------------------
//
// For a JSON payload, set context vars for all fields.
//
// Use a policy config like this:
//
// <Javascript name='JS-RipJiraResponse' timeLimit='200' >
// <Properties>
// <Property name='prefix'>json</Property>
@DinoChiesa
DinoChiesa / Deserialize-XML.java
Created December 7, 2017 00:52
Deserialize XML (Java fragment)
String canonicalPath = "/users/foo/bar/something.xml";
String xml = new String(Files.readAllBytes(Paths.get(canonicalPath)), StandardCharsets.UTF_8);
XMLStreamReader sr = XMLInputFactory.newFactory().createXMLStreamReader(new FileInputStream(cpath));
XmlMapper mapper = new XmlMapper();
Map m = (Map) mapper.readValue(sr, Object.class);
$ diff URI.js URI-orig.js
15,16c15,25
< // Node
< module.exports = factory(null, null, null, root);
---
> // https://github.com/umdjs/umd/blob/master/returnExports.js
> if (typeof module === 'object' && module.exports) {
> // Node
> module.exports = factory(require('./punycode'), require('./IPv6'), require('./SecondLevelDomains'));
> } else if (typeof define === 'function' && define.amd) {
@DinoChiesa
DinoChiesa / Example-output.txt
Created August 31, 2017 23:50
Produce a zip for an API Proxy bundle
$ ./ProduceApiProxyZip.sh ~/dev/community-examples/crypto-test
Creating the zip at apiproxy-crypto-test-20170831-164831.zip
zipping the node modules...
Archive: apiproxy-crypto-test-20170831-164831.zip
Length Date Time Name
--------- ---------- ----- ----
0 04-26-2017 11:11 apiproxy/
437 04-26-2017 11:11 apiproxy/crypto-test.xml
0 04-26-2017 11:24 apiproxy/policies/