forecastio
Version:
A node.js wrapper for Forecast.io API
109 lines (74 loc) • 3.23 kB
Markdown
forecastio
==========
[](https://travis-ci.org/soplakanets/node-forecastio) [](https://david-dm.org/soplakanets/node-forecastio)

A node.js client library for [Forecast.io API](https://developer.forecast.io).
For explanation and more detailed info about endpoints and response format see [Forecast.IO API documentation](https://developer.forecast.io/docs/v2)
```
npm install forecastio
```
Say you need a [forecast](https://developer.forecast.io/docs/v2#forecast_call) for London, UK:
```javascript
var ForecastIo = require('forecastio');
var forecastIo = new ForecastIo('<apiKey>');
forecastIo.forecast('51.506', '-0.127').then(function(data) {
console.log(JSON.stringify(data, null, 2));
});
```
Forecast.io also supports [Time Machine requests](https://developer.forecast.io/docs/v2#time_call). Quoting official documentation you can make request for "60 years in the past to 10 years in the future" for "many places". Example:
```javascript
// What was the weather like in London on January 1st 2008?
forecastIo.timeMachine('51.506', '-0.127', '2008-01-01T00:00:01Z').then(function(data) {
console.log(JSON.stringify(data, null, 2));
});
```
Both `
*Below are some examples, for all options consult [Options section of Forecast.IO API documentation](https://developer.forecast.io/docs/v2#options).*
Example of requesting ad forecast in Si(metric) units with only 'daily' fields:
```javascript
var options = {
units: 'si',
exclude: 'currently,hourly,flags'
};
forecastIo.forecast('49.844', '24.028', options).then(function(data) {
console.log(JSON.stringify(data, null, 2));
});
```
Another example, a "Time Machine" request in UK units and localized in Italian:
```javascript
var options = {
units: 'uk',
lang: 'it'
};
forecastIo.timeMachine('49.844', '24.028', '2008-01-01T00:00:01Z', options).then(function(data) {
console.log(JSON.stringify(data, null, 2));
});
```
To set timeout for requests pass a timeout option to constructor, example:
```javascript
var forecastIo = new ForecastIo('<apiKey>', {timeout: 30*1000});
```
As a result all API request made with with this `forecastIo` instance will have a timeout of 30 seconds.
Timeout option accepts time in milliseconds. If request will not finish in time - a callback will be fired with a timeout error.
- Logging (for debugging at least)
- Smarter API methods (accept `Date` object in `#timeMachine()` and convert it to string, for example)
## Contributing
* Fork the repo & commit changes
* Make sure tests are not failing:
$ env FORECASTIO_API_KEY=`your_api_key` npm test
* Create a pull request
- Fixed deprecation warnings.
- Promises (For compatibility callbacks are still supported).
- Added `timeout` option
- More informative error messages.