File tree 9 files changed +180
-165
lines changed
9 files changed +180
-165
lines changed Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+
4
+ var once = require ( './lib/common' ) . once ;
5
+ var request = require ( 'request' ) . defaults ( {
6
+ timeout : 30000 ,
7
+ maxRedirects : 2 ,
8
+ rejectUnauthorized : false
9
+ } ) ;
10
+
11
+ var probeStream = require ( './stream' ) ;
12
+
13
+
14
+ module . exports = function probeHttp ( options , _callback ) {
15
+ var callback = once ( _callback ) ;
16
+ var req ;
17
+
18
+ try {
19
+ req = request ( options ) ;
20
+ } catch ( err ) {
21
+ callback ( err ) ;
22
+ return ;
23
+ }
24
+
25
+ req . on ( 'response' , function ( res ) {
26
+ if ( res . statusCode === 200 ) {
27
+ probeStream ( res , function ( err , result ) {
28
+ req . abort ( ) ;
29
+
30
+ if ( result ) {
31
+ var length = res . headers [ 'content-length' ] ;
32
+
33
+ if ( length && length . match ( / ^ \d + $ / ) ) {
34
+ result . length = + length ;
35
+ }
36
+ }
37
+
38
+ callback ( err , result ) ;
39
+ } ) ;
40
+ } else {
41
+ var err = new Error ( 'bad status code: ' + res . statusCode ) ;
42
+
43
+ err . status = res . statusCode ;
44
+ req . abort ( ) ;
45
+ callback ( err ) ;
46
+ }
47
+ } ) ;
48
+
49
+ req . on ( 'error' , function ( err ) {
50
+ callback ( err ) ;
51
+ } ) ;
52
+ } ;
53
+
54
+
55
+ module . exports . parsers = require ( './lib/parsers_stream' ) ;
Original file line number Diff line number Diff line change 1
1
'use strict' ;
2
2
3
3
4
- module . exports = require ( './lib' ) ;
5
- module . exports . sync = require ( './lib/sync' ) ;
4
+ var probeStream = require ( './stream' ) ;
5
+ var probeHttp = require ( './http' ) ;
6
+
7
+
8
+ // Cache for promise implementation
9
+ var P ;
10
+
11
+
12
+ /* eslint-disable consistent-return */
13
+
14
+ module . exports = function get_image_size ( src , callback ) {
15
+ var prober ;
16
+
17
+ if ( typeof src . on === 'function' && typeof src . emit === 'function' ) {
18
+ // looks like an EventEmitter, treating it as a stream
19
+ prober = probeStream ;
20
+ } else {
21
+ prober = probeHttp ;
22
+ }
23
+
24
+ if ( ! callback ) {
25
+ P = P || require ( 'any-promise' ) ;
26
+
27
+ return new P ( function ( resolve , reject ) {
28
+ prober ( src , function ( err , data ) {
29
+ if ( err ) reject ( err ) ;
30
+ else resolve ( data ) ;
31
+ } ) ;
32
+ } ) ;
33
+ }
34
+
35
+ prober ( src , callback ) ;
36
+ } ;
37
+
38
+ module . exports . parsers = require ( './lib/parsers_stream' ) ;
39
+ module . exports . sync = require ( './sync' ) ;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+
4
+ module . exports = {
5
+ bmp : require ( './parse_stream/bmp' ) ,
6
+ gif : require ( './parse_stream/gif' ) ,
7
+ jpeg : require ( './parse_stream/jpeg' ) ,
8
+ png : require ( './parse_stream/png' ) ,
9
+ psd : require ( './parse_stream/psd' ) ,
10
+ tiff : require ( './parse_stream/tiff' ) ,
11
+ webp : require ( './parse_stream/webp' )
12
+ } ;
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+
4
+ module . exports = {
5
+ bmp : require ( './parse_sync/bmp' ) ,
6
+ gif : require ( './parse_sync/gif' ) ,
7
+ //jpeg: require('./parse_sync/jpeg'),
8
+ png : require ( './parse_sync/png' ) ,
9
+ psd : require ( './parse_sync/psd' ) ,
10
+ tiff : require ( './parse_sync/tiff' ) ,
11
+ webp : require ( './parse_sync/webp' )
12
+ } ;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 18
18
"license" : " MIT" ,
19
19
"files" : [
20
20
" index.js" ,
21
+ " http.js" ,
22
+ " stream.js" ,
23
+ " sync.js" ,
21
24
" lib/"
22
25
],
23
26
"scripts" : {
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+
4
+ var async = require ( 'async' ) ;
5
+ var parsers = require ( './lib/parsers_stream' ) ;
6
+
7
+
8
+ module . exports = function probeStream ( stream , callback ) {
9
+ // prevent "possible EventEmitter memory leak" warnings
10
+ stream . setMaxListeners ( 0 ) ;
11
+
12
+ async . map ( parsers , function ( parser , next ) {
13
+ parser ( stream , next ) ;
14
+ } , function ( err , results ) {
15
+ if ( err ) {
16
+ callback ( err ) ;
17
+ return ;
18
+ }
19
+
20
+ var result = Object . keys ( results ) . map ( function ( type ) {
21
+ return results [ type ] ;
22
+ } ) . filter ( Boolean ) [ 0 ] ;
23
+
24
+ if ( ! result ) {
25
+ var error = new Error ( 'unrecognized file format' ) ;
26
+
27
+ error . code = 'ECONTENT' ;
28
+ callback ( error ) ;
29
+ return ;
30
+ }
31
+
32
+ callback ( null , result ) ;
33
+ } ) ;
34
+ } ;
35
+
36
+
37
+ module . exports . parsers = parsers ;
Original file line number Diff line number Diff line change 1
1
'use strict' ;
2
2
3
3
4
- module . exports = require ( './lib/sync' ) ;
4
+ var parsers = require ( './lib/parsers_sync' ) ;
5
+
6
+
7
+ function probeBuffer ( buffer ) {
8
+ var parser_names = Object . keys ( parsers ) ;
9
+
10
+ for ( var i = 0 ; i < parser_names . length ; i ++ ) {
11
+ var result = parsers [ parser_names [ i ] ] ( buffer ) ;
12
+
13
+ if ( result ) return result ;
14
+ }
15
+
16
+ return null ;
17
+ }
18
+
19
+
20
+ ///////////////////////////////////////////////////////////////////////
21
+ // Exports
22
+ //
23
+
24
+ module . exports = function get_image_size ( src ) {
25
+ return probeBuffer ( src ) ;
26
+ } ;
27
+
28
+ module . exports . parsers = parsers ;
You can’t perform that action at this time.
0 commit comments