promises, and such
This commit is contained in:
parent
055eb9358a
commit
079d0e738e
47
app-promise.js
Normal file
47
app-promise.js
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
const yargs = require('yargs');
|
||||||
|
const axios = require('axios');
|
||||||
|
|
||||||
|
const credentials = require("./credentials")
|
||||||
|
|
||||||
|
const argv = yargs
|
||||||
|
.options({
|
||||||
|
a: {
|
||||||
|
demand: true,
|
||||||
|
alias: 'address',
|
||||||
|
describe: "Address to fetch weather for.",
|
||||||
|
string: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.help()
|
||||||
|
.alias('help', 'h')
|
||||||
|
.argv;
|
||||||
|
|
||||||
|
var encodedAddress = encodeURIComponent(argv.address);
|
||||||
|
var geocodeUrl = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodedAddress}&key=${credentials.GOOGLE_API_KEY}`;
|
||||||
|
|
||||||
|
axios.get(geocodeUrl).then((response) => {
|
||||||
|
if (response.data.status === "ZERO_RESULTS") {
|
||||||
|
throw new Error('Unable to find that Address.')
|
||||||
|
} else if (response.data.status === 'REQUEST_DENIED'){
|
||||||
|
throw new Error(`API Request Denied: ${response.data.error_message}`);
|
||||||
|
}
|
||||||
|
var lat = response.data.results[0].geometry.location.lat;
|
||||||
|
var lng = response.data.results[0].geometry.location.lng;
|
||||||
|
console.log(response.data.results[0].formatted_address);
|
||||||
|
var weatherUrl = `https://api.darksky.net/forecast/${API_KEY}/${lat},${lng}`;
|
||||||
|
return axios.get(weatherUrl);
|
||||||
|
}).then((response) => {
|
||||||
|
var temperature = response.data.currently.temperature;
|
||||||
|
var apparentTemperature = response.data.currently.apparentTemperature;
|
||||||
|
console.log(`It's currently: ${temperature}. It feels like ${apparentTemperature}`);
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
if (e.code === 'ENOTFOUND') {
|
||||||
|
console.log("Unable to connect to API servers");
|
||||||
|
} else {
|
||||||
|
console.log(e.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
console.log("Powered By https://darksky.net/poweredby/");
|
1
app.js
1
app.js
|
@ -35,4 +35,3 @@ geocode.geocodeAddress(argv.address, (errorMessage, results) => {
|
||||||
|
|
||||||
|
|
||||||
console.log("Powered By https://darksky.net/poweredby/");
|
console.log("Powered By https://darksky.net/poweredby/");
|
||||||
// ae8dd4c9c3a690289fd7cfe125f50e84
|
|
||||||
|
|
7
credentials.js
Normal file
7
credentials.js
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
var GOOGLE_API_KEY = process.env.GOOGLE_API_KEY;
|
||||||
|
var DARKSKY_API_KEY = process.env.DARKSKY_API_KEY;
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
GOOGLE_API_KEY,
|
||||||
|
DARKSKY_API_KEY
|
||||||
|
}
|
35
package-lock.json
generated
35
package-lock.json
generated
|
@ -45,6 +45,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
|
||||||
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
|
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
|
||||||
},
|
},
|
||||||
|
"axios": {
|
||||||
|
"version": "0.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.13.1.tgz",
|
||||||
|
"integrity": "sha1-Pmer/kMzvJ0tX+b70TtGlOr8jfg=",
|
||||||
|
"requires": {
|
||||||
|
"follow-redirects": "0.0.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
"bcrypt-pbkdf": {
|
"bcrypt-pbkdf": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
|
||||||
|
@ -136,6 +144,14 @@
|
||||||
"assert-plus": "1.0.0"
|
"assert-plus": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"decamelize": {
|
"decamelize": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
||||||
|
@ -192,6 +208,15 @@
|
||||||
"pinkie-promise": "2.0.1"
|
"pinkie-promise": "2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"follow-redirects": {
|
||||||
|
"version": "0.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz",
|
||||||
|
"integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=",
|
||||||
|
"requires": {
|
||||||
|
"debug": "2.6.9",
|
||||||
|
"stream-consume": "0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"forever-agent": {
|
"forever-agent": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
|
@ -381,6 +406,11 @@
|
||||||
"mime-db": "1.30.0"
|
"mime-db": "1.30.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
},
|
||||||
"normalize-package-data": {
|
"normalize-package-data": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
|
||||||
|
@ -583,6 +613,11 @@
|
||||||
"tweetnacl": "0.14.5"
|
"tweetnacl": "0.14.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stream-consume": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz",
|
||||||
|
"integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8="
|
||||||
|
},
|
||||||
"string-width": {
|
"string-width": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"axios": "^0.13.1",
|
||||||
"request": "^2.83.0",
|
"request": "^2.83.0",
|
||||||
"yargs": "^4.8.1"
|
"yargs": "^4.8.1"
|
||||||
}
|
}
|
||||||
|
|
36
playground/promise.js
Normal file
36
playground/promise.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
var asyncAdd = (a, b) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (typeof a === 'number' && typeof b === 'number'){
|
||||||
|
resolve(a + b);
|
||||||
|
} else {
|
||||||
|
reject("Arguments must be numbers");
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// var somePromise = new Promise((resolve, reject) => {
|
||||||
|
// setTimeout(() => {
|
||||||
|
// // resolve("Hey, It worked!");
|
||||||
|
// reject("FAILED BRUH");
|
||||||
|
// }, 500);
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// somePromise.then((message) => {
|
||||||
|
// console.log("Success:", message);
|
||||||
|
// },
|
||||||
|
// (errorMessage) => {
|
||||||
|
// console.log("Error:", errorMessage);
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
asyncAdd(1, 2).then((res) => {
|
||||||
|
return asyncAdd(res, 33);
|
||||||
|
}).then((res) => {
|
||||||
|
console.log("Should be 36", res);
|
||||||
|
}).catch((errorMessage) => {
|
||||||
|
console.log(errorMessage);
|
||||||
|
})
|
29
playground/promise2.js
Normal file
29
playground/promise2.js
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
const request = require('request')
|
||||||
|
|
||||||
|
var geocodeAddress = (address) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
var encodedAddress = encodeURIComponent(address);
|
||||||
|
request({
|
||||||
|
url: `https://maps.googleapis.com/maps/api/geocode/json?address=${encodedAddress}`,
|
||||||
|
json: true
|
||||||
|
}, (error, response, body) => {
|
||||||
|
if (error) {
|
||||||
|
reject("Unable to connect to Google Servers.");
|
||||||
|
} else if (body.status === "ZERO_RESULTS"){
|
||||||
|
reject("Unable to find that Address.");
|
||||||
|
} else if (body.status === "OK"){
|
||||||
|
resolve({
|
||||||
|
address: body.results[0].formatted_address,
|
||||||
|
latitude: body.results[0].geometry.location.lat,
|
||||||
|
longitude: body.results[0].geometry.location.lng
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
geocodeAddress(19146).then((location) => {
|
||||||
|
console.log(JSON.stringify(location, null, 2));
|
||||||
|
}, (errorMessage) => {
|
||||||
|
console.log(errorMessage);
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user