Skip to content

Commit

Permalink
fix archive dep
Browse files Browse the repository at this point in the history
  • Loading branch information
alextekartik committed Dec 9, 2024
1 parent e7dc9e2 commit 580b1ed
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 47 deletions.
9 changes: 8 additions & 1 deletion app_archive/lib/gzip.dart
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
export 'src/gzip_impl.dart' show gzipText, ungzipText, gzipBytes, ungzipBytes;
export 'src/gzip_impl.dart'
show
gzipText,
ungzipText,
gzipBytes,
ungzipBytes,
gzipOperatingSystemUnknown,
gzipOperatingSystemLinux;
26 changes: 15 additions & 11 deletions app_archive/lib/src/gzip_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@ import 'dart:typed_data';
import 'package:archive/archive.dart';
import 'package:tekartik_common_utils/byte_utils.dart';

/// Gzip header index 9
///
/// Unknown operating system
const gzipOperatingSystemUnknown = 255;

/// Linux operating system
const gzipOperatingSystemLinux = 3;

/// GZip some text
Uint8List gzipText(String text, {bool? noDate}) {
noDate ??= false;
var data = const GZipEncoder().encodeBytes(utf8.encode(text));
if (noDate) {
data[4] = 0;
data[5] = 0;
data[6] = 0;
data[7] = 0;
}
return asUint8List(data);
Uint8List gzipText(String text, {bool? noDate, int? operatingSystem}) {
return gzipBytes(utf8.encode(text),
noDate: noDate, operatingSystem: operatingSystem);
}

/// Un Gzip some data into text
Expand All @@ -23,7 +24,7 @@ String ungzipText(Uint8List data) {
}

/// GZip some bytes
Uint8List gzipBytes(Uint8List bytes, {bool? noDate}) {
Uint8List gzipBytes(Uint8List bytes, {bool? noDate, int? operatingSystem}) {
noDate ??= false;
var data = const GZipEncoder().encodeBytes(bytes);
if (noDate) {
Expand All @@ -32,6 +33,9 @@ Uint8List gzipBytes(Uint8List bytes, {bool? noDate}) {
data[6] = 0;
data[7] = 0;
}
if (operatingSystem != null) {
data[9] = operatingSystem;
}
return asUint8List(data);
}

Expand Down
48 changes: 13 additions & 35 deletions app_archive/test/gzip_test.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// ignore_for_file: avoid_print

import 'dart:typed_data';

import 'package:tekartik_app_archive/gzip.dart';
import 'package:tekartik_common_utils/byte_utils.dart';
import 'package:tekartik_common_utils/env_utils.dart';
import 'package:tekartik_common_utils/hex_utils.dart';
import 'package:tekartik_common_utils/list_utils.dart';
import 'package:tekartik_common_utils/log_format.dart';
Expand Down Expand Up @@ -84,9 +85,10 @@ void main() {
});

test('compress latest', () {
if (!kDartIsWeb) {
expect(gzipText('étoile', noDate: true), gzipBytesV2);
}
expect(
gzipText('étoile',
noDate: true, operatingSystem: gzipOperatingSystemLinux),
gzipBytesV2Linux);

void roundTrip(String text) {
var result = ungzipText(gzipText(text));
Expand All @@ -105,9 +107,9 @@ void main() {
});

test('decompress', () {
expect(gzipBytesV2, isNot(gzipBytesV1));
expect(gzipBytesV2Linux, isNot(gzipBytesV1));
expect(ungzipText(gzipBytesV1), 'étoile');
expect(ungzipText(gzipBytesV2), 'étoile');
expect(ungzipText(gzipBytesV2Linux), 'étoile');
});
});
}
Expand Down Expand Up @@ -141,32 +143,8 @@ var gzipBytesV1 = asUint8List([
0,
0,
]);
var gzipBytesV2 = asUint8List([
31,
139,
8,
0,
0,
0,
0,
0,
0,
3, // ? WAS 255,
59,
188,
178,
36,
63,
51,
39,
21,
0,
199,
250,
11,
130,
7,
0,
0,
0,
]);
var gzipBytesV2Linux = () {
var bytes = Uint8List.fromList(gzipBytesV1);
bytes[9] = gzipOperatingSystemLinux;
return bytes;
}();

0 comments on commit 580b1ed

Please sign in to comment.