From 6421b22d40d8dd98f11f4921e3fb75dbcc3afd4b Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Fri, 28 Oct 2022 22:46:01 +0200 Subject: [PATCH] filter and sort results --- eco2mix.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/eco2mix.go b/eco2mix.go index 4eea960..08247af 100644 --- a/eco2mix.go +++ b/eco2mix.go @@ -5,6 +5,8 @@ import ( "fmt" "io/ioutil" "net/http" + "net/url" + "time" ) type Eco2mixClient struct { @@ -14,7 +16,7 @@ type Eco2mixClient struct { func NewEco2mixClient(baseUrl string, client *http.Client) *Eco2mixClient { if baseUrl == "" { - baseUrl = ECO2MIX_NATIONAL_REALTIME_BASEURL + baseUrl = OPENDATASOFT_API_BASEURL } if client == nil { @@ -30,7 +32,17 @@ func NewEco2mixClient(baseUrl string, client *http.Client) *Eco2mixClient { } func (client *Eco2mixClient) FetchNationalRealTimeData(maxResults int) ([]NationalRealTimeFields, error) { - resp, err := client.httpClient.Get(fmt.Sprintf(ECO2MIX_NATIONAL_REALTIME_PATH, client.BaseUrl, maxResults)) + params := url.Values{} + params.Add("dataset", "eco2mix-national-tr") + params.Add("facet", "nature") + params.Add("facet", "date_heure") + params.Add("start", "0") + params.Add("rows", fmt.Sprintf("%d", maxResults)) + params.Add("sort", "date_heure") + params.Add("q", fmt.Sprintf("date_heure:[%s TO #now()] AND NOT #null(taux_co2)", time.Now().Format("2006-01-02"))) + queryString := params.Encode() + + resp, err := client.httpClient.Get(fmt.Sprintf(OPENDATASOFT_API_PATH, client.BaseUrl, queryString)) if err != nil { return nil, err } @@ -55,8 +67,8 @@ func (client *Eco2mixClient) FetchNationalRealTimeData(maxResults int) ([]Nation } const ( - ECO2MIX_NATIONAL_REALTIME_PATH = `%s/api/records/1.0/search/?dataset=eco2mix-national-tr&q=&facet=nature&facet=date_heure&start=0&rows=%d` - ECO2MIX_NATIONAL_REALTIME_BASEURL = `https://odre.opendatasoft.com` + OPENDATASOFT_API_PATH = `%s/api/records/1.0/search/?%s` + OPENDATASOFT_API_BASEURL = `https://odre.opendatasoft.com` ) // Ce jeu de données, rafraîchi une fois par heure, présente des données