@onekeyfe/react-native-range-downloader 3.0.81-alpha.8 → 3.0.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/ReactNativeRangeDownloader.podspec +0 -8
  2. package/android/build.gradle +0 -1
  3. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ReactNativeRangeDownloader.kt +0 -144
  4. package/ios/RangeDownloadLogic.swift +0 -120
  5. package/ios/ReactNativeRangeDownloader.swift +6 -623
  6. package/lib/module/index.js +1 -2
  7. package/lib/module/index.js.map +1 -1
  8. package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts +1 -91
  9. package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts.map +1 -1
  10. package/lib/typescript/src/index.d.ts +0 -1
  11. package/lib/typescript/src/index.d.ts.map +1 -1
  12. package/nitrogen/generated/android/c++/JDownloadChannel.hpp +0 -3
  13. package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.cpp +0 -248
  14. package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.hpp +0 -12
  15. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/DownloadChannel.kt +1 -2
  16. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/HybridReactNativeRangeDownloaderSpec.kt +0 -49
  17. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.cpp +0 -48
  18. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.hpp +0 -329
  19. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Umbrella.hpp +0 -53
  20. package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.hpp +0 -152
  21. package/nitrogen/generated/ios/swift/DownloadChannel.swift +0 -4
  22. package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec.swift +0 -12
  23. package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec_cxx.swift +0 -221
  24. package/nitrogen/generated/shared/c++/DownloadChannel.hpp +0 -4
  25. package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.cpp +0 -12
  26. package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.hpp +0 -58
  27. package/package.json +2 -4
  28. package/src/ReactNativeRangeDownloader.nitro.ts +1 -127
  29. package/src/index.tsx +1 -3
  30. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveRules.kt +0 -284
  31. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactStore.kt +0 -774
  32. package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveRulesTest.kt +0 -75
  33. package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactDeadlineTest.kt +0 -26
  34. package/ios/FirmwareArchiveMinizipBridge.h +0 -33
  35. package/ios/FirmwareArchiveMinizipBridge.mm +0 -213
  36. package/ios/FirmwareArtifactStore.swift +0 -1445
  37. package/ios/FirmwareBackgroundSessionEventRouter.swift +0 -17
  38. package/nitrogen/generated/android/c++/JFirmwareArchiveExpectedEntry.hpp +0 -69
  39. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializeParams.hpp +0 -86
  40. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializeResult.hpp +0 -80
  41. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializedArtifact.hpp +0 -63
  42. package/nitrogen/generated/android/c++/JFirmwareArtifactCancelParams.hpp +0 -57
  43. package/nitrogen/generated/android/c++/JFirmwareArtifactCapabilities.hpp +0 -88
  44. package/nitrogen/generated/android/c++/JFirmwareArtifactDownloadParams.hpp +0 -98
  45. package/nitrogen/generated/android/c++/JFirmwareArtifactLease.hpp +0 -57
  46. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseCreateParams.hpp +0 -57
  47. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseReleaseParams.hpp +0 -61
  48. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseRetainParams.hpp +0 -61
  49. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderCloseParams.hpp +0 -57
  50. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderInfo.hpp +0 -61
  51. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderReadParams.hpp +0 -65
  52. package/nitrogen/generated/android/c++/JFirmwareArtifactReceipt.hpp +0 -65
  53. package/nitrogen/generated/android/c++/JFirmwareArtifactRefParams.hpp +0 -57
  54. package/nitrogen/generated/android/c++/JFirmwareArtifactSweepResult.hpp +0 -61
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveExpectedEntry.kt +0 -47
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializeParams.kt +0 -44
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializeResult.kt +0 -38
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializedArtifact.kt +0 -41
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactCancelParams.kt +0 -38
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactCapabilities.kt +0 -47
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactDownloadParams.kt +0 -68
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLease.kt +0 -38
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseCreateParams.kt +0 -38
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseReleaseParams.kt +0 -41
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseRetainParams.kt +0 -41
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderCloseParams.kt +0 -38
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderInfo.kt +0 -41
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderReadParams.kt +0 -44
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReceipt.kt +0 -44
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactRefParams.kt +0 -38
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactSweepResult.kt +0 -41
  72. package/nitrogen/generated/ios/swift/FirmwareArchiveExpectedEntry.swift +0 -69
  73. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializeParams.swift +0 -70
  74. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializeResult.swift +0 -48
  75. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializedArtifact.swift +0 -47
  76. package/nitrogen/generated/ios/swift/FirmwareArtifactCancelParams.swift +0 -36
  77. package/nitrogen/generated/ios/swift/FirmwareArtifactCapabilities.swift +0 -81
  78. package/nitrogen/generated/ios/swift/FirmwareArtifactDownloadParams.swift +0 -177
  79. package/nitrogen/generated/ios/swift/FirmwareArtifactLease.swift +0 -36
  80. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseCreateParams.swift +0 -36
  81. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseReleaseParams.swift +0 -47
  82. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseRetainParams.swift +0 -47
  83. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderCloseParams.swift +0 -36
  84. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderInfo.swift +0 -47
  85. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderReadParams.swift +0 -58
  86. package/nitrogen/generated/ios/swift/FirmwareArtifactReceipt.swift +0 -58
  87. package/nitrogen/generated/ios/swift/FirmwareArtifactRefParams.swift +0 -36
  88. package/nitrogen/generated/ios/swift/FirmwareArtifactSweepResult.swift +0 -47
  89. package/nitrogen/generated/ios/swift/Func_void_FirmwareArchiveMaterializeResult.swift +0 -47
  90. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactLease.swift +0 -47
  91. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactReaderInfo.swift +0 -47
  92. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactReceipt.swift +0 -47
  93. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactSweepResult.swift +0 -47
  94. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer_.swift +0 -47
  95. package/nitrogen/generated/shared/c++/FirmwareArchiveExpectedEntry.hpp +0 -87
  96. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializeParams.hpp +0 -86
  97. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializeResult.hpp +0 -77
  98. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializedArtifact.hpp +0 -81
  99. package/nitrogen/generated/shared/c++/FirmwareArtifactCancelParams.hpp +0 -75
  100. package/nitrogen/generated/shared/c++/FirmwareArtifactCapabilities.hpp +0 -88
  101. package/nitrogen/generated/shared/c++/FirmwareArtifactDownloadParams.hpp +0 -116
  102. package/nitrogen/generated/shared/c++/FirmwareArtifactLease.hpp +0 -75
  103. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseCreateParams.hpp +0 -75
  104. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseReleaseParams.hpp +0 -79
  105. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseRetainParams.hpp +0 -79
  106. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderCloseParams.hpp +0 -75
  107. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderInfo.hpp +0 -79
  108. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderReadParams.hpp +0 -83
  109. package/nitrogen/generated/shared/c++/FirmwareArtifactReceipt.hpp +0 -83
  110. package/nitrogen/generated/shared/c++/FirmwareArtifactRefParams.hpp +0 -75
  111. package/nitrogen/generated/shared/c++/FirmwareArtifactSweepResult.hpp +0 -79
@@ -1,75 +0,0 @@
1
- package com.margelo.nitro.reactnativerangedownloader
2
-
3
- import org.junit.Assert.assertEquals
4
- import org.junit.Assert.assertThrows
5
- import org.junit.Test
6
-
7
- class FirmwareArchiveRulesTest {
8
- private fun entry(
9
- artifactId: String = "resource-entry",
10
- entryName: String = "assets/icon.png",
11
- expectedSize: Double = 128.0,
12
- expectedSha256: String = "a".repeat(64),
13
- ) = FirmwareArchiveExpectedEntry(
14
- artifactId = artifactId,
15
- entryName = entryName,
16
- expectedSize = expectedSize,
17
- expectedSha256 = expectedSha256,
18
- )
19
-
20
- @Test
21
- fun acceptsAnExactPortableAllowlist() {
22
- val requirements = FirmwareArchiveRules.validateRequirements(
23
- arrayOf(
24
- entry(),
25
- entry(
26
- artifactId = "resource-entry-2",
27
- entryName = "assets/sub/icon-2.png",
28
- expectedSha256 = "b".repeat(64),
29
- ),
30
- ),
31
- )
32
-
33
- assertEquals(2, requirements.size)
34
- }
35
-
36
- @Test
37
- fun rejectsTraversalAndNestedArchives() {
38
- for (entryName in listOf("../icon.png", "assets/../icon.png", "assets.zip")) {
39
- assertThrows(IllegalArgumentException::class.java) {
40
- FirmwareArchiveRules.validateRequirements(
41
- arrayOf(entry(entryName = entryName)),
42
- )
43
- }
44
- }
45
- }
46
-
47
- @Test
48
- fun rejectsCaseFoldedDuplicateNames() {
49
- assertThrows(IllegalArgumentException::class.java) {
50
- FirmwareArchiveRules.validateRequirements(
51
- arrayOf(
52
- entry(entryName = "assets/Icon.png"),
53
- entry(
54
- artifactId = "resource-entry-2",
55
- entryName = "assets/icon.png",
56
- ),
57
- ),
58
- )
59
- }
60
- }
61
-
62
- @Test
63
- fun rejectsNonIntegralSizesAndInvalidDigests() {
64
- assertThrows(IllegalArgumentException::class.java) {
65
- FirmwareArchiveRules.validateRequirements(
66
- arrayOf(entry(expectedSize = 1.5)),
67
- )
68
- }
69
- assertThrows(IllegalArgumentException::class.java) {
70
- FirmwareArchiveRules.validateRequirements(
71
- arrayOf(entry(expectedSha256 = "not-a-digest")),
72
- )
73
- }
74
- }
75
- }
@@ -1,26 +0,0 @@
1
- package com.margelo.nitro.reactnativerangedownloader
2
-
3
- import org.junit.Assert.assertEquals
4
- import org.junit.Assert.assertThrows
5
- import org.junit.Test
6
-
7
- class FirmwareArtifactDeadlineTest {
8
- @Test
9
- fun defaultsToABoundedThreeMinuteDeadline() {
10
- assertEquals(180.0, validateFirmwareDownloadDeadlineSeconds(null), 0.0)
11
- }
12
-
13
- @Test
14
- fun preservesFractionalDeadlines() {
15
- assertEquals(2.75, validateFirmwareDownloadDeadlineSeconds(2.75), 0.0)
16
- }
17
-
18
- @Test
19
- fun rejectsUnboundedOrInvalidDeadlines() {
20
- listOf(0.0, -1.0, Double.NaN, Double.POSITIVE_INFINITY, 86_400.1).forEach {
21
- assertThrows(IllegalArgumentException::class.java) {
22
- validateFirmwareDownloadDeadlineSeconds(it)
23
- }
24
- }
25
- }
26
- }
@@ -1,33 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
-
3
- NS_ASSUME_NONNULL_BEGIN
4
-
5
- @interface FirmwareArchiveEntryInfo : NSObject
6
-
7
- @property(nonatomic, readonly) NSString *name;
8
- @property(nonatomic, readonly) int64_t compressedSize;
9
- @property(nonatomic, readonly) int64_t uncompressedSize;
10
- @property(nonatomic, readonly) uint32_t crc32;
11
- @property(nonatomic, readonly) uint16_t flags;
12
- @property(nonatomic, readonly) uint16_t compressionMethod;
13
- @property(nonatomic, readonly) uint16_t versionMadeBy;
14
- @property(nonatomic, readonly) uint32_t externalAttributes;
15
- @property(nonatomic, readonly) uint32_t diskNumber;
16
- @property(nonatomic, readonly, nullable) NSString *linkName;
17
-
18
- @end
19
-
20
- @interface FirmwareArchiveMinizipBridge : NSObject
21
-
22
- + (nullable NSArray<FirmwareArchiveEntryInfo *> *)scanArchiveAtPath:
23
- (NSString *)path
24
- error:(NSError * _Nullable * _Nullable)error;
25
-
26
- + (BOOL)extractEntryNamed:(NSString *)entryName
27
- archivePath:(NSString *)archivePath
28
- consumer:(BOOL (^)(NSData *chunk))consumer
29
- error:(NSError * _Nullable * _Nullable)error;
30
-
31
- @end
32
-
33
- NS_ASSUME_NONNULL_END
@@ -1,213 +0,0 @@
1
- #import "FirmwareArchiveMinizipBridge.h"
2
-
3
- #import "mz.h"
4
- #import "mz_strm.h"
5
- #import "mz_zip.h"
6
- #import "mz_zip_rw.h"
7
-
8
- #include <cstring>
9
-
10
- static NSString *const FirmwareArchiveBridgeErrorDomain =
11
- @"so.onekey.firmware.archive.minizip";
12
-
13
- static NSError *FirmwareArchiveBridgeError(NSString *message, int32_t code) {
14
- return [NSError errorWithDomain:FirmwareArchiveBridgeErrorDomain
15
- code:code
16
- userInfo:@{NSLocalizedDescriptionKey : message}];
17
- }
18
-
19
- @interface FirmwareArchiveEntryInfo ()
20
-
21
- @property(nonatomic, readwrite) NSString *name;
22
- @property(nonatomic, readwrite) int64_t compressedSize;
23
- @property(nonatomic, readwrite) int64_t uncompressedSize;
24
- @property(nonatomic, readwrite) uint32_t crc32;
25
- @property(nonatomic, readwrite) uint16_t flags;
26
- @property(nonatomic, readwrite) uint16_t compressionMethod;
27
- @property(nonatomic, readwrite) uint16_t versionMadeBy;
28
- @property(nonatomic, readwrite) uint32_t externalAttributes;
29
- @property(nonatomic, readwrite) uint32_t diskNumber;
30
- @property(nonatomic, readwrite, nullable) NSString *linkName;
31
-
32
- @end
33
-
34
- @implementation FirmwareArchiveEntryInfo
35
- @end
36
-
37
- @implementation FirmwareArchiveMinizipBridge
38
-
39
- + (nullable NSArray<FirmwareArchiveEntryInfo *> *)scanArchiveAtPath:
40
- (NSString *)path
41
- error:(NSError * _Nullable * _Nullable)error {
42
- void *reader = nullptr;
43
- mz_zip_reader_create(&reader);
44
- if (reader == nullptr) {
45
- if (error != nullptr) {
46
- *error = FirmwareArchiveBridgeError(@"Archive reader allocation failed",
47
- MZ_MEM_ERROR);
48
- }
49
- return nil;
50
- }
51
-
52
- int32_t result = mz_zip_reader_open_file(reader, path.fileSystemRepresentation);
53
- if (result != MZ_OK) {
54
- mz_zip_reader_delete(&reader);
55
- if (error != nullptr) {
56
- *error = FirmwareArchiveBridgeError(@"Archive open failed", result);
57
- }
58
- return nil;
59
- }
60
-
61
- NSMutableArray<FirmwareArchiveEntryInfo *> *entries =
62
- [NSMutableArray array];
63
- result = mz_zip_reader_goto_first_entry(reader);
64
- while (result == MZ_OK) {
65
- mz_zip_file *fileInfo = nullptr;
66
- result = mz_zip_reader_entry_get_info(reader, &fileInfo);
67
- if (result != MZ_OK || fileInfo == nullptr ||
68
- fileInfo->filename == nullptr) {
69
- result = result == MZ_OK ? MZ_FORMAT_ERROR : result;
70
- break;
71
- }
72
- const size_t filenameLength = std::strlen(fileInfo->filename);
73
- if (filenameLength == 0 || filenameLength > 4096) {
74
- result = MZ_FORMAT_ERROR;
75
- break;
76
- }
77
- if ((fileInfo->flag & (1 << 11)) == 0) {
78
- const unsigned char *filenameBytes =
79
- reinterpret_cast<const unsigned char *>(fileInfo->filename);
80
- bool isAscii = true;
81
- for (size_t index = 0; index < filenameLength; index += 1) {
82
- if (filenameBytes[index] >= 0x80) {
83
- isAscii = false;
84
- break;
85
- }
86
- }
87
- if (!isAscii) {
88
- result = MZ_FORMAT_ERROR;
89
- break;
90
- }
91
- }
92
- NSString *name = [NSString stringWithUTF8String:fileInfo->filename];
93
- if (name == nil) {
94
- result = MZ_FORMAT_ERROR;
95
- break;
96
- }
97
- NSString *linkName = nil;
98
- if (fileInfo->linkname != nullptr) {
99
- linkName = [NSString stringWithUTF8String:fileInfo->linkname];
100
- if (linkName == nil) {
101
- result = MZ_FORMAT_ERROR;
102
- break;
103
- }
104
- }
105
-
106
- FirmwareArchiveEntryInfo *entry =
107
- [[FirmwareArchiveEntryInfo alloc] init];
108
- entry.name = name;
109
- entry.compressedSize = fileInfo->compressed_size;
110
- entry.uncompressedSize = fileInfo->uncompressed_size;
111
- entry.crc32 = fileInfo->crc;
112
- entry.flags = fileInfo->flag;
113
- entry.compressionMethod = fileInfo->compression_method;
114
- entry.versionMadeBy = fileInfo->version_madeby;
115
- entry.externalAttributes = fileInfo->external_fa;
116
- entry.diskNumber = fileInfo->disk_number;
117
- entry.linkName = linkName;
118
- [entries addObject:entry];
119
- if (entries.count > 4096) {
120
- result = MZ_FORMAT_ERROR;
121
- break;
122
- }
123
- result = mz_zip_reader_goto_next_entry(reader);
124
- }
125
-
126
- if (result == MZ_END_OF_LIST) {
127
- result = MZ_OK;
128
- }
129
- int32_t closeResult = mz_zip_reader_close(reader);
130
- mz_zip_reader_delete(&reader);
131
- if (result != MZ_OK || closeResult != MZ_OK) {
132
- if (error != nullptr) {
133
- *error = FirmwareArchiveBridgeError(@"Archive scan failed",
134
- result != MZ_OK ? result
135
- : closeResult);
136
- }
137
- return nil;
138
- }
139
- return entries;
140
- }
141
-
142
- + (BOOL)extractEntryNamed:(NSString *)entryName
143
- archivePath:(NSString *)archivePath
144
- consumer:(BOOL (^)(NSData *chunk))consumer
145
- error:(NSError * _Nullable * _Nullable)error {
146
- void *reader = nullptr;
147
- bool archiveOpened = false;
148
- bool entryOpened = false;
149
- mz_zip_reader_create(&reader);
150
- if (reader == nullptr) {
151
- if (error != nullptr) {
152
- *error = FirmwareArchiveBridgeError(@"Archive reader allocation failed",
153
- MZ_MEM_ERROR);
154
- }
155
- return NO;
156
- }
157
-
158
- int32_t result =
159
- mz_zip_reader_open_file(reader, archivePath.fileSystemRepresentation);
160
- if (result == MZ_OK) {
161
- archiveOpened = true;
162
- }
163
- if (result == MZ_OK) {
164
- result = mz_zip_reader_locate_entry(
165
- reader, entryName.UTF8String, 0);
166
- }
167
- if (result == MZ_OK) {
168
- result = mz_zip_reader_entry_open(reader);
169
- if (result == MZ_OK) {
170
- entryOpened = true;
171
- }
172
- }
173
-
174
- uint8_t buffer[64 * 1024];
175
- while (result == MZ_OK) {
176
- int32_t count =
177
- mz_zip_reader_entry_read(reader, buffer, (int32_t)sizeof(buffer));
178
- if (count < 0) {
179
- result = count;
180
- break;
181
- }
182
- if (count == 0) {
183
- break;
184
- }
185
- NSData *chunk = [NSData dataWithBytes:buffer length:(NSUInteger)count];
186
- if (!consumer(chunk)) {
187
- result = MZ_WRITE_ERROR;
188
- break;
189
- }
190
- }
191
-
192
- int32_t entryCloseResult =
193
- entryOpened ? mz_zip_reader_entry_close(reader) : MZ_OK;
194
- int32_t archiveCloseResult =
195
- archiveOpened ? mz_zip_reader_close(reader) : MZ_OK;
196
- mz_zip_reader_delete(&reader);
197
- if (result != MZ_OK || entryCloseResult != MZ_OK ||
198
- archiveCloseResult != MZ_OK) {
199
- if (error != nullptr) {
200
- int32_t failure = result != MZ_OK
201
- ? result
202
- : (entryCloseResult != MZ_OK
203
- ? entryCloseResult
204
- : archiveCloseResult);
205
- *error = FirmwareArchiveBridgeError(
206
- @"Archive entry extraction or CRC validation failed", failure);
207
- }
208
- return NO;
209
- }
210
- return YES;
211
- }
212
-
213
- @end