@@ -28,7 +28,7 @@ module.exports = function (options = []) { // eslint-disable-line no-unused-vars
28
28
29
29
// save all given fields and update the hook data
30
30
options . forEach ( ( field ) => {
31
- if ( ! hook . data [ field ] || hook . data [ field ] . search ( uploadsUrl ) >= 0 ) {
31
+ if ( ! hook . data [ field ] || ( typeof hook . data [ field ] === 'string' && hook . data [ field ] . search ( uploadsUrl ) >= 0 ) ) {
32
32
// skip invalid and local data
33
33
return ;
34
34
}
@@ -39,32 +39,16 @@ module.exports = function (options = []) { // eslint-disable-line no-unused-vars
39
39
const imgName = `${ field } _${ uuid } ` ;
40
40
let imgPath = path . resolve ( 'public' , 'uploads/' + imgName ) ;
41
41
42
- request ( {
43
- url : hook . data [ field ] ,
44
- encoding : null
45
- } , ( err , res , body ) => {
46
- if ( err ) {
47
- hook . app . error ( err ) ;
48
- reject ( err ) ;
49
- }
42
+ if ( typeof hook . data [ field ] === 'object' ) {
50
43
try {
51
- const mimeType = res . headers [ 'content-type' ] ;
52
- if ( mimeType . indexOf ( 'image' ) !== 0 ) {
53
- hook . app . error ( 'its not an image' ) ;
54
- reject ( 'its not an image' ) ;
55
- }
56
-
57
- const ext = mime . getExtension ( mimeType ) ;
44
+ hook . app . debug ( 'SAVE REMOTE IMAGES HOOK' ) ;
45
+ hook . app . debug ( typeof hook . data [ field ] ) ;
58
46
59
- imgPath += `.${ ext } ` ;
60
-
61
- fs . writeFileSync ( imgPath , body , {
47
+ fs . writeFileSync ( `${ imgPath } .png` , hook . data [ field ] , {
62
48
encoding : 'binary'
63
49
} ) ;
64
-
65
50
loading -- ;
66
-
67
- hook . data [ field ] = uploadsUrl + imgName + `.${ ext } ` ;
51
+ hook . data [ field ] = uploadsUrl + imgName + '.png' ;
68
52
69
53
if ( imgCount > 0 && loading <= 0 ) {
70
54
hook . app . debug ( 'Download(s) finished' , urls ) ;
@@ -73,7 +57,43 @@ module.exports = function (options = []) { // eslint-disable-line no-unused-vars
73
57
} catch ( err ) {
74
58
hook . app . error ( err ) ;
75
59
}
76
- } ) ;
60
+ } else {
61
+ request ( {
62
+ url : hook . data [ field ] ,
63
+ encoding : null
64
+ } , ( err , res , body ) => {
65
+ if ( err ) {
66
+ hook . app . error ( err ) ;
67
+ reject ( err ) ;
68
+ }
69
+ try {
70
+ const mimeType = res . headers [ 'content-type' ] ;
71
+ if ( mimeType . indexOf ( 'image' ) !== 0 ) {
72
+ hook . app . error ( 'its not an image' ) ;
73
+ reject ( 'its not an image' ) ;
74
+ }
75
+
76
+ const ext = mime . getExtension ( mimeType ) ;
77
+
78
+ imgPath += `.${ ext } ` ;
79
+
80
+ fs . writeFileSync ( imgPath , body , {
81
+ encoding : 'binary'
82
+ } ) ;
83
+
84
+ loading -- ;
85
+
86
+ hook . data [ field ] = uploadsUrl + imgName + `.${ ext } ` ;
87
+
88
+ if ( imgCount > 0 && loading <= 0 ) {
89
+ hook . app . debug ( 'Download(s) finished' , urls ) ;
90
+ resolve ( hook ) ;
91
+ }
92
+ } catch ( err ) {
93
+ hook . app . error ( err ) ;
94
+ }
95
+ } ) ;
96
+ }
77
97
78
98
hook . app . debug ( 'Downloading' , hook . data [ field ] ) ;
79
99
} ) ;
0 commit comments