Alexander Belanger 4 rokov pred
rodič
commit
642402d024
3 zmenil súbory, kde vykonal 106 pridanie a 0 odobranie
  1. 60 0
      api/server/handlers/handler.go
  2. 18 0
      docker/localhost.crt
  3. 28 0
      docker/localhost.key

+ 60 - 0
api/server/handlers/handler.go

@@ -0,0 +1,60 @@
+package handlers
+
+type PorterHandler interface{
+	Config() *shared.Config
+}
+
+type PorterHandlerWriter interface{
+	PorterHandler
+	WriteResult(w http.ResponseWriter, v interface{})
+}
+
+type PorterHandlerReader interface{
+	PorterHandler
+	DecodeAndValidate(w http.ResponseWriter, r *http.Request, v interface{})
+}
+
+type PorterHandlerReadWriter interface{
+	PorterHandlerWriter
+	PorterHandlerReader
+}
+
+// type PorterHandler struct {
+// 	config           *shared.Config
+// 	decoderValidator shared.RequestDecoderValidator
+// 	writer           shared.ResultWriter
+// }
+
+// handler needs:
+// - interface for decodervalidator+writer
+// - shared configuration
+// - writer
+// - context set (user, project, etc)
+// - standard error
+
+
+// notes:
+// decode and validate should happen above the handler itself. the scopes and strongly typed 
+
+// "handlers" refer to an aggregation of application-logic. they should not contain any logic
+// for:
+// - error aggregation (so they accept api error interface)
+// - analytics
+// - authentication
+// - reading in required context (part of authentication)
+
+// ProjectScopedHandler()
+// - read project model from context 
+// - so "Get Project" accepts a ProjectGetter, which calls readUser() and readProject()
+
+// The errors that a handler can throw should be defined in API spec
+
+type UserGetter struct {
+	readUser() *models.User
+}
+
+type ProjectGetter struct {
+	UserGetter
+
+	readProject() *models.Project
+}

+ 18 - 0
docker/localhost.crt

@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC5TCCAc2gAwIBAgIJAKEosQgL78XIMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
+BAMMCWxvY2FsaG9zdDAeFw0yMTA4MTExMjI4MTNaFw0yMTA5MTAxMjI4MTNaMBQx
+EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBANxNCy8bMzcr6eWWiaUzOFrrOoxae6WrWIa2Xr7dfXRv5kADv8cOSB9Rz9Of
+iZtXI3H/2RJYrkSE8FhwLrYy7+t3AEquWyylKbyoDj/1mpVD5/HLARtFrFYkqzDr
+AGNUmnRUoI0Y9dxk8ucoiuYRTJtKojYwg2RXBhQx0bKmX2g82kifbjBGCxSzx6nH
+707WCip7OalNT9ic4pFPXfJO8iLOyNkzuvQyItXlfyX2j8R3xlLUrmzPG2ndJIMh
+DFrsUCyBrP0GwgBnpSZFfkbcgPLHLTaLF6ihdPRYBQgiea3oPYdHJ29ZNMEFYFsp
+xxhGXvxee+NYZMyezY4wyz3VxT8CAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxo
+b3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B
+AQsFAAOCAQEAXoxpPcSkS0hYzut1FtitFY/AbSDxe+nOIPRMMV/BFUGLjmozMu5D
+/V8fVZAu8LC6EF4Lq3ek0odNmVzoMiVCoWiTwEruFt6FUKpjxTashUlHgBpVuLOV
+cA2kl2ZolCpiBJjPhnyZePrbSknG0nLxIggfiK8uAiwEWvwPJZQ+6vT/yzOXD1tM
+dFAnI6W++uQ7xwdDB0jTf8GY98K+Az6D2SI/O9occPnoJjltXXjuDxmaOaqNRhd+
+uQTECQb+HEMKTKqVqRGj8ahl7307ljG8xOEHklstGicqJWiVVpHGAhy8KCZcJlO4
+muetI6b28OCvgcWeriazDDgZrERuihg2NQ==
+-----END CERTIFICATE-----

+ 28 - 0
docker/localhost.key

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDcTQsvGzM3K+nl
+lomlMzha6zqMWnulq1iGtl6+3X10b+ZAA7/HDkgfUc/Tn4mbVyNx/9kSWK5EhPBY
+cC62Mu/rdwBKrlsspSm8qA4/9ZqVQ+fxywEbRaxWJKsw6wBjVJp0VKCNGPXcZPLn
+KIrmEUybSqI2MINkVwYUMdGypl9oPNpIn24wRgsUs8epx+9O1goqezmpTU/YnOKR
+T13yTvIizsjZM7r0MiLV5X8l9o/Ed8ZS1K5szxtp3SSDIQxa7FAsgaz9BsIAZ6Um
+RX5G3IDyxy02ixeooXT0WAUIInmt6D2HRydvWTTBBWBbKccYRl78XnvjWGTMns2O
+MMs91cU/AgMBAAECggEBAKeX0PdQKQFC3hh0EljkA25fX1YhC8m39YveN2vaUjN/
+YVm3wHCtc76n3YQv7V6IxwVVzwy+/CxSOgn9pfuj+pNWH5mw1Nm8+Gh2LQkJTkVZ
+uJ1gg4H82iNamAWJ8eyfEzWGn/FXWMsG3Sdv12M5K99Dwu2YsIxoC87XK6FOImzH
+3Ldym/Iiv2hVwj7xKNysZD9ttGroKx44YrK7MmiRYPPCWlGxCDjxTQ/F0r/pdeSt
+QN9b7mxTDL5Snp2sOekUj7hIbAvqGgfShhP7naoZjdFA926yLxip0kUguCKCGHA+
+2f0pQHB6WUC+Os9/Impwl+o8rwKqXtsXwDqOqIbzt1kCgYEA+eAEx9eYRQoXKuq/
+dwZOvkFHaQoYmTnNF8BGJxVA9VmGeJt/Om7NPQE9CF5Mq3K2UXcwp++/shuIvpLh
+M6KF5Zr3Xt2l/j5mmCcK72VnPktKa1eEljj5EVgqHz+Uec6kKazGhiL533NmYrUq
+PBDzF2MxBc9QmaJGJzdJqcBO0X0CgYEA4bNyEtATxCV1znY3TehZcwckm1YMjgtI
+0oSaAv/OqfFKVgsCL2SnFsd+SkYaq80ZsCZxnofGG7VtWmOZ1YUTkwU2tfb3neu0
+hiByU+e4o1ylMH6dB6xLL0RxZuYnq66dAQOpLkRyDj+8AQs6k7arbMzNw8zYqjAm
+h0iGvKhK7msCgYAW3HQThJod1up/trKFxUH3DinmZlIR0sP85E6GzN8Ak4xGBJQD
+WJfWeQKIfXguR3R+x5TgCINVXEeKiA2ql7gAZck0GLtTI4pnaUsK1BA6FtFcOMmc
+pOHEwHg6G6sN6eYDGheftht+YiR/62tNy48yGJUnnuwU4k/gzqIiscGEUQKBgDn6
+QaxpfRpe0RNXNL+zlv7Ab/vjL9hxN6S0YWex1KG9FO5jZ41LGsz0NBHaTlGhnx6r
+0XX6xL4rbcrRWRwLUkrrBPHbXiJYAQiPXy8EkF6OlvSNIcNt0+Zxe3wGVVx5v2Ua
+TqRO+smEP8Q44TQ+sWyCc7z/awzUz6Di1ZGy3YS/AoGACbHtC3I3mRDpwG8q9OPM
+MPin17x6KSXPsEKf/9G6r5a+EBD+mVgrBScYgnJf+9+7wnQLiJF6IDAt2Z6GZZ8U
+G/NhTeDNCoOTf1NtIZENv2qYOULDwAaifiSMueROa1di2aqM5IwAYaBjGFe+2fxv
+2ydGieACr530RY3Sh6iXMrg=
+-----END PRIVATE KEY-----