...

Source file src/github.com/launchdarkly/go-server-sdk/v6/testhelpers/ldservices/streaming_service.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/testhelpers/ldservices

     1  package ldservices
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/launchdarkly/go-test-helpers/v3/httphelpers"
     7  )
     8  
     9  const (
    10  	// ServerSideSDKStreamingPath is the expected request path for server-side SDK stream requests.
    11  	ServerSideSDKStreamingPath = "/all"
    12  )
    13  
    14  // ServerSideStreamingServiceHandler creates an HTTP handler to mimic the LaunchDarkly server-side streaming service.
    15  // It uses httphelpers.SSEHandler(), while also enforcing that the request path is ServerSideSDKStreamingPath and
    16  // that the method is GET.
    17  //
    18  // There must always be an initial event, since LaunchDarkly streams always start with a "put".
    19  //
    20  //	initialData := ldservices.NewServerSDKData().Flags(flag1, flag2) // all clients will get this in a "put" event
    21  //	handler, stream := ldservices.ServerSideStreamingHandler(initialData.ToPutEvent())
    22  //	server := httptest.NewServer(handler)
    23  //	stream.Enqueue(httphelpers.SSEEvent{Event: "patch", Data: myPatchData}) // push an update
    24  //	stream.Close() // force any current stream connections to be closed
    25  func ServerSideStreamingServiceHandler(
    26  	initialEvent httphelpers.SSEEvent,
    27  ) (http.Handler, httphelpers.SSEStreamControl) {
    28  	handler, stream := httphelpers.SSEHandler(&initialEvent)
    29  	return httphelpers.HandlerForPath(ServerSideSDKStreamingPath, httphelpers.HandlerForMethod("GET", handler, nil), nil),
    30  		stream
    31  }
    32  

View as plain text