diff --git a/internals/config.go b/internals/config.go deleted file mode 100644 index c66f76f..0000000 --- a/internals/config.go +++ /dev/null @@ -1,4 +0,0 @@ -package internals - -const APP_VERSION = "1" -const APP_NAME = "project-extrovert" diff --git a/internals/helpers.go b/internals/helpers.go deleted file mode 100644 index b6bf129..0000000 --- a/internals/helpers.go +++ /dev/null @@ -1,55 +0,0 @@ -package internals - -import ( - "fmt" - "net/http" - "slices" -) - -func RemoveDuplicates[T comparable](slice []T) []T { - keys := make(map[T]bool) - list := []T{} - for _, entry := range slice { - if _, value := keys[entry]; !value { - keys[entry] = true - list = append(list, entry) - } - } - return list -} - -func GetCookie(name string, w http.ResponseWriter, r *http.Request) *http.Cookie { - name = fmt.Sprintf("__Host-%s-%s-%s", APP_NAME, APP_VERSION, name) - - c := r.Cookies() - i := slices.IndexFunc(c, func(c *http.Cookie) bool { - return c.Name == name - }) - var cookie *http.Cookie - if i == -1 { - cookie = &http.Cookie{ - Name: name, - SameSite: http.SameSiteStrictMode, - Path: "/", - Secure: true, - } - } else { - cookie = c[i] - } - return cookie -} - -func HttpErrorHelper(w http.ResponseWriter) func(msg string, err error, status int) bool { - return func(msg string, err error, status int) bool { - if err != nil { - w.WriteHeader(status) - _, err = w.Write([]byte(msg + "\n Error: " + err.Error())) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - _, _ = w.Write([]byte("Error trying to return error code (somehow):\n" + err.Error())) - } - return true - } - return false - } -} diff --git a/internals/middleware.go b/internals/middleware.go deleted file mode 100644 index 3e60e11..0000000 --- a/internals/middleware.go +++ /dev/null @@ -1,34 +0,0 @@ -package internals - -import ( - "log" - "net/http" -) - -type Middleware struct { - handler http.Handler - dev bool - noCache bool - logger *log.Logger -} - -func (m *Middleware) ServeHTTP(w http.ResponseWriter, r *http.Request) { - m.logger.Printf("Handling request. path=%s", r.URL.Path) - - if m.dev { - r.URL.Scheme = "http" - } else { - r.URL.Scheme = "https" - } - - m.handler.ServeHTTP(w, r) - - if m.noCache { - w.Header().Del("Cache-Control") - w.Header().Add("Cache-Control", "max-age=0") - } -} - -func NewMiddleware(handler http.Handler, dev bool, noCache bool, logger *log.Logger) *Middleware { - return &Middleware{handler, dev, noCache, logger} -} diff --git a/internals/static_writer.go b/internals/static_writer.go deleted file mode 100644 index 976a1a7..0000000 --- a/internals/static_writer.go +++ /dev/null @@ -1,107 +0,0 @@ -package internals - -import ( - "context" - "io" - "io/fs" - "log" - "os" - "path/filepath" - "strings" - - "github.com/a-h/templ" -) - -const PERMISSIONS = 0755 - -type Page struct { - Path string - Component templ.Component -} - -type StaticWriter struct { - DistDir *string - StaticDir *string - Pages []Page - Context context.Context - Logger log.Logger -} - -func (w *StaticWriter) WritePage(path string, writer func(ctx context.Context, w io.Writer) error) error { - directory := filepath.Dir(path) - err := os.MkdirAll(directory, PERMISSIONS) - if err != nil { - return err - } - - f, err := os.Create(path) - if err != nil { - return err - } - defer f.Close() - - err = writer(w.Context, f) - return err -} - -func (w *StaticWriter) WriteAll() error { - for _, page := range w.Pages { - p := filepath.Join(*w.DistDir, page.Path) - w.Logger.Printf("Writing page %s", p) - err := w.WritePage(p, page.Component.Render) - if err != nil { - return err - } - } - - err := filepath.WalkDir(*w.StaticDir, func(path string, d fs.DirEntry, err error) error { - if err != nil { - return err - } else if d.IsDir() || path == *w.StaticDir { - return nil - } - - f, err := filepath.Abs(path) - if err != nil { - return err - } - s, err := filepath.Abs(*w.StaticDir) - if err != nil { - return err - } - - err = w.CopyStatic(strings.TrimPrefix(f, s)) - if err != nil { - return err - } - return nil - }) - return err -} - -func (w *StaticWriter) CopyStatic(path string) error { - c, err := os.ReadFile(filepath.Join(*w.StaticDir, path)) - if err != nil { - return err - } - - p := filepath.Join(*w.DistDir, path) - err = os.MkdirAll(filepath.Dir(p), PERMISSIONS) - if err != nil { - return err - } - - f, err := os.Create(p) - if err != nil { - return err - } - defer f.Close() - - b, err := f.Write(c) - if err != nil { - return err - } - w.Logger.Printf("Wrote %v bytes in %s", b, p) - - return nil -}