-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
112 lines (90 loc) · 2.71 KB
/
main.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package main
import (
"embed"
"encoding/json"
"fmt"
"io/fs"
"log"
"net/http"
"os"
"sync"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/google/uuid"
)
type Meeting struct {
ID string `json:"id"`
Title string `json:"title"`
Date string `json:"date"`
Time string `json:"time"`
Description string `json:"description"`
Attendees []string `json:"attendees"` // Trocado de "participants" para "attendees"
}
var meetings = make(map[string]*Meeting)
var meetingsMutex = &sync.Mutex{}
//go:embed frontend/build/*
var content embed.FS
func main() {
r := chi.NewRouter()
r.Use(middleware.Logger)
fsys, _ := fs.Sub(content, "frontend/build")
r.Handle("/*", http.StripPrefix("/", http.FileServer(http.FS(fsys))))
// API
r.Route("/api", func(r chi.Router) {
r.Post("/meetings", createMeeting)
r.Get("/meetings", getMeetings)
r.Post("/register/{meetingID}", registerAttendee) // Trocado de "registerParticipant" para "registerAttendee"
r.Get("/meetings/{meetingID}", getMeeting)
})
port := os.Getenv("PORT")
if port == "" {
port = "8000" // Porta padrão se não for encontrada porta no ENV
}
fmt.Println("Server running on port " + port)
log.Fatal(http.ListenAndServe(":"+port, r))
}
func createMeeting(w http.ResponseWriter, r *http.Request) {
var meeting Meeting
if err := json.NewDecoder(r.Body).Decode(&meeting); err != nil {
http.Error(w, "Invalid request", http.StatusBadRequest)
return
}
meeting.ID = uuid.New().String()
meeting.Attendees = []string{} // Trocado de "Participants" para "Attendees"
meetingsMutex.Lock()
meetings[meeting.ID] = &meeting
meetingsMutex.Unlock()
json.NewEncoder(w).Encode(meeting)
}
func registerAttendee(w http.ResponseWriter, r *http.Request) { // Trocado de "registerParticipant" para "registerAttendee"
meetingID := chi.URLParam(r, "meetingID")
name := r.URL.Query().Get("name")
if name == "" {
http.Error(w, "Name is required", http.StatusBadRequest)
return
}
meetingsMutex.Lock()
meeting, exists := meetings[meetingID]
if !exists {
meetingsMutex.Unlock()
http.Error(w, "Meeting not found", http.StatusNotFound)
return
}
meeting.Attendees = append(meeting.Attendees, name) // Trocado de "Participants" para "Attendees"
meetingsMutex.Unlock()
json.NewEncoder(w).Encode(meeting)
}
func getMeeting(w http.ResponseWriter, r *http.Request) {
meetingID := chi.URLParam(r, "meetingID")
meetingsMutex.Lock()
meeting, exists := meetings[meetingID]
meetingsMutex.Unlock()
if !exists {
http.Error(w, "Meeting not found", http.StatusNotFound)
return
}
json.NewEncoder(w).Encode(meeting)
}
func getMeetings(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(meetings)
}