publish<T> method

Future<MessageStatus?> publish<T>(
  1. T message, {
  2. String channelName = 'default',
  3. PublishOptions? publishOptions,
  4. DeliveryOptions? deliveryOptions,
})

Implementation

Future<MessageStatus?> publish<T>(T message,
    {String channelName = 'default',
    PublishOptions? publishOptions,
    DeliveryOptions? deliveryOptions}) async {
  var messageToPublish = reflector.isCustomClass(message)
      ? reflector.serialize(message)
      : message;

  Map<String, dynamic> parameters = {'message': messageToPublish};

  if (publishOptions?.headers != null) {
    parameters['headers'] = publishOptions!.headers;
  }
  if (publishOptions?.publisherId != null) {
    parameters['publisherId'] = publishOptions!.publisherId;
  }
  if (deliveryOptions?.publishAt != null) {
    parameters['publishAt'] = deliveryOptions!.publishAt;
  }
  if (deliveryOptions?.repeatEvery != null) {
    parameters['repeatEvery'] = deliveryOptions!.repeatEvery;
  }
  if (deliveryOptions?.repeatExpiresAt != null) {
    parameters['repeatExpiresAt'] = deliveryOptions!.repeatExpiresAt;
  }
  if (deliveryOptions?.publishPolicy != null) {
    parameters['publishPolicy'] = deliveryOptions!.publishPolicy;
  }
  if (deliveryOptions?.pushBroadcast != null) {
    parameters['pushBroadcast'] = deliveryOptions!.pushBroadcast;
  }
  if (deliveryOptions?.pushSinglecast != null) {
    parameters['pushSinglecast'] = deliveryOptions!.pushSinglecast;
  }
  if (deliveryOptions?.segmentQuery != null) {
    parameters['segmentQuery'] = deliveryOptions!.segmentQuery;
  }

  return Invoker.post('/messaging/$channelName', parameters);
}