Commit 22d1f305 authored by santiaago's avatar santiaago
Browse files

first take and image generation

parent 334c773a
Loading
Loading
Loading
Loading
+49 −3
Original line number Diff line number Diff line
package main

import (
	"bytes"
	"flag"
	"fmt"
	"image"
	"image/color"
	"image/draw"
	"image/jpeg"
	"log"
	"net/http"
	"os"
	"strconv"
)

var root = flag.String("root", "app", "file system path")
@@ -13,6 +18,7 @@ var root = flag.String("root", "app", "file system path")
func main() {
	http.HandleFunc("/black/", blackHandler)
	http.HandleFunc("/green/", greenHandler)
	http.HandleFunc("/blue/", blueHandler)
	http.Handle("/", http.FileServer(http.Dir(*root)))
	log.Println("Listening on " + os.Getenv("PORT"))
	err := http.ListenAndServe(":"+os.Getenv("PORT"), nil)
@@ -22,9 +28,49 @@ func main() {
}

func blackHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "black handler!")
	// prepare
	m := image.NewRGBA(image.Rect(0, 0, 240, 240))
	blue := color.RGBA{0, 0, 0, 255}
	draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src)

	// encode
	buf := new(bytes.Buffer)
	_ = jpeg.Encode(buf, m, nil)

	// write
	w.Header().Set("Content-Type", "image/jpeg")
	w.Header().Set("Content-Length", strconv.Itoa(len(buf.Bytes())))
	w.Write(buf.Bytes())
}

func greenHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "green handler!")
	// prepare
	m := image.NewRGBA(image.Rect(0, 0, 240, 240))
	blue := color.RGBA{0, 128, 0, 255}
	draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src)

	// encode
	buf := new(bytes.Buffer)
	_ = jpeg.Encode(buf, m, nil)

	// write
	w.Header().Set("Content-Type", "image/jpeg")
	w.Header().Set("Content-Length", strconv.Itoa(len(buf.Bytes())))
	w.Write(buf.Bytes())
}

func blueHandler(w http.ResponseWriter, r *http.Request) {
	// prepare
	m := image.NewRGBA(image.Rect(0, 0, 240, 240))
	blue := color.RGBA{0, 0, 255, 255}
	draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src)

	// encode
	buf := new(bytes.Buffer)
	_ = jpeg.Encode(buf, m, nil)

	// write
	w.Header().Set("Content-Type", "image/jpeg")
	w.Header().Set("Content-Length", strconv.Itoa(len(buf.Bytes())))
	w.Write(buf.Bytes())
}