about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--funcs.go41
-rw-r--r--http.go79
-rw-r--r--server.go102
3 files changed, 120 insertions, 102 deletions
diff --git a/funcs.go b/funcs.go
new file mode 100644
index 0000000..5ab913c
--- /dev/null
+++ b/funcs.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"os"
+)
+
+// downloadCategory downloads the given category from celestrack
+func downloadCategory(categoryName string) {
+
+	// define where to download the TLEs from
+	base := "https://celestrak.com/NORAD/elements/"
+	downloadURL := fmt.Sprintf("%s%s.txt", base, categoryName)
+
+	// define the HTTP GET request and make it
+	resp, err := http.Get(downloadURL)
+	if err != nil {
+		log.Printf("Could not download %s", categoryName)
+	}
+	defer resp.Body.Close()
+
+	// read the respose from the GET request
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		log.Printf("Could not read the category %s", categoryName)
+	}
+
+	// write the response to the corresponding file
+	filename := fmt.Sprintf("data/%s.txt", categoryName)
+	f, err := os.Create(filename) // creating the file
+	if err != nil {
+		fmt.Printf("Could not create file data/%s.txt", categoryName)
+	}
+	_, err = f.WriteString(string(body)) // writing the TLE to the file
+	if err != nil {
+		fmt.Printf("Could not write to file data/%s.txt", categoryName)
+	}
+}
diff --git a/http.go b/http.go
new file mode 100644
index 0000000..ca3c413
--- /dev/null
+++ b/http.go
@@ -0,0 +1,79 @@
+package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"strings"
+
+	TLE "git.darknebu.la/Satellite/TLE"
+	"github.com/gorilla/mux"
+)
+
+// indexHandler displays an index page
+func indexHandler(w http.ResponseWriter, r *http.Request) {
+	fmt.Fprintf(w, "%s", "<h1>Hello World</h1>")
+}
+
+// dumpallHandler dumps all categories
+func dumpallHandler(w http.ResponseWriter, r *http.Request) {
+	log.Println("[ ] Dumping all TLEs")
+
+	// read the name of the categories from the categories.txt file and write
+	// the result to the categories slice
+	content, err := ioutil.ReadFile("categories.txt")
+	if err != nil {
+		log.Printf("%s", "could not read categories.txt file!")
+	}
+	lines := strings.Split(string(content), "\n")
+
+	for _, line := range lines {
+		categories = append(categories, line)
+	}
+
+	// download all the categories to the data/<category name> directory
+	for _, category := range categories {
+		downloadCategory(category)
+	}
+
+	log.Println("[+] Done dumping all TLEs")
+}
+
+// get Handler returns the specified TLE
+func getHandler(w http.ResponseWriter, r *http.Request) {
+	vars := mux.Vars(r)
+
+	// read the TLEs from the categories file
+	//content, err := ioutil.ReadFile("categories.txt")
+	//if err != nil {
+	//	log.Println("Could note read categories.txt")
+	//}
+
+	// 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)
+		}
+
+		// convert the TLE to json
+		b, err := json.MarshalIndent(JSONTLE, "", " ")
+		if err != nil {
+			fmt.Println("error: ", err)
+		}
+		fmt.Fprintf(w, string(b))
+		//fmt.Fprintf(w, "{\"response\": \"Getting the TLE for %s/%s as json\"}", vars["station"], vars["name"])
+	} else {
+		fmt.Fprintf(w, "Getting the TLE for %s/%s raw", vars["station"], vars["name"])
+	}
+
+}
diff --git a/server.go b/server.go
index b1faa8b..69d528b 100644
--- a/server.go
+++ b/server.go
@@ -1,17 +1,12 @@
 package main
 
 import (
-	"encoding/json"
 	"flag"
 	"fmt"
-	"io/ioutil"
 	"log"
-	"os"
-	"strings"
 
 	"net/http"
 
-	TLE "git.darknebu.la/Satellite/TLE"
 	"github.com/gorilla/mux"
 )
 
@@ -35,100 +30,3 @@ func initFlags() {
 	flag.IntVar(&port, "p", 8080, "the port the server should listen on")
 	flag.Parse()
 }
-
-func indexHandler(w http.ResponseWriter, r *http.Request) {
-	fmt.Fprintf(w, "%s", "<h1>Hello World</h1>")
-}
-
-// dumpallHandler dumps all categories
-func dumpallHandler(w http.ResponseWriter, r *http.Request) {
-	log.Println("[ ] Dumping all TLEs")
-
-	// read the name of the categories from the categories.txt file and write
-	// the result to the categories slice
-	content, err := ioutil.ReadFile("categories.txt")
-	if err != nil {
-		log.Printf("%s", "could not read categories.txt file!")
-	}
-	lines := strings.Split(string(content), "\n")
-
-	for _, line := range lines {
-		categories = append(categories, line)
-	}
-
-	// download all the categories to the data/<category name> directory
-	for _, category := range categories {
-		downloadCategory(category)
-	}
-
-	log.Println("[+] Done dumping all TLEs")
-}
-
-// downloadCategory downloads the given category from celestrack
-func downloadCategory(categoryName string) {
-
-	// define where to download the TLEs from
-	base := "https://celestrak.com/NORAD/elements/"
-	downloadURL := fmt.Sprintf("%s%s.txt", base, categoryName)
-
-	// define the HTTP GET request and make it
-	resp, err := http.Get(downloadURL)
-	if err != nil {
-		log.Printf("Could not download %s", categoryName)
-	}
-	defer resp.Body.Close()
-
-	// read the respose from the GET request
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		log.Printf("Could not read the category %s", categoryName)
-	}
-
-	// write the response to the corresponding file
-	filename := fmt.Sprintf("data/%s.txt", categoryName)
-	f, err := os.Create(filename) // creating the file
-	if err != nil {
-		fmt.Printf("Could not create file data/%s.txt", categoryName)
-	}
-	_, err = f.WriteString(string(body)) // writing the TLE to the file
-	if err != nil {
-		fmt.Printf("Could not write to file data/%s.txt", categoryName)
-	}
-}
-
-// get Handler returns the specified TLE
-func getHandler(w http.ResponseWriter, r *http.Request) {
-	vars := mux.Vars(r)
-
-	// read the TLEs from the categories file
-	//content, err := ioutil.ReadFile("categories.txt")
-	//if err != nil {
-	//	log.Println("Could note read categories.txt")
-	//}
-
-	// 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)
-		}
-
-		// convert the TLE to json
-		b, err := json.MarshalIndent(JSONTLE, "", " ")
-		if err != nil {
-			fmt.Println("error: ", err)
-		}
-		fmt.Fprintf(w, string(b))
-		//fmt.Fprintf(w, "{\"response\": \"Getting the TLE for %s/%s as json\"}", vars["station"], vars["name"])
-	} else {
-		fmt.Fprintf(w, "Getting the TLE for %s/%s raw", vars["station"], vars["name"])
-	}
-
-}