Add meetings API

This commit is contained in:
James S 2023-01-04 09:57:15 +00:00
parent 29eb14b232
commit 991a3dd5bb
3 changed files with 50 additions and 8 deletions

View File

@ -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 {

41
meet.go Normal file
View File

@ -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")
}
}

View File

@ -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)