From bf6a7a9bec86b59bce753f51fee6be67e231017b Mon Sep 17 00:00:00 2001 From: Emile Date: Sat, 14 Sep 2019 23:08:14 +0200 Subject: working --- http.go | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) (limited to 'http.go') diff --git a/http.go b/http.go index 7d551ae..84dc503 100644 --- a/http.go +++ b/http.go @@ -25,17 +25,22 @@ func dumpallHandler(w http.ResponseWriter, r *http.Request) { // the result to the categories slice content, err := ioutil.ReadFile("categories.txt") if err != nil { - log.Printf("%s", "could not read categories.txt file!") + log.Printf("%s\n", "could not read categories.txt file!") } lines := strings.Split(string(content), "\n") for _, line := range lines { - categories = append(categories, line) + if line != "" { + categories = append(categories, line) + } } // download all the categories to the data/ directory for _, category := range categories { + fmt.Fprintf(w, "downloading %s... ", category) + log.Printf("downloading %s... ", category) downloadCategory(category) + fmt.Fprintf(w, "done.\n") } log.Println("[+] Done dumping all TLEs") @@ -46,20 +51,45 @@ func getHandler(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) // read the TLEs from the categories file + // TODO: Handle caching + // - dump all if not present + // - if old, fetch from celestrakc //content, err := ioutil.ReadFile("categories.txt") //if err != nil { // log.Println("Could note read categories.txt") //} + // open the file containing the data for the individual station + categoryPath := fmt.Sprintf("data/%s.txt", vars["station"]) + content, err := ioutil.ReadFile(categoryPath) + if err != nil { + log.Printf("Could not open %s", categoryPath) + } + + lines := strings.Split(string(content), "\n") + + // iterate over all lines searching for the satellite + var j int + for i, line := range lines { + if strings.Contains(line, vars["name"]) { + j = i + break + } + } + + RawTLE := strings.Join(lines[j:j+3], "\n") + + /* + RawTLE := `ISS (ZARYA) + 1 25544U 98067A 19229.39083552 .00000228 00000-0 11917-4 0 9993 + 2 25544 51.6447 57.6210 0007373 294.0868 138.8050 15.50381554184754` + */ + // handle the response according to the query parameter "format" // if ?format=json is given, return if r.URL.Query().Get("format") == "json" { w.Header().Set("Content-Type", "application/json") - RawTLE := `ISS (ZARYA) -1 25544U 98067A 19229.39083552 .00000228 00000-0 11917-4 0 9993 -2 25544 51.6447 57.6210 0007373 294.0868 138.8050 15.50381554184754` - JSONTLE, err := tle.NewTLE(RawTLE) if err != nil { fmt.Println(err) -- cgit 1.4.1