From 3c4f51e94d7e55ee4e5a82cea15f960a622e40b3 Mon Sep 17 00:00:00 2001 From: filifa Date: Tue, 23 Jul 2024 19:04:57 -0500 Subject: [PATCH] add content subcommand --- cmd/content.go | 61 +++++++++++++++++++++++++++++++++ cmd/internal/statsapi/client.go | 9 +++++ 2 files changed, 70 insertions(+) create mode 100644 cmd/content.go diff --git a/cmd/content.go b/cmd/content.go new file mode 100644 index 0000000..793f9d8 --- /dev/null +++ b/cmd/content.go @@ -0,0 +1,61 @@ +/* +Copyright © 2024 filifa + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +package cmd + +import ( + "fmt" + "log" + "strconv" + + "github.com/spf13/cobra" + "scm.dairydemon.net/filifa/mlblive/cmd/internal/statsapi" +) + +func content(cmd *cobra.Command, args []string) { + pkStr := strconv.Itoa(gamePk) + + contentResp, err := statsapi.RequestContent(pkStr) + if err != nil { + log.Fatal(err) + } + + fmt.Println(string(contentResp)) +} + +// contentCmd represents the content command +var contentCmd = &cobra.Command{ + Use: "content -g [gamePk]", + Short: "Fetch game highlights", + Long: `Fetch game highlights`, + Args: cobra.NoArgs, + Run: content, +} + +func init() { + rootCmd.AddCommand(contentCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // contentCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + contentCmd.Flags().IntVarP(&gamePk, "gamePk", "g", 0, "game PK") + contentCmd.MarkFlagRequired("gamePk") +} diff --git a/cmd/internal/statsapi/client.go b/cmd/internal/statsapi/client.go index 3b8b771..b57dcc0 100644 --- a/cmd/internal/statsapi/client.go +++ b/cmd/internal/statsapi/client.go @@ -38,6 +38,10 @@ func RequestDiffPatch(gamePk, startTimecode, pushUpdateId string) (DiffPatchResp return DefaultClient.RequestDiffPatch(gamePk, startTimecode, pushUpdateId) } +func RequestContent(gamePk string) ([]byte, error) { + return DefaultClient.RequestContent(gamePk) +} + type DiffPatchResponse []byte type Client struct { @@ -98,6 +102,11 @@ func (c *Client) RequestDiffPatch(gamePk, startTimecode, pushUpdateId string) (D return c.get(&endpoint) } +func (c *Client) RequestContent(gamePk string) ([]byte, error) { + endpoint := url.URL{Path: "api/v1/game/" + gamePk + "/content"} + return c.get(&endpoint) +} + func (c *Client) get(endpoint *url.URL) ([]byte, error) { url := c.baseURL.ResolveReference(endpoint)