@@ -176,10 +176,13 @@ function getWeather(lat, lon, timezone) {
176
176
return new Promise ( ( resolve , reject ) => {
177
177
let weatherResponse = { }
178
178
const weatherReq = http . get ( url , ( res ) => {
179
- // console.log(`STATUS: ${res.statusCode}`)
180
- // console.log(`HEADERS: ${JSON.stringify(res.headers)}`)
181
179
res . setEncoding ( 'utf8' )
182
180
181
+
182
+ if ( res . statusCode !== 200 ) {
183
+ reject ( new Error ( `HTTP ${ res . statusCode } ${ res . statusMessage } ` ) )
184
+ }
185
+
183
186
let responseData = ''
184
187
res . on ( 'data' , ( chunk ) => {
185
188
// console.log(`BODY: ${JSON.stringify(chunk)}`)
@@ -189,6 +192,11 @@ function getWeather(lat, lon, timezone) {
189
192
res . on ( 'end' , ( ) => {
190
193
try {
191
194
weatherResponse = JSON . parse ( responseData )
195
+ console . log ( "Weather API raw response: " , weatherResponse )
196
+
197
+ // TODO: Throw an error if the `weatherResponse` object
198
+ // is missing the expected keys (i.e. `current`, `daily`)
199
+
192
200
weatherResponse . current . weather = weatherCodes [ weatherResponse . current [ 'weather_code' ] ]
193
201
weatherResponse . daily . weather = [ ]
194
202
weatherResponse . daily . weather_code . forEach ( day => {
@@ -209,7 +217,7 @@ function getWeather(lat, lon, timezone) {
209
217
} )
210
218
211
219
weatherReq . on ( 'error' , ( e ) => {
212
- console . error ( `problem with request : ${ e . message } ` )
220
+ console . error ( `Problem retrieving weather : ${ e . message } ` )
213
221
reject ( e )
214
222
} )
215
223
0 commit comments