main.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "io"
  7. "encoding/json"
  8. "net/http"
  9. "git.sr.ht/~jordyn/imagination/figtree"
  10. )
  11. func main() {
  12. http.HandleFunc("/", homeHandler)
  13. http.HandleFunc("/figs/", figHandler)
  14. http.HandleFunc("/all/", allHandler)
  15. log.Fatal(http.ListenAndServe(":8080", nil))
  16. }
  17. func homeHandler(w http.ResponseWriter, r *http.Request) {
  18. fmt.Fprintf(w, "<h1>my beautiful figs</h1>")
  19. }
  20. func figHandler(w http.ResponseWriter, r *http.Request) {
  21. r.ParseMultipartForm(32 << 20)
  22. file, _, err := r.FormFile("newfig")
  23. if err != nil {
  24. panic(err)
  25. }
  26. defer file.Close()
  27. fighome, newfig, err := figtree.HarvestFig(
  28. r.FormValue("name"),
  29. r.FormValue("desc"),
  30. r.FormValue("type"),
  31. r.FormValue("ext"),
  32. r.FormValue("birth"))
  33. log.Println("blooming " + fighome)
  34. f, err := os.Create(fighome)
  35. if err != nil {
  36. panic(err)
  37. }
  38. err = os.Chmod(fighome, 0666)
  39. if err != nil {
  40. panic(err)
  41. }
  42. defer f.Close()
  43. io.Copy(f, file)
  44. figtree.DryFig(newfig)
  45. }
  46. func allHandler(w http.ResponseWriter, r *http.Request) {
  47. figs, _ := figtree.AllFigsFancy()
  48. json.NewEncoder(w).Encode(figs)
  49. }