buildHeader method

Future<Map<String, String>> buildHeader()

default Header builder

Implementation

Future<Map<String, String>> buildHeader() async {
  String userAgent;
  PackageInfo p = await PackageInfo.fromPlatform();
  String dtbLinkVersion = "0.1.23+44";
  if (Platform.isAndroid) {
    final deviceData = await DeviceInfoPlugin().androidInfo;
    final model = deviceData.model;
    final brand = deviceData.brand;
    final sdk = "${deviceData.version.sdkInt}";
    final release = deviceData.version.release;
    final deviceName = (await DeviceMarketingNames().getSingleName()).replaceAll(" ", "_");
    userAgent =
        "DtbLink/$dtbLinkVersion(${Platform.operatingSystem}_$release(SDK_$sdk)/$model)/$brand/$deviceName";
  } else {
    final deviceData = await DeviceInfoPlugin().iosInfo;
    final systemName = deviceData.systemName;
    final brand = deviceData.name;
    final systemVersion = deviceData.systemVersion;
    final release = deviceData.utsname.release;
    final deviceName = (await DeviceMarketingNames().getSingleName()).replaceAll(" ", "_");
    userAgent = "DtbLink/$dtbLinkVersion($systemName($systemVersion)/$release)/$brand/$deviceName";
  }
  String? readerId = await _storage.readerId;
  String dayTime = tranDateFormatter.format(DateTime.now());
  bool initType = await _storage.dtbInitType;
  Map<String, String> header = {
    HttpHeaders.userAgentHeader: userAgent,
    "AppName": "DtbLink",
    "Model": "DtbLink",
    "Operating-System": Platform.operatingSystem,
    "Term-App-Name": "DtbLink",
    "App-Version": "${p.version}.${p.buildNumber}",
    "DTBVersion": "DtbLink/${p.version}.${p.buildNumber}(${Platform.operatingSystem})",
    "Backend-Address": utf8.decode(base64.decode(initType ? host : devHost)),
    "Version": p.buildNumber,
    "ReaderId": "$readerId",
    "Terminal-Datetime": dayTime,
  };
  return header;
}