1
- 'use strict' ;
2
-
3
- var q = require ( 'q' ) ;
4
- var isCss = require ( 'is-css' ) ;
5
- var isPresent = require ( 'is-present' ) ;
6
- var isBlank = require ( 'is-blank' ) ;
7
- var isUrl = require ( 'is-url-superb' ) ;
8
- var request = require ( 'requestretry' ) ;
9
- var cheerio = require ( 'cheerio' ) ;
10
- var normalizeUrl = require ( 'normalize-url' ) ;
11
- var stripHtmlComments = require ( 'strip-html-comments' ) ;
12
- var stripWaybackToolbar = require ( 'strip-wayback-toolbar' )
13
- var resolveCssImportUrls = require ( 'resolve-css-import-urls' ) ;
14
- var ua = require ( 'ua-string' ) ;
15
-
16
- var getLinkContents = require ( './utils/get-link-contents' ) ;
17
- var createLink = require ( './utils/create-link' ) ;
1
+ var q = require ( "q" ) ;
2
+ var isCss = require ( "is-css" ) ;
3
+ var isPresent = require ( "is-present" ) ;
4
+ var isBlank = require ( "is-blank" ) ;
5
+ var isUrl = require ( "is-url-superb" ) ;
6
+ var request = require ( "requestretry" ) ;
7
+ var cheerio = require ( "cheerio" ) ;
8
+ var normalizeUrl = require ( "normalize-url" ) ;
9
+ var stripHtmlComments = require ( "strip-html-comments" ) ;
10
+ var stripWaybackToolbar = require ( "strip-wayback-toolbar" )
11
+ var resolveCssImportUrls = require ( "resolve-css-import-urls" ) ;
12
+ var ua = require ( "ua-string" ) ;
13
+
14
+ var getLinkContents = require ( "./utils/get-link-contents" ) ;
15
+ var createLink = require ( "./utils/create-link" ) ;
18
16
19
17
module . exports = function ( url , options ) {
20
18
var deferred = q . defer ( ) ;
21
19
var options = options || { } ;
22
20
options . headers = options . headers || { } ;
23
- options . headers [ ' User-Agent' ] = options . headers [ ' User-Agent' ] || ua ;
21
+ options . headers [ " User-Agent" ] = options . headers [ " User-Agent" ] || ua ;
24
22
options . timeout = options . timeout || 5000 ;
25
23
options . stripWayback = options . stripWayback || false ;
26
24
options . gzip = true ;
27
25
28
- if ( typeof url !== ' string' || isBlank ( url ) || ! isUrl ( url ) ) {
29
- throw new TypeError ( ' get-css expected a url as a string' )
26
+ if ( typeof url !== " string" || isBlank ( url ) || ! isUrl ( url ) ) {
27
+ throw new TypeError ( " get-css expected a url as a string" ) ;
30
28
}
31
29
32
30
url = normalizeUrl ( url , { stripWWW : false } ) ;
33
31
options . url = url ;
34
32
35
33
if ( options . ignoreCerts ) {
36
- process . env . NODE_TLS_REJECT_UNAUTHORIZED = '0' ;
34
+ process . env . NODE_TLS_REJECT_UNAUTHORIZED = "0" ;
37
35
}
38
36
39
37
var status = {
@@ -44,7 +42,7 @@ module.exports = function(url, options){
44
42
var result = {
45
43
links : [ ] ,
46
44
styles : [ ] ,
47
- css : ''
45
+ css : ""
48
46
} ;
49
47
50
48
function handleResolve ( ) {
@@ -58,19 +56,19 @@ module.exports = function(url, options){
58
56
html = stripWaybackToolbar ( html ) ;
59
57
}
60
58
var $ = cheerio . load ( html ) ;
61
- result . pageTitle = $ ( ' head > title' ) . text ( ) ;
59
+ result . pageTitle = $ ( " head > title" ) . text ( ) ;
62
60
result . html = html ;
63
61
64
- $ ( ' [rel=stylesheet]' ) . each ( function ( ) {
65
- var link = $ ( this ) . attr ( ' href' ) ;
66
- if ( isPresent ( link ) ) {
62
+ $ ( " [rel=stylesheet]" ) . each ( function ( ) {
63
+ var link = $ ( this ) . attr ( " href" ) ;
64
+ if ( isPresent ( link ) ) {
67
65
result . links . push ( createLink ( link , url ) ) ;
68
- } else {
66
+ } else {
69
67
result . styles . push ( stripHtmlComments ( $ ( this ) . text ( ) ) ) ;
70
68
}
71
69
} ) ;
72
70
73
- $ ( ' style' ) . each ( function ( ) {
71
+ $ ( " style" ) . each ( function ( ) {
74
72
result . styles . push ( stripHtmlComments ( $ ( this ) . text ( ) ) ) ;
75
73
} ) ;
76
74
@@ -129,27 +127,36 @@ module.exports = function(url, options){
129
127
} ) ;
130
128
}
131
129
132
- request ( options , function ( error , response , body ) {
133
- if ( error ) {
134
- if ( options . verbose ) console . log ( 'Error from ' + url + ' ' + error ) ;
135
- deferred . reject ( error ) ;
136
- return ;
137
- }
138
-
139
- if ( response && response . statusCode != 200 ) {
140
- if ( options . verbose ) console . log ( 'Received a ' + response . statusCode + ' from: ' + url ) ;
141
- deferred . reject ( { url : url , statusCode : response . code } ) ;
142
- return ;
143
- }
144
-
130
+ function handleBody ( body ) {
145
131
if ( isCss ( url ) ) {
146
132
var link = createLink ( url , url ) ;
147
133
result . links . push ( link ) ;
148
134
handleCssFromLink ( link , body ) ;
149
135
} else {
150
136
parseHtml ( body ) ;
151
137
}
152
- } ) ;
138
+ }
139
+
140
+ if ( html ) {
141
+ handleBody ( html ) ;
142
+ } else {
143
+ request ( options , function ( error , response , body ) {
144
+ if ( error ) {
145
+ if ( options . verbose ) console . log ( "Error from " + url + " " + error ) ;
146
+ deferred . reject ( error ) ;
147
+ return ;
148
+ }
149
+
150
+ if ( response && response . statusCode != 200 ) {
151
+ if ( options . verbose )
152
+ console . log ( "Received a " + response . statusCode + " from: " + url ) ;
153
+ deferred . reject ( { url : url , statusCode : response . code } ) ;
154
+ return ;
155
+ }
156
+
157
+ handleBody ( body ) ;
158
+ } ) ;
159
+ }
153
160
154
161
return deferred . promise ;
155
162
} ;
0 commit comments