nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

zip.js (1297B)


      1 import {JSUnzip} from '~/vendored/github.com/augustl/js-unzip/js-unzip';
      2 import jsInflate from './jsInflate';
      3 import {decode866} from './codePages';
      4 import parseGeoFile from '../parseGeoFile';
      5 
      6 function parseZip(txt, _unused_name) {
      7     let unzipper;
      8     try {
      9         unzipper = new JSUnzip(txt);
     10     } catch (e) {
     11         return null;
     12     }
     13     if (!unzipper.isZipFile()) {
     14         return null;
     15     }
     16     try {
     17         unzipper.readEntries();
     18     } catch (e) {
     19         return null;
     20     }
     21     var geodata_array = [];
     22     for (var i = 0; i < unzipper.entries.length; i++) {
     23         var entry = unzipper.entries[i];
     24         var uncompressed;
     25         if (entry.compressionMethod === 0) {
     26             uncompressed = entry.data;
     27         } else if (entry.compressionMethod === 8) {
     28             uncompressed = jsInflate(entry.data, entry.uncompressedSize);
     29         } else {
     30             return null;
     31         }
     32         var file_name = decode866(entry.fileName);
     33         var geodata = parseGeoFile(file_name, uncompressed);
     34         for (let item of geodata) {
     35             if (item.error === 'UNSUPPORTED' && item.name.match(/(\.(pdf|doc|txt|jpg))|\/$/ui)) {
     36                 continue;
     37             }
     38             geodata_array.push(item);
     39         }
     40     }
     41     return geodata_array;
     42 }
     43 
     44 export default parseZip;