1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/spacex/client.go
2020-01-06 23:21:44 -08:00

51 lines
1.0 KiB
Go

package spacex
import (
"github.com/wtfutil/wtf/utils"
"net/http"
)
const (
spacexLaunchAPI = "https://api.spacexdata.com/v3/launches/next"
)
type Launch struct {
FlightNumber int `json:"flight_number"`
MissionName string `json:"mission_name"`
LaunchDate int64 `json:"launch_date_unix"`
IsTentative bool `json:"tentative"`
Rocket Rocket `json:"rocket"`
LaunchSite LaunchSite `json:"launch_site"`
Links Links `json:"links"`
Details string `json:"details"`
}
type LaunchSite struct {
Name string `json:"site_name_long"`
}
type Rocket struct {
Name string `json:"rocket_name"`
}
type Links struct {
RedditLink string `json:"reddit_campaign"`
YouTubeLink string `json:"video_link"`
}
func NextLaunch() (*Launch, error) {
resp, err := http.Get(spacexLaunchAPI)
if err != nil {
return nil, err
}
defer func() { _ = resp.Body.Close() }()
var data Launch
err = utils.ParseJSON(&data, resp.Body)
if err != nil {
return nil, err
}
return &data, nil
}