option.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package client
  2. import "github.com/open-dingtalk/dingtalk-stream-sdk-go/handler"
  3. /**
  4. * @Author linya.jj
  5. * @Date 2023/3/22 14:48
  6. */
  7. type ClientOption func(*StreamClient)
  8. func WithAutoReconnect(autoReconnect bool) ClientOption {
  9. return func(c *StreamClient) {
  10. c.AutoReconnect = autoReconnect
  11. }
  12. }
  13. func WithAppCredential(cred *AppCredentialConfig) ClientOption {
  14. return func(c *StreamClient) {
  15. c.AppCredential = cred
  16. }
  17. }
  18. func WithSubscription(stype, stopic string, frameHandler handler.IFrameHandler) ClientOption {
  19. return func(c *StreamClient) {
  20. c.RegisterRouter(stype, stopic, frameHandler)
  21. }
  22. }
  23. func WithUserAgent(ua *UserAgentConfig) ClientOption {
  24. return func(c *StreamClient) {
  25. if ua.Valid() != nil {
  26. ua = NewDingtalkGoSDKUserAgent()
  27. }
  28. c.UserAgent = ua
  29. }
  30. }
  31. func WithExtras(extras map[string]string) ClientOption {
  32. return func(c *StreamClient) {
  33. c.extras = extras
  34. }
  35. }
  36. func WithOpenApiHost(host string) ClientOption {
  37. return func(c *StreamClient) {
  38. c.openApiHost = host
  39. }
  40. }
  41. func WithProxy(proxy string) ClientOption {
  42. return func(c *StreamClient) {
  43. c.proxy = proxy
  44. }
  45. }