Add meetings API
This commit is contained in:
parent
29eb14b232
commit
991a3dd5bb
@ -8,15 +8,20 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ErrorResponse struct {
|
||||||
|
Message string `json:"Error"`
|
||||||
|
}
|
||||||
|
|
||||||
var DB *sql.DB
|
var DB *sql.DB
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
DB = openOrCreateDb("./memos.db")
|
DB = openOrCreateDb("./memos.db")
|
||||||
defer DB.Close()
|
defer DB.Close()
|
||||||
|
|
||||||
http.HandleFunc("/memos", endpoint)
|
http.HandleFunc("/memos", memosEndpoint)
|
||||||
|
http.HandleFunc("/meet", meetEndpoint)
|
||||||
log.Println("starting server")
|
log.Println("starting server")
|
||||||
err := http.ListenAndServe(":80", nil)
|
err := http.ListenAndServe(":7000", nil)
|
||||||
if errors.Is(err, http.ErrServerClosed) {
|
if errors.Is(err, http.ErrServerClosed) {
|
||||||
log.Println("server closed")
|
log.Println("server closed")
|
||||||
} else if err != nil {
|
} else if err != nil {
|
41
meet.go
Normal file
41
meet.go
Normal 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")
|
||||||
|
}
|
||||||
|
}
|
@ -7,12 +7,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ErrorResponse struct {
|
|
||||||
Message string `json:"message"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type NewMemoResponse struct {
|
type NewMemoResponse struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"ID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func httpGetMemos(w http.ResponseWriter, r *http.Request) {
|
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})
|
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 {
|
switch r.Method {
|
||||||
case "GET":
|
case "GET":
|
||||||
httpGetMemos(w, r)
|
httpGetMemos(w, r)
|
Loading…
x
Reference in New Issue
Block a user