Skip to content

Instantly share code, notes, and snippets.

View glaforge's full-sized avatar

Guillaume Laforge glaforge

View GitHub Profile
@glaforge
glaforge / fetchPostsToMD.groovy
Created March 7, 2023 17:40
Transform my old blog posts into Hugo friendly Markdown article documents
@Grab('org.jsoup:jsoup:1.15.4')
import org.jsoup.Jsoup
import org.jsoup.safety.Safelist
@Grab('io.github.furstenheim:copy_down:1.1')
import io.github.furstenheim.*
import java.nio.file.Paths
import java.nio.file.Files
import java.text.SimpleDateFormat
@Controller("/product")
public class ProductController {
@Get
@Status(HttpStatus.OK)
public void index() {
throw Problem.builder()
.withType(URI.create("https://example.org/out-of-stock"))
.withTitle("Out of Stock")
.withStatus(new HttpStatusType(HttpStatus.BAD_REQUEST))
.withDetail("Item B00027Y5QG is no longer available")
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
Content-Language: en
{
"type": "https://example.com/probs/out-of-credit",
"title": "You do not have enough credit.",
"detail": "Your current balance is 30, but that costs 50.",
"instance": "/account/12345/msgs/abc",
"balance": 30,
@glaforge
glaforge / package.json
Created May 4, 2017 10:29
Code for the Cloud Functions implementation of the demo from Cloud Next San Francisco on extending the Google Assistant with Actions on Google, API.AI and Cloud Functions
https://www.youtube.com/watch?v=7e0RGIul8Kk
@glaforge
glaforge / package.json
Created May 4, 2017 10:29
Code for the Cloud Functions implementation of the demo from Cloud Next San Francisco on extending the Google Assistant with Actions on Google, API.AI and Cloud Functions
https://www.youtube.com/watch?v=7e0RGIul8Kk
shadow {
transform {
canTransformResource { FileTreeElement element -> }
transform { TransformerContext context -> }
hasTransformedResource { }
modifyOutputStream { ZipOutputStream jos -> }
}
)
<!DOCTYPE HTML>
<html>
<head>
<title>24h Domino Clock</title>
<meta http-equiv="refresh" content="60">
<script>
function drawDot(context, x, y) {
var lg1 = context.createLinearGradient(x - 10, y - 10, x + 20, y + 40);
lg1.addColorStop(0, 'black');
@glaforge
glaforge / GroovySparkPi.groovy
Created June 14, 2016 21:09
A groovyfied version of GroovySparkPi
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@glaforge
glaforge / jdeferred_example_2.groovy
Created April 12, 2016 19:53
Another example combining JDeferred with Groovy
@Grab('org.jdeferred:jdeferred-core:1.2.4')
import org.jdeferred.*
import org.jdeferred.impl.*
def d = new DeferredObject()
def p = d.promise()
// gotta be explicit and can't use Groovy closures:
// DoneCallback / DoneFilter / DonePite are ambiguous
// in terms of signature, for SAM type coercion
@glaforge
glaforge / jdeferred_ex1.groovy
Created April 12, 2016 18:59
Quick example of using JDeferred from Apache Groovy
@Grab('org.jdeferred:jdeferred-core:1.2.4')
import org.jdeferred.*
import org.jdeferred.impl.*
def deferred = new DeferredObject()
def promise = deferred.promise()
promise.done { result ->
println "done: $result"
}.fail { rejection ->