2024-09-23 08:52:53 -07:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2024-09-23 10:27:21 -07:00
|
|
|
"encoding/json"
|
2024-09-23 08:52:53 -07:00
|
|
|
"fmt"
|
2024-09-23 10:27:21 -07:00
|
|
|
"github.com/joho/godotenv"
|
|
|
|
"net/http"
|
2024-09-23 08:52:53 -07:00
|
|
|
)
|
|
|
|
|
2024-09-23 10:27:21 -07:00
|
|
|
type ShorterRequest struct {
|
|
|
|
Url string
|
|
|
|
}
|
2024-09-23 08:52:53 -07:00
|
|
|
|
|
|
|
func main() {
|
2024-09-23 10:27:21 -07:00
|
|
|
envError := godotenv.Load()
|
|
|
|
if envError != nil {
|
|
|
|
panic("Error loading .env file")
|
2024-09-23 08:52:53 -07:00
|
|
|
}
|
|
|
|
|
2024-09-23 10:27:21 -07:00
|
|
|
router := http.NewServeMux()
|
|
|
|
|
|
|
|
router.HandleFunc("GET /", func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
w.Write([]byte("Hello World"))
|
|
|
|
})
|
|
|
|
|
|
|
|
router.HandleFunc("POST /shorten", func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
requestData := ShorterRequest{}
|
|
|
|
err := json.NewDecoder(r.Body).Decode(&requestData)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
w.Write([]byte(requestData.Url))
|
|
|
|
})
|
|
|
|
|
|
|
|
server := http.Server{Addr: ":3000", Handler: router}
|
|
|
|
|
|
|
|
fmt.Println("URL Shortener is running on :3000")
|
|
|
|
|
|
|
|
err := server.ListenAndServe()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|