This repository has been archived by the owner on Jun 19, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenv.go
101 lines (85 loc) · 1.81 KB
/
env.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package main
import (
"encoding/base64"
"os"
"strconv"
"time"
"github.com/labstack/echo/v4"
)
type env interface {
port() string
appId() int64
webhookSecret() []byte
secret() []byte
storageConnectionString() string
gitHubBaseUrl() *string
containerTemplate() *string
now() time.Time
}
type defaultEnv struct{}
func newEnv() env {
return &defaultEnv{}
}
func (*defaultEnv) port() string {
port, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
if !exists {
port = "8080"
}
return port
}
func (*defaultEnv) appId() int64 {
appId, present := os.LookupEnv("APP_ID")
if !present {
panic("no APP_ID specified.")
}
appIdInt, err := strconv.ParseInt(appId, 10, 64)
if err != nil {
panic("incorrect APP_ID")
}
return appIdInt
}
func (*defaultEnv) webhookSecret() []byte {
webhookSecret, present := os.LookupEnv("WEBHOOK_SECRET")
if !present {
panic("no WEBHOOK_SECRET specified.")
}
return []byte(webhookSecret)
}
func (*defaultEnv) secret() []byte {
secretBase64, present := os.LookupEnv("SECRET")
if !present {
panic("no SECRET specified.")
}
secret, err := base64.StdEncoding.DecodeString(secretBase64)
if err != nil {
panic("incorrect SECRET.")
}
return []byte(secret)
}
func (*defaultEnv) storageConnectionString() string {
connStr, present := os.LookupEnv("AzureWebJobsStorage")
if !present {
panic("no AzureWebJobsStorage found.")
}
return connStr
}
func (*defaultEnv) gitHubBaseUrl() *string {
return nil
}
func (*defaultEnv) containerTemplate() *string {
return nil
}
func (*defaultEnv) now() time.Time {
return time.Now()
}
func injectEnv(e env) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
c.Set("Env", e)
return next(c)
}
}
}
func getEnv(c echo.Context) env {
return c.Get("Env").(env)
}