-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
40 lines (33 loc) · 1.02 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
package main
import (
"encoding/json"
"log"
"net/http"
"os"
)
import "github.com/lucasmagnum/brazilian_cities_api/cities"
func main() {
citiesInputValues := cities.LoadCitiesFromJSONFile()
responseCities := cities.BuildOutputCities(citiesInputValues)
allCitiesJSON, _ := json.Marshal(responseCities)
http.HandleFunc("/cities", func(writer http.ResponseWriter, request *http.Request) {
var jsonResponse []byte
searchParameters, _ := request.URL.Query()["q"]
if len(searchParameters) > 0 {
filteredCities := cities.FilterCities(searchParameters[0], responseCities)
jsonResponse = filteredCities
} else {
jsonResponse = allCitiesJSON
}
writer.Header().Set("access-control-allow-origin", "*")
writer.Header().Set("access-control-allow-methods", "GET,OPTIONS")
writer.Header().Set("content-type", "application/json")
writer.Write(jsonResponse)
})
port := os.Getenv("PORT")
if port == "" {
port = "8009"
}
log.Printf("Server running on Port :%s \n", port)
log.Fatal(http.ListenAndServe(":"+port, nil))
}