From 991a3dd5bbeab7445c909eda3ac89fe9ccba20b2 Mon Sep 17 00:00:00 2001 From: james Date: Wed, 4 Jan 2023 09:57:15 +0000 Subject: [PATCH] Add meetings API --- main.go => femMemos.go | 9 +++++++-- meet.go | 41 +++++++++++++++++++++++++++++++++++++++++ http.go => memos.go | 8 ++------ 3 files changed, 50 insertions(+), 8 deletions(-) rename main.go => femMemos.go (66%) create mode 100644 meet.go rename http.go => memos.go (87%) diff --git a/main.go b/femMemos.go similarity index 66% rename from main.go rename to femMemos.go index 3d02108..c1e398b 100644 --- a/main.go +++ b/femMemos.go @@ -8,15 +8,20 @@ import ( "net/http" ) +type ErrorResponse struct { + Message string `json:"Error"` +} + var DB *sql.DB func main() { DB = openOrCreateDb("./memos.db") defer DB.Close() - http.HandleFunc("/memos", endpoint) + http.HandleFunc("/memos", memosEndpoint) + http.HandleFunc("/meet", meetEndpoint) log.Println("starting server") - err := http.ListenAndServe(":80", nil) + err := http.ListenAndServe(":7000", nil) if errors.Is(err, http.ErrServerClosed) { log.Println("server closed") } else if err != nil { diff --git a/meet.go b/meet.go new file mode 100644 index 0000000..5b6893f --- /dev/null +++ b/meet.go @@ -0,0 +1,41 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + "time" +) + +type NewMeetingResponse struct { + LastMeeting time.Time `json:"LastMeetingTime"` +} + +var lastMeeting time.Time + +func httpGetMeeting(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + err := json.NewEncoder(w).Encode(NewMeetingResponse{lastMeeting}) + if err != nil { + log.Fatal(err) + } +} + +func httpCreateMeeting(w http.ResponseWriter, r *http.Request) { + lastMeeting = time.Now() + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(NewMeetingResponse{lastMeeting}) +} + +func meetEndpoint(w http.ResponseWriter, r *http.Request) { + switch r.Method { + case "GET": + httpGetMeeting(w, r) + case "POST": + httpCreateMeeting(w, r) + default: + w.WriteHeader(405) + fmt.Fprintf(w, "HTTP method must be GET or POST") + } +} diff --git a/http.go b/memos.go similarity index 87% rename from http.go rename to memos.go index d5a1422..d3362e6 100644 --- a/http.go +++ b/memos.go @@ -7,12 +7,8 @@ import ( "net/http" ) -type ErrorResponse struct { - Message string `json:"message"` -} - type NewMemoResponse struct { - ID int64 `json:"id"` + ID int64 `json:"ID"` } func httpGetMemos(w http.ResponseWriter, r *http.Request) { @@ -42,7 +38,7 @@ func httpCreateMemo(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(NewMemoResponse{id}) } -func endpoint(w http.ResponseWriter, r *http.Request) { +func memosEndpoint(w http.ResponseWriter, r *http.Request) { switch r.Method { case "GET": httpGetMemos(w, r)