/
covid19.go
95 lines (87 loc) · 2.97 KB
/
covid19.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
package fetch
import (
"encoding/json"
"io"
"strings"
"github.com/openbiox/ligo/stringo"
"github.com/openanno/bget/api/types"
)
const Covid19Host = "https://api.covid19api.com/"
// Covid19 access api.covid19api.com API
func Covid19(endpoints *types.Covid19Endpoints, bapiClis *types.BapiClisT, f func(), of io.Writer) bool {
setLog(bapiClis)
if bapiClis.Format == "" {
bapiClis.Format = "json"
}
netopt := setNetOpt(bapiClis)
url := Covid19Host + setCovid19QuerySuffix(endpoints, bapiClis)
if url == Covid19Host || url == Covid19Host+"?fmt=json" {
return false
}
f()
if endpoints.WebhookRoute != "" {
val := make(map[string]string)
val["URL"] = endpoints.WebhookRoute
postData, _ := json.MarshalIndent(val, "", " ")
PostReq("api.mg-rast.org", url, postData, bapiClis, netopt, of)
} else {
GetReq("api.covid19api.com", url, bapiClis, netopt, of)
}
return true
}
func setCovid19QuerySuffix(endpoints *types.Covid19Endpoints, BapiClis *types.BapiClisT) (suffix string) {
suffixList := []string{}
if endpoints.AllRoute {
suffix = "all"
} else if endpoints.CountriesRoute {
suffix = "countries"
} else if endpoints.CountryDayOneRoute {
suffix = "dayone/country/:country"
} else if endpoints.CountryDayOneTotalRoute {
suffix = "total/dayone/country/:country"
} else if endpoints.CountryRoute {
suffix = "country/:country"
} else if endpoints.CountryStatusDayOneLiveRoute {
suffix = "dayone/country/:country/status/:status/live"
} else if endpoints.CountryStatusDayOneRoute {
suffix = "dayone/country/:country/status/:status"
} else if endpoints.CountryStatusDayOneTotalRoute {
suffix = "total/dayone/country/:country/status/:status"
} else if endpoints.CountryStatusLiveRoute {
suffix = "country/:country/status/:status/live"
} else if endpoints.CountryStatusRoute {
suffix = "country/:country/status/:status"
} else if endpoints.CountryStatusTotalRoute {
suffix = "total/country/:country/status/:status"
} else if endpoints.CountryTotalRoute {
suffix = "total/country/:country"
} else if endpoints.ExportRoute {
suffix = "export"
} else if endpoints.LiveCountryRoute {
suffix = "live/country/:country"
} else if endpoints.LiveCountryStatusAfterDateRoute {
suffix = "live/country/:country/status/:status/date/:date"
} else if endpoints.LiveCountryStatusRoute {
suffix = "live/country/:country/status/:status"
} else if endpoints.SummaryRoute {
suffix = "summary"
} else if endpoints.WebhookRoute != "" {
suffix = "webhook"
}
if strings.Contains(suffix, ":country") {
suffix = stringo.StrReplaceAll(suffix, ":country", endpoints.Country)
}
if strings.Contains(suffix, ":status") {
suffix = stringo.StrReplaceAll(suffix, ":status", endpoints.Status)
}
if strings.Contains(suffix, ":date") {
suffix = stringo.StrReplaceAll(suffix, ":date", endpoints.Date)
}
if BapiClis.Extra != "" {
suffixList = append(suffixList, BapiClis.Extra)
}
if len(suffixList) > 0 {
suffix = suffix + "?" + strings.Join(suffixList, "&")
}
return suffix
}