diff options
Diffstat (limited to 'http.go')
-rw-r--r-- | http.go | 79 |
1 files changed, 79 insertions, 0 deletions
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"]) + } + +} |