about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCodeCarefully <CodeCarefully@users.noreply.github.com>2020-05-28 12:00:21 +0300
committerGitHub <noreply@github.com>2020-05-28 12:00:21 +0300
commita2e5a922ae60fa4a3db7319bc3d01385966fcb34 (patch)
tree98cef0b1e934d06c5e5dc45caa2a45b3a02b4303
parent07b0b06efc84eb1874b9e5a54061424233afd09f (diff)
parent54db84abcc522149dd27d51f89dc590836abee9c (diff)
downloadmyCovidCLI-a2e5a922ae60fa4a3db7319bc3d01385966fcb34.tar.gz
Merge pull request #1 from andinus/andinus-main
Print error to stderr
Thanks!
-rw-r--r--myCovidCLI.go262
1 files changed, 129 insertions, 133 deletions
diff --git a/myCovidCLI.go b/myCovidCLI.go
index 0e9b790..fbd06db 100644
--- a/myCovidCLI.go
+++ b/myCovidCLI.go
@@ -1,138 +1,134 @@
 package main
+
 import (
-   "myCOVIDcli/renderfloat"
-   "encoding/csv"
-   "fmt"
-   "github.com/olekukonko/tablewriter"
-   "io"
-   "io/ioutil"
-   "log"
-   "net/http"
-   "os"
-   "strconv"
-   "strings"
-   "time"
+	"encoding/csv"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"os"
+	"strconv"
+	"strings"
+	"time"
+
+	"github.com/olekukonko/tablewriter"
+	"myCOVIDcli/renderfloat"
 )
 
-
 func main() {
-
-   maxloops :=3
-   currentTime := time.Now() //get current time/date
-   bodydata := ""
-   for i := 0; i < maxloops; i++ {
-
-      strcurrentdate := currentTime.Format("01-02-2006") //reformat for URL format
-      COVIDurl := "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/"+strcurrentdate+".csv"
-      //fmt.Println(COVIDurl)
-      resp, err := http.Get(COVIDurl)
-      if err != nil {
-         panic(err)
-      }
-      defer resp.Body.Close()
-      //fmt.Println(resp.StatusCode)
-      if resp.StatusCode == 200 {
-         body, err := ioutil.ReadAll(resp.Body)
-         if err != nil {
-            log.Fatalln(err)
-         }
-         bodydata = string(body)
-         fmt.Println("Last Updated: " + strcurrentdate)
-         break
-      }
-
-      currentTime = currentTime.AddDate(0, 0, -1) //go to yesterday, this source updates only daily
-   }
-
-
-   //fmt.Println(bodydata)
-   reader := csv.NewReader(strings.NewReader(bodydata))
-
-   //zero out all variables
-   usconfirmed := 0
-   usdeaths := 0
-   usrecovered := 0
-   region := ""
-   state := ""
-   confirmed := ""
-   deaths:=""
-   recovered:=""
-   data := [][]string{}
-
-   for {
-      line, error := reader.Read() //read in a line
-      if error == io.EOF {
-         break
-      } else if error != nil {
-         log.Fatal(error)
-      }
-
-      region = line[3]
-      state = line[1]
-      confirmed = line[7]
-      deaths = line[8]
-      recovered = line[9]
-
-      if region == "US" {
-
-         confirmed, err := strconv.Atoi(line[7]) //convert confirmed to int
-         if err != nil {
-            // handle error
-            fmt.Println(err)
-            os.Exit(2)
-         }
-         deaths, err := strconv.Atoi(line[8]) //convert deaths to int
-         if err != nil {
-            // handle error
-            fmt.Println(err)
-            os.Exit(2)
-         }
-
-         recovered, err := strconv.Atoi(line[9]) //convert recovered to int
-         if err != nil {
-            // handle error
-            fmt.Println(err)
-            os.Exit(2)
-         }
-
-         usconfirmed = usconfirmed + confirmed
-         usdeaths = usdeaths + deaths
-         usrecovered = usrecovered + recovered
-      }
-
-      //create array for table output
-      if state == "New York City" || region == "Israel" || region == "Estonia" {
-         f_confirmed, _ := strconv.ParseFloat(confirmed, 8)
-         f_deaths, _ := strconv.ParseFloat(deaths, 8)
-         f_recovered, _ := strconv.ParseFloat(recovered, 8)
-
-
-
-         data = append(data, []string{region, state,
-            renderfloat.RenderFloat("#,###.", f_confirmed),
-            renderfloat.RenderFloat("#,###.", f_deaths),
-            renderfloat.RenderFloat("#,###.", f_recovered),
-            renderfloat.RenderFloat("#,###.", f_confirmed - f_recovered-f_deaths)})
-         //fmt.Println(state + "   Deaths: " + deaths + " Confirmed: " + confirmed )
-      }
-
-   }
-
-
-      f_confirmed, _ := strconv.ParseFloat(strconv.Itoa(usconfirmed), 8)
-      f_deaths, _ := strconv.ParseFloat(strconv.Itoa(usdeaths), 8)
-      f_recovered, _ := strconv.ParseFloat(strconv.Itoa(usdeaths), 8)
-      data = append(data, []string{"US","Total",
-         renderfloat.RenderFloat("#,###.", f_confirmed),
-         renderfloat.RenderFloat("#,###.", f_deaths),
-         renderfloat.RenderFloat("#,###.", f_recovered),
-         renderfloat.RenderFloat("#,###.", f_confirmed - f_recovered-f_deaths)})
-
-   table := tablewriter.NewWriter(os.Stdout)
-   table.SetHeader([]string{"Region","Area", "Confirmed", "Deaths", "Recovered","Still sick"})
-
-   for _, v := range data {
-      table.Append(v)
-   }
-   table.Render() // Send output
-   }
+	maxloops := 3
+	currentTime := time.Now() //get current time/date
+	bodydata := ""
+	for i := 0; i < maxloops; i++ {
+
+		strcurrentdate := currentTime.Format("01-02-2006") //reformat for URL format
+		COVIDurl := "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/" + strcurrentdate + ".csv"
+		//fmt.Println(COVIDurl)
+		resp, err := http.Get(COVIDurl)
+		if err != nil {
+			panic(err)
+		}
+		defer resp.Body.Close()
+		//fmt.Println(resp.StatusCode)
+		if resp.StatusCode == 200 {
+			body, err := ioutil.ReadAll(resp.Body)
+			if err != nil {
+				log.Fatalln(err)
+			}
+			bodydata = string(body)
+			fmt.Println("Last Updated: " + strcurrentdate)
+			break
+		}
+
+		currentTime = currentTime.AddDate(0, 0, -1) //go to yesterday, this source updates only daily
+	}
+
+	//fmt.Println(bodydata)
+	reader := csv.NewReader(strings.NewReader(bodydata))
+
+	//zero out all variables
+	usconfirmed := 0
+	usdeaths := 0
+	usrecovered := 0
+	region := ""
+	state := ""
+	confirmed := ""
+	deaths := ""
+	recovered := ""
+	data := [][]string{}
+
+	for {
+		line, error := reader.Read() //read in a line
+		if error == io.EOF {
+			break
+		} else if error != nil {
+			log.Fatal(error)
+		}
+
+		region = line[3]
+		state = line[1]
+		confirmed = line[7]
+		deaths = line[8]
+		recovered = line[9]
+
+		if region == "US" {
+
+			confirmed, err := strconv.Atoi(line[7]) //convert confirmed to int
+			if err != nil {
+				// handle error
+				fmt.Fprintln(os.Stderr, err)
+				os.Exit(2)
+			}
+			deaths, err := strconv.Atoi(line[8]) //convert deaths to int
+			if err != nil {
+				// handle error
+				fmt.Fprintln(os.Stderr, err)
+				os.Exit(2)
+			}
+
+			recovered, err := strconv.Atoi(line[9]) //convert recovered to int
+			if err != nil {
+				// handle error
+				fmt.Fprintln(os.Stderr, err)
+				os.Exit(2)
+			}
+
+			usconfirmed = usconfirmed + confirmed
+			usdeaths = usdeaths + deaths
+			usrecovered = usrecovered + recovered
+		}
+
+		//create array for table output
+		if state == "New York City" || region == "Israel" || region == "Estonia" {
+			f_confirmed, _ := strconv.ParseFloat(confirmed, 8)
+			f_deaths, _ := strconv.ParseFloat(deaths, 8)
+			f_recovered, _ := strconv.ParseFloat(recovered, 8)
+
+			data = append(data, []string{region, state,
+				renderfloat.RenderFloat("#,###.", f_confirmed),
+				renderfloat.RenderFloat("#,###.", f_deaths),
+				renderfloat.RenderFloat("#,###.", f_recovered),
+				renderfloat.RenderFloat("#,###.", f_confirmed-f_recovered-f_deaths)})
+			//fmt.Println(state + "   Deaths: " + deaths + " Confirmed: " + confirmed )
+		}
+
+	}
+
+	f_confirmed, _ := strconv.ParseFloat(strconv.Itoa(usconfirmed), 8)
+	f_deaths, _ := strconv.ParseFloat(strconv.Itoa(usdeaths), 8)
+	f_recovered, _ := strconv.ParseFloat(strconv.Itoa(usdeaths), 8)
+	data = append(data, []string{"US", "Total",
+		renderfloat.RenderFloat("#,###.", f_confirmed),
+		renderfloat.RenderFloat("#,###.", f_deaths),
+		renderfloat.RenderFloat("#,###.", f_recovered),
+		renderfloat.RenderFloat("#,###.", f_confirmed-f_recovered-f_deaths)})
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetHeader([]string{"Region", "Area", "Confirmed", "Deaths", "Recovered", "Still sick"})
+
+	for _, v := range data {
+		table.Append(v)
+	}
+	table.Render() // Send output
+}