sendMessage function

Future<void> sendMessage(
  1. Logging? log,
  2. String transportName,
  3. BaseClient? client,
  4. String? url,
  5. AccessTokenFactory? accessTokenFactory,
  6. dynamic content,
  7. bool? logMessageContent,
  8. bool? withCredentials,
)

Implementation

Future<void> sendMessage(
    Logging? log,
    String transportName,
    BaseClient? client,
    String? url,
    AccessTokenFactory? accessTokenFactory,
    dynamic content,
    bool? logMessageContent,
    bool? withCredentials) async {
  var headers = <String, String>{};
  if (accessTokenFactory != null) {
    final token = await accessTokenFactory();
    if (token != null) {
      headers = {
        'Authorization': 'Bearer $token',
      };
    }
  }

  final userAgentHeader = getUserAgentHeader();
  headers[userAgentHeader.item1] = userAgentHeader.item2;

  log?.call(LogLevel.trace,
      '($transportName transport) sending data. ${getDataDetail(content, logMessageContent)}.');

  final encoding = (content is ByteBuffer)
      ? Encoding.getByName('')
      : Encoding.getByName('UTF-8');
  final response = await client?.post(Uri.parse(url ?? ''),
      headers: headers, body: content, encoding: encoding);

  log?.call(LogLevel.trace,
      '($transportName transport) request complete. Response status: ${response?.statusCode}.');
}