about summary refs log tree commit diff
path: root/http.go
diff options
context:
space:
mode:
Diffstat (limited to 'http.go')
-rw-r--r--http.go42
1 files changed, 36 insertions, 6 deletions
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/<category name> 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)