Skip to content

kentaro/delta

Repository files navigation

Delta BuildStatus

Delta is an HTTP shadow proxy server that sits between clients and your server(s) to enable "shadow requests".

It's actually just a Go port of Kage. You can consult the documentation of Kage for reasons why this software matters ;)

Usage

package main

import (
	"github.com/kentaro/delta"
	"log"
	"net/http"
	"time"
)

func main() {
	server := delta.NewServer("0.0.0.0", 8484)

	server.AddMasterBackend("production", "127.0.0.1", 8080)
	server.AddBackend("testing", "127.0.0.1", 8081)

	server.OnSelectBackend(func(req *http.Request) []string {
		if req.Method == "GET" {
			return []string{"production", "testing"}
		} else {
			return []string{"production"}
		}
	})

	server.OnMungeHeader(func(backend string, header *http.Header) {
		if backend == "testing" {
			header.Add("X-Delta-Sandbox", "1")
		}
	})

	server.OnBackendFinished(func(responses map[string]*delta.Response) {
		for backend, response := range responses {
			log.Printf("%s [%d ms]: %s", backend, (response.Elapsed / time.Millisecond), response.Data)
		}
	})

	server.Run()
}

See Also

  • Kage
  • Geest
    • Perl port of Kage
  • Gor
    • It's a tool written in Go to deal with a similar problem

Author

License

About

HTTP shadow proxy server written in Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages