Skip to content

Instantly share code, notes, and snippets.

@papisz
papisz / middlewared.go
Last active July 5, 2018 21:50
chi-urlparam-good-middleware
r := chi.NewRouter()
r.Route("/pets", func(r chi.Router) {
r.With(petMiddleware).Route("/{pet}", func(r chi.Router) {
r.Get("/", getPetHandler)
r.Put("/", putPetHandler)
})
})
@papisz
papisz / middleware.go
Created July 5, 2018 20:56
chi-urlparam-middleware
func petMiddleware(next http.Handler) http.Handler {
allowedPets := map[string]struct{}{
"cat": struct{}{},
"dog": struct{}{},
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
pet := chi.URLParam(r, "pet")
if _, ok := allowedPets[pet]; !ok {
w.WriteHeader(http.StatusBadRequest)
// BAD EXAMPLE, doesn't work!
r := chi.NewRouter()
r.With(petMiddleware).Route("/pets", func(r chi.Router) {
r.Route("/{pet}", func(r chi.Router) {
r.Get("/", getPetHandler)
r.Put("/", putPetHandler)
})
})
http.ListenAndServe(":8000", r)
@papisz
papisz / checking-put.go
Last active July 5, 2018 20:22
chi-urlparam-checking-put
r.Put("/info", func(w http.ResponseWriter, r *http.Request) {
pet := chi.URLParam(r, "pet")
forbiddenPets := []string{"dragon"}
for _, forbiddenPet := range forbiddenPets {
if pet == forbiddenPet {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(fmt.Sprintf("forbidden pet %s!\n", pet)))
return
}
}
@papisz
papisz / checking-get.go
Last active July 5, 2018 20:22
chi-urlparam-checking-get
r.Get("/info", func(w http.ResponseWriter, r *http.Request) {
pet := chi.URLParam(r, "pet")
forbiddenPets := []string{"dragon"}
for _, forbiddenPet := range forbiddenPets {
if pet == forbiddenPet {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(fmt.Sprintf("forbidden pet %s!\n", pet)))
return
}
}
@papisz
papisz / simplest.go
Last active July 5, 2018 21:00
chi-urlparam-simplest
func serve() {
r := chi.NewRouter()
r.Route("/pets", func(r chi.Router) {
r.Route("/{pet}", func(r chi.Router) {
r.Get("/", getPetHandler)
r.Put("/", putPetHandler)
})
})
http.ListenAndServe(":8000", r)
@papisz
papisz / consul.sh
Created December 16, 2014 10:47 — forked from ianunruh/consul.sh
#!/bin/bash
apt-get install -y curl unzip
mkdir -p /var/lib/consul
mkdir -p /usr/share/consul
mkdir -p /etc/consul/conf.d
curl -OL https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip
unzip 0.4.1_linux_amd64.zip
mv consul /usr/local/bin/consul
#!/usr/bin/env python
import gevent.monkey
gevent.monkey.patch_all()
import boto
import config
import gevent
import gevent.pool
import os
@papisz
papisz / timeout.py
Created May 13, 2014 13:09
Python timeout snippet
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""Taken from:
http://stackoverflow.com/a/22348885
http://stackoverflow.com/a/2282656"""
import signal