-
Notifications
You must be signed in to change notification settings - Fork 0
/
subreddits.go
69 lines (60 loc) · 1.69 KB
/
subreddits.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
package http
import (
"log"
"net/http"
"github.com/azehor/go-reddit-clone/internal/subreddit/model"
"github.com/go-chi/chi/v5"
)
func (s *Server) getSidebar(w http.ResponseWriter, r *http.Request) {
id := chi.URLParam(r, "subreddit")
data, err := s.subreddits.GetSubreddit(id)
if err != nil {
log.Println(err)
}
err = s.templates.ExecuteTemplate(w, "sidebar.html", data)
if err != nil {
log.Println(err)
}
}
func (s *Server) getSubredditList(w http.ResponseWriter, r *http.Request) {
var ordering string
if ordering := chi.URLParam(r, "ordering"); ordering == "" {
ordering = "hot" //TODO: if signed in, default value should be pulled from user settings
}
data, err := s.subreddits.GetSubredditList(ordering)
if err != nil {
log.Fatal(err)
}
err = s.templates.ExecuteTemplate(w, "subreddit_list.html", data)
if err != nil {
log.Println(err)
}
}
func (s *Server) createSubreddit(w http.ResponseWriter, r *http.Request) {
var name = r.FormValue("subreddit_name")
var title = r.FormValue("subreddit_title")
var description = r.FormValue("subreddit_description")
var rules = r.FormValue("subreddit_rules")
var sub_type = r.FormValue("subreddit_type")
var over18_string = r.Form["subreddit_over18"]
//TODO: Validate inputs
sub_url := "r/" + name
over18 := len(over18_string) > 0
log.Print(over18)
sub := model.Subreddit{
Description: &description,
Rules: &rules,
SubredditType: &sub_type,
Title: &title,
URL: &sub_url,
Over18: &over18,
}
data, err := s.subreddits.InsertSubreddit(&sub)
if err != nil {
w.WriteHeader(500)
} else {
log.Print(data)
w.Header().Add("HX-Redirect", "//"+r.Host+"/"+*data.URL)
w.WriteHeader(200)
}
}