diff --git a/handlers/population.go b/handlers/population.go new file mode 100644 index 0000000000000000000000000000000000000000..ba9bd61792f32a76d455ece956f85d2fa89d3019 --- /dev/null +++ b/handlers/population.go @@ -0,0 +1,41 @@ +package handlers + +import ( + "CountryAPI/utils" + "encoding/json" + "fmt" + "net/http" + "strconv" + "strings" +) + +func HandlePopulation(rw http.ResponseWriter, r *http.Request) { + pathParts := strings.Split(r.URL.Path, "/") + countryCode := pathParts[len(pathParts)-1] + startYear, endYear := 0, 0 + myQuery := r.URL.Query() + limitString := myQuery.Get("limit") + if limitString != "" { + //extracting the years and splitting them + years := strings.Split(limitString, "-") + var err1, err2 error + startYear, err1 = strconv.Atoi(years[0]) // converting the years into ints + endYear, err2 = strconv.Atoi(years[1]) + if err1 != nil || err2 != nil { + http.Error(rw, "Seems to be a invalid year range or format", http.StatusBadRequest) + + } + } + + populationData, err := utils.FetchPopulationData(countryCode, startYear, endYear) + if err != nil { + http.Error(rw, fmt.Sprintf("Error fetching population data: %v", err), http.StatusInternalServerError) + return + } + + rw.Header().Set("Content-Type", "application/json") + rw.WriteHeader(http.StatusOK) + + json.NewEncoder(rw).Encode(populationData) + +}