github.com/muxinc/mux-go@v1.1.1/examples/video/live-streams/exercise-live-streams.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	muxgo "github.com/muxinc/mux-go"
     8  	"github.com/muxinc/mux-go/examples/common"
     9  )
    10  
    11  // Exercises all live stream operations:
    12  //   create-live-stream
    13  //   list-live-streams
    14  //   get-live-stream
    15  //   delete-live-stream
    16  //   create-live-stream-playback-id
    17  //   delete-live-stream-playback-id
    18  //   reset-stream-key
    19  //   signal-live-stream-complete
    20  //   create-live-stream-simulcast-target
    21  //   get-live-stream-simulcast-target
    22  //   delete-live-stream-simulcast-target
    23  
    24  func main() {
    25  
    26  	// API Client Initialization
    27  	client := muxgo.NewAPIClient(
    28  		muxgo.NewConfiguration(
    29  			muxgo.WithBasicAuth(os.Getenv("MUX_TOKEN_ID"), os.Getenv("MUX_TOKEN_SECRET")),
    30  		))
    31  
    32  		// ========== create-live-stream ==========
    33  		car := muxgo.CreateAssetRequest{PlaybackPolicy: []muxgo.PlaybackPolicy{muxgo.PUBLIC}}
    34  		csr := muxgo.CreateLiveStreamRequest{NewAssetSettings: car, PlaybackPolicy: []muxgo.PlaybackPolicy{muxgo.PUBLIC}}
    35  		s, err := client.LiveStreamsApi.CreateLiveStream(csr)
    36  		common.AssertNoError(err)
    37  		common.AssertNotNil(s.Data)
    38  		fmt.Println("create-live-stream OK ✅")
    39  		
    40  		// ========== list-live-streams ==========
    41  		ss, err := client.LiveStreamsApi.ListLiveStreams()
    42  		common.AssertNoError(err)
    43  		common.AssertNotNil(ss.Data)
    44  		common.AssertStringEqualsValue(s.Data.Id, ss.Data[0].Id)
    45  		fmt.Println("list-live-streams OK ✅")
    46  
    47  		// ========== get-live-stream ==========
    48  		gs, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id)
    49  		common.AssertNoError(err)
    50  		common.AssertNotNil(gs.Data)
    51  		common.AssertStringEqualsValue(s.Data.Id, gs.Data.Id)
    52  		fmt.Println("get-live-stream OK ✅")
    53  
    54  		// ========== get-asset-or-livestream-id =========
    55  		playbackId := s.Data.PlaybackIds[0].Id
    56  		pbResp, err := client.PlaybackIDApi.GetAssetOrLivestreamId(playbackId)
    57  		common.AssertNoError(err)
    58  		common.AssertNotNil(pbResp.Data)
    59  		common.AssertStringEqualsValue(pbResp.Data.Object.Id, s.Data.Id)
    60  		common.AssertStringEqualsValue(pbResp.Data.Object.Type, "live_stream")
    61  		fmt.Println("get-asset-or-livestream-id OK ✅")
    62  
    63  		// ========== create-live-stream-simulcast-target ==========
    64  		cst := muxgo.CreateSimulcastTargetRequest{Passthrough: "foo", StreamKey: "bar", Url: "rtmp://this-is-a.test"}
    65  		nst, err := client.LiveStreamsApi.CreateLiveStreamSimulcastTarget(s.Data.Id, cst)
    66  		common.AssertNoError(err)
    67  		common.AssertNotNil(nst.Data)
    68  		fmt.Println("create-live-stream-simulcast-target OK ✅")
    69  
    70  		// ========== get-live-stream-simulcast-target ==========
    71  		st, err := client.LiveStreamsApi.GetLiveStreamSimulcastTarget(s.Data.Id, nst.Data.Id)
    72  		common.AssertNoError(err)
    73  		common.AssertNotNil(st.Data)
    74  		common.AssertStringEqualsValue(nst.Data.Id, st.Data.Id)
    75  		fmt.Println("get-live-stream-simulcast-target OK ✅")
    76  
    77  		// ========== delete-live-stream-simulcast-target ==========
    78  		err = client.LiveStreamsApi.DeleteLiveStreamSimulcastTarget(s.Data.Id, nst.Data.Id)
    79  		common.AssertNoError(err)
    80  		// Check it actually got deleted
    81  		snost, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id)
    82  		common.AssertNoError(err)
    83  		common.AssertNotNil(snost.Data)
    84  		common.AssertNil(snost.Data.SimulcastTargets)
    85  		fmt.Println("delete-live-stream-simulcast-target OK ✅")
    86  		
    87  		// ========== create-live-stream-playback-id ==========
    88  		cpbidr := muxgo.CreatePlaybackIdRequest{Policy: muxgo.SIGNED}
    89  		cpbids, err := client.LiveStreamsApi.CreateLiveStreamPlaybackId(s.Data.Id, cpbidr)
    90  		common.AssertNoError(err)
    91  		common.AssertNotNil(cpbids.Data)
    92  		common.AssertStringEqualsValue(string(cpbids.Data.Policy), "signed")
    93  		fmt.Println("create-live-stream-playback-id OK ✅")
    94  
    95  		// ========== delete-live-stream-playback-id ==========
    96  		err = client.LiveStreamsApi.DeleteLiveStreamPlaybackId(s.Data.Id, cpbids.Data.Id)
    97  		common.AssertNoError(err)
    98  		s1pbid, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id)
    99  		common.AssertNoError(err)
   100  		common.AssertNotNil(s1pbid.Data)
   101  		common.AssertStringEqualsValue(string(s1pbid.Data.PlaybackIds[0].Policy), "public")
   102  		fmt.Println("delete-live-stream-playback-id OK ✅")
   103  
   104  		// ========== reset-stream-key ==========
   105  		sk, err := client.LiveStreamsApi.ResetStreamKey(s.Data.Id)
   106  		common.AssertNoError(err)
   107  		common.AssertNotNil(sk.Data)
   108  		if s.Data.StreamKey == sk.Data.StreamKey {
   109  			fmt.Println("Stream Key didn't change on stream key reset.")
   110  			os.Exit(255)
   111  		}
   112  		fmt.Println("reset-stream-key OK ✅")
   113  
   114  		// ========== signal-live-stream-complete ==========
   115  		_, err = client.LiveStreamsApi.SignalLiveStreamComplete(s.Data.Id)
   116  		common.AssertNoError(err)
   117  		fmt.Println("signal-live-stream-complete OK ✅")
   118  
   119  
   120  		// ========== disable-live-stream ==========
   121  		_, err = client.LiveStreamsApi.DisableLiveStream(s.Data.Id)
   122  		common.AssertNoError(err)
   123  		dls, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id)
   124  		common.AssertStringEqualsValue(dls.Data.Status, "disabled")
   125  		fmt.Println("disable-live-stream OK ✅")
   126  
   127  		// ========== enable-live-stream ==========
   128  		_, err = client.LiveStreamsApi.EnableLiveStream(s.Data.Id)
   129  		common.AssertNoError(err)
   130  		els, err := client.LiveStreamsApi.GetLiveStream(s.Data.Id)
   131  		common.AssertStringEqualsValue(els.Data.Status, "idle")
   132  		fmt.Println("enable-live-stream OK ✅")
   133  
   134  		// ========== delete-live-stream ==========
   135  		err = client.LiveStreamsApi.DeleteLiveStream(s.Data.Id)
   136  		common.AssertNoError(err)
   137  		_, err = client.LiveStreamsApi.GetLiveStream(s.Data.Id)
   138  		common.AssertNotNil(err)
   139  		fmt.Println("delete-live-stream OK ✅")
   140  		
   141  }