mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2026-04-18 07:03:37 +00:00
first commit
This commit is contained in:
82
stream.go
Normal file
82
stream.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// StreamCmd handles the streaming commands.
|
||||
type StreamCmd struct {
|
||||
Start StreamStartCmd `cmd:"" help:"Start streaming." aliases:"s"`
|
||||
Stop StreamStopCmd `cmd:"" help:"Stop streaming." aliases:"st"`
|
||||
Toggle StreamToggleCmd `cmd:"" help:"Toggle streaming." aliases:"tg"`
|
||||
Status StreamStatusCmd `cmd:"" help:"Get streaming status." aliases:"ss"`
|
||||
}
|
||||
|
||||
// StreamStartCmd starts the stream.
|
||||
type StreamStartCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to start streaming.
|
||||
func (cmd *StreamStartCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Stream.StartStream()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// StreamStopCmd stops the stream.
|
||||
type StreamStopCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to stop streaming.
|
||||
func (cmd *StreamStopCmd) Run(ctx *context) error {
|
||||
_, err := ctx.Client.Stream.StopStream()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// StreamToggleCmd toggles the stream status.
|
||||
type StreamToggleCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to toggle streaming.
|
||||
func (cmd *StreamToggleCmd) Run(ctx *context) error {
|
||||
status, err := ctx.Client.Stream.GetStreamStatus()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if status.OutputActive {
|
||||
_, err = ctx.Client.Stream.StopStream()
|
||||
fmt.Fprintf(ctx.Out, "Stopping stream...\n")
|
||||
} else {
|
||||
_, err = ctx.Client.Stream.StartStream()
|
||||
fmt.Fprintf(ctx.Out, "Starting stream...\n")
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// StreamStatusCmd retrieves the status of the stream.
|
||||
type StreamStatusCmd struct{} // size = 0x0
|
||||
|
||||
// Run executes the command to get the stream status.
|
||||
func (cmd *StreamStatusCmd) Run(ctx *context) error {
|
||||
status, err := ctx.Client.Stream.GetStreamStatus()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Fprintf(ctx.Out, "Output active: %v\n", status.OutputActive)
|
||||
if status.OutputActive {
|
||||
seconds := status.OutputDuration / 1000
|
||||
minutes := int(seconds / 60)
|
||||
secondsInt := int(seconds) % 60
|
||||
if minutes > 0 {
|
||||
fmt.Fprintf(ctx.Out, "Output duration: %d minutes and %d seconds\n", minutes, secondsInt)
|
||||
} else {
|
||||
fmt.Fprintf(ctx.Out, "Output duration: %d seconds\n", secondsInt)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user