Skip to content

Instantly share code, notes, and snippets.

var publicKey = postman.getEnvironmentVariable('apple-news-keyId') || '';
var secretKey = postman.getEnvironmentVariable('apple-news-keySecret') || '';
const decodedKey = CryptoJS.enc.Base64.parse(secretKey)
const date = (new Date()).toISOString().split('.')[0]+"Z";
var sign = "GET" + request.url + "" + date;
const hmacDigest = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(sign, decodedKey));
postman.setGlobalVariable("hmac", "HHMAC; key=" + publicKey + "; signature=" + hmacDigest + "; date=" + date);
@johnduffell
johnduffell / scrub6.scala
Last active September 14, 2018 10:10
dev blog snippet
val safeLogLine = scrubbed.safe
val secretLogLine = scrubbed.danger
safeLogLine: String = problem occurred *****, id: *****
secretLogLine: String = problem occurred YIKES!, id: hui840
@johnduffell
johnduffell / scrub5.scala
Last active September 14, 2018 10:10
dev blog snippet
val scrubbed = scrub"problem occurred $danger, id: $secret"
=> scrubbed: Scrubbed = problem occurred *****, id: *****
@johnduffell
johnduffell / scrub4.scala
Created July 11, 2018 09:40
dev blog snippet
case class Scrubbed(danger: String, safe: String) {
override val toString = safe
}
implicit class Scrubber(val sc: StringContext) extends AnyVal {
def scrub(args: Any*): Scrubbed = {
Scrubbed(
sc.s(args: _*),
sc.s(args.map(_ => "*****"): _*)
@johnduffell
johnduffell / scrub3.scala
Last active September 14, 2018 10:10
dev blog snippet
val manualInterpolated =
StringContext(
"problem occurred ", ", id: ", ""
).s(
danger, secret
)
@johnduffell
johnduffell / scrub2.scala
Last active September 14, 2018 10:10
dev blog snippet
val autoInterpolated = s"problem occurred $danger, id: $secret"
=> autoInterpolated: String = problem occurred YIKES!, id: hui840
@johnduffell
johnduffell / scrub1.scala
Created July 11, 2018 09:32
dig blog snippet
val danger = "YIKES!"
val secret = "hui840"
@johnduffell
johnduffell / numbers.scala
Created August 30, 2017 12:05
implement numbers with lambda calculus
package fpinscala
object Test {
sealed trait Number
sealed trait Positive extends Number
case object Zero extends Positive with Negative
case class Succ[P <: Positive](prev: P) extends Positive