genofire/hs_monolith
genofire
/
hs_monolith
Archived
1
0
Fork 0
This repository has been archived on 2020-09-27. You can view files and clone it, but cannot push or open issues or pull requests.
hs_monolith/http/good_temp.go

67 lines
1.9 KiB
Go
Raw Normal View History

// Package that contains all api routes of this microservice
package http
import (
"bytes"
"io"
"net/http"
"os"
"text/template"
)
// Path to the svg image template, that shows the availability or freshness of a given good
// with a traffic light food labeling system
2017-05-17 21:33:23 +02:00
var GoodAvailabilityTemplate string
2017-05-12 10:54:05 +02:00
var GoodFreshnessTemplate string
// Function to calculate a percent value from a given value and a maximum value
func tempPercent(value, max int) int {
if value >= max {
return 100
}
return value * 100 / max
}
// Function to calculate a partial radius, depending on a percentage value
func tempProcessRadius(value, max, radius int) float64 {
if value >= max {
return 0
}
2017-06-22 20:36:11 +02:00
return (1 - float64(value)/float64(max)) * float64(radius) * 2 * 3.14
}
// Function to get the SVG, that shows the availability with a traffic light food labeling system for a given good
func getGoodAvailablitySVG(w http.ResponseWriter, count int) {
t := template.New("some")
t = t.Funcs(template.FuncMap{"procent": tempPercent,
"process_radius": tempProcessRadius,
})
buf := bytes.NewBuffer(nil)
2017-05-17 21:33:23 +02:00
f, _ := os.Open(GoodAvailabilityTemplate) // Error handling elided for brevity.
io.Copy(buf, f) // Error handling elided for brevity.
f.Close()
s := string(buf.Bytes())
t.Parse(s)
w.Header().Set("Content-Type", "image/svg+xml")
t.Execute(w, map[string]interface{}{"Count": count})
}
2017-05-12 10:54:05 +02:00
2017-05-15 10:22:24 +02:00
// Function to get the SVG, that shows the freshness with a traffic light food labeling system for a given good
2017-05-12 10:54:05 +02:00
func getGoodFreshnessSVG(w http.ResponseWriter, fresh bool) {
t := template.New("some")
buf := bytes.NewBuffer(nil)
f, _ := os.Open(GoodFreshnessTemplate) // Error handling elided for brevity.
2017-05-17 21:33:23 +02:00
io.Copy(buf, f) // Error handling elided for brevity.
2017-05-12 10:54:05 +02:00
f.Close()
s := string(buf.Bytes())
t.Parse(s)
w.Header().Set("Content-Type", "image/svg+xml")
t.Execute(w, map[string]interface{}{"Fresh": fresh})
2017-05-17 21:33:23 +02:00
}