Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fratzinger/feathers-openweathermap
https://github.com/fratzinger/feathers-openweathermap
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/fratzinger/feathers-openweathermap
- Owner: fratzinger
- License: mit
- Created: 2021-04-18T18:34:52.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-06T02:32:06.000Z (almost 2 years ago)
- Last Synced: 2024-11-30T18:56:07.783Z (about 1 month ago)
- Language: TypeScript
- Size: 839 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-feathersjs - feathers-openweathermap - Feathers service for interacting with the [OpenWeatherMap API](https://openweathermap.org/api). Use historical, current and forecast weather data. (Plugins / APIs)
README
# feathers-openweathermap
![npm](https://img.shields.io/npm/v/feathers-openweathermap)
![GitHub Workflow Status](https://img.shields.io/github/workflow/status/fratzinger/feathers-openweathermap/Node.js%20CI)
![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/fratzinger/feathers-openweathermap)
![Code Climate coverage](https://img.shields.io/codeclimate/coverage/fratzinger/feathers-openweathermap)
![David](https://img.shields.io/david/fratzinger/feathers-openweathermap)
![npm](https://img.shields.io/npm/dm/feathers-openweathermap)
[![GitHub license](https://img.shields.io/github/license/fratzinger/feathers-openweathermap)](https://github.com/fratzinger/feathers-openweathermap/blob/master/LICENSE)> Ever needed weather information in your [feathers.js](www.feathersjs.com) app? No matter if historical, current or forecast data. This is thin layer around the [OpenWeatherMap API](https://openweathermap.org/api) wrapped in a `feathers.js` service.
## Supported APIs
- [Current weather](https://openweathermap.org/current) (*free*)
- [Onecall](https://openweathermap.org/api/one-call-api) (*free*)
- [Forecast](https://openweathermap.org/forecast5) (*free*)
- [Hourly forecast](https://openweathermap.org/api/hourly-forecast) (*Included in the Developer, Professional and Enterprise subscription plans*)
- [Daily forecast](https://openweathermap.org/forecast16) (*Included in all paid subscription plans*)
- [Climatic forecast](https://openweathermap.org/api/forecast30) (*Included in the Developer, Professional and Enterprise subscription plans*)
- [Air pollution](https://openweathermap.org/api/air-pollution) (*free*)## Installation
```bash
npm install feathers-openweathermap
```## Get your appid
Follow the instructions at: https://openweathermap.org/appid## Creating a service
```js
const { Service } = require('feathers-openweathermap');app.use("/weather", new Service({
appid: "YOUR_APP_ID",
}))
```### Service options
- `appid` (**required**) - your appid from [openweathermap.org](https://openweathermap.org/guide)
- `v` (*optional*, default: `'2.5'`) - the version of openweathermap
- `mode` (*optional*, default: `'json'`) - the results format (possible: `'json'`, `'xml'`, `'html'`)
- `lang` (*optional*, default: `'en'`) - the language of the result. [info](https://openweathermap.org/current#multi)
- `units` (*optional*, default: `'standard'`) - Units of measurement. `'standard'`, `'metric'` and `'imperial'` units are available.## Methods
The service exposes two standard methods, `find(params)` and `create(data, params)` and custom methods for `@feathersjs/feathers@5`. These methods are functionally equivalent. The `create()` method is added so that you can take advantage of the `.on('created')` service event.
When using the `find(params)` method, include the query as the params to be passed to the underlying OpenWeatherMap method.
### `find(params)`
#### [Current weather](https://openweathermap.org/current)
```js
// by city name https://openweathermap.org/current#name
app.service('weather').find({
query: {
endpoint: 'weather',
cityName: "Munich",
stateCode: "DE"
}
});// by city id https://openweathermap.org/current#cityid
app.service('weather').find({
query: {
endpoint: 'weather',
cityId: 2844588
}
});// by geo coordinates https://openweathermap.org/current#geo
app.service('weather').find({
query: {
endpoint: 'weather',
lat: 52.520008
lon: 13.404954
}
});// by zip code https://openweathermap.org/current#zip
app.service('weather').find({
query: {
endpoint: 'weather',
zipCode: "18057",
countryCode: "DE"
}
});
```#### [Onecall](https://openweathermap.org/api/one-call-api)
```js
app.service('weather').find({
query: {
endpoint: 'onecall',
lat: 52.520008,
lon: 13.404954
}
});
```#### [Forecast](https://openweathermap.org/forecast5)
```js
// by city name https://openweathermap.org/forecast5#name5
app.service('weather').find({
query: {
endpoint: 'forecast',
cityName: "Munich",
stateCode: "DE"
}
});// by city id https://openweathermap.org/forecast5#cityid5
app.service('weather').find({
query: {
endpoint: 'forecast',
cityId: 2844588
}
});// by geo coordinates https://openweathermap.org/forecast5#geo5
app.service('weather').find({
query: {
endpoint: 'forecast',
lat: 52.520008,
lon: 13.404954
}
});// by zip code https://openweathermap.org/forecast5#zip
app.service('weather').find({
query: {
endpoint: 'forecast',
zipCode: "18057",
countryCode: "DE"
}
});
```#### [Hourly forecast](https://openweathermap.org/api/hourly-forecast)
```js
// by city name https://openweathermap.org/api/hourly-forecast#name5
app.service('weather').find({
query: {
endpoint: 'forecast/hourly',
cityName: "Munich",
stateCode: "DE"
}
});// by city id https://openweathermap.org/api/hourly-forecast#cityid5
app.service('weather').find({
query: {
endpoint: 'forecast/hourly',
cityId: 2844588
}
});// by geo coordinates https://openweathermap.org/api/hourly-forecast#geo5
app.service('weather').find({
query: {
endpoint: 'forecast/hourly',
lat: 52.520008,
lon: 13.404954
}
});// by zip code https://openweathermap.org/api/hourly-forecast#zip
app.service('weather').find({
query: {
endpoint: 'forecast/hourly',
zipCode: "18057",
countryCode: "DE"
}
});
```#### [Daily forecast](https://openweathermap.org/forecast16)
```js
// by city name https://openweathermap.org/forecast16#name16
app.service('weather').find({
query: {
endpoint: 'forecast/daily',
cityName: "Munich",
stateCode: "DE"
}
});// by city id https://openweathermap.org/forecast16#cityid16
app.service('weather').find({
query: {
endpoint: 'forecast/daily',
cityId: 2844588
}
});// by geo coordinates https://openweathermap.org/forecast16#geo16
app.service('weather').find({
query: {
endpoint: 'forecast/daily',
lat: 52.520008,
lon: 13.404954
}
});// by zip code https://openweathermap.org/forecast16#zip
app.service('weather').find({
query: {
endpoint: 'forecast/daily',
zipCode: "18057",
countryCode: "DE"
}
});
```#### [Climatic forecast](https://openweathermap.org/api/forecast30)
```js
// by city name https://openweathermap.org/api/forecast30#name-year
app.service('weather').find({
query: {
endpoint: 'forecast/climatic',
cityName: "Munich",
stateCode: "DE"
}
});// by city id https://openweathermap.org/api/forecast30#cityid-year
app.service('weather').find({
query: {
endpoint: 'forecast/climatic',
cityId: 2844588
}
});// by geo coordinates https://openweathermap.org/api/forecast30#geo-year
app.service('weather').find({
query: {
endpoint: 'forecast/climatic',
lat: 52.520008,
lon: 13.404954
}
});// by zip code https://openweathermap.org/api/forecast30#zip-year
app.service('weather').find({
query: {
endpoint: 'forecast/climatic',
zipCode: "18057",
countryCode: "DE"
}
});
```#### [Air pollution](https://openweathermap.org/api/air-pollution)
```js
// current air pollution https://openweathermap.org/api/air-pollution#current
app.service('weather').find({
query: {
endpoint: "air_pollution",
lat: 52.520008,
lon: 13.404954
}
});// forecast air pollution https://openweathermap.org/api/air-pollution#current
app.service('weather').find({
query: {
endpoint: "air_pollution/forecast",
lat: 52.520008,
lon: 13.404954
}
});// historical air pollution https://openweathermap.org/api/air-pollution#history
app.service('weather').find({
query: {
endpoint: "air_pollution/history",
start: 1606223802,
end: 1606482999,
lat: 52.520008,
lon: 13.404954
}
});
```### `create(data)`
#### [Current weather](https://openweathermap.org/current)
```js
// by city name https://openweathermap.org/current#name
app.service('weather').create({
endpoint: 'weather',
cityName: "Munich",
stateCode: "DE"
});// by city id https://openweathermap.org/current#cityid
app.service('weather').create({
endpoint: 'weather',
cityId: 2844588
});// by geo coordinates https://openweathermap.org/current#geo
app.service('weather').create({
endpoint: 'weather',
lat: 52.520008,
lon: 13.404954
});// by zip code https://openweathermap.org/current#zip
app.service('weather').create({
endpoint: 'weather',
zipCode: "18057",
countryCode: "DE"
});
```#### [Onecall](https://openweathermap.org/api/one-call-api)
```js
app.service('weather').create({
endpoint: 'onecall',
lat: 52.520008,
lon: 13.404954
});
```#### [Forecast](https://openweathermap.org/forecast5)
```js
// by city name https://openweathermap.org/forecast5#name5
app.service('weather').create({
endpoint: 'forecast',
cityName: "Munich",
stateCode: "DE"
});// by city id https://openweathermap.org/forecast5#cityid5
app.service('weather').create({
endpoint: 'forecast',
cityId: 2844588
});// by geo coordinates https://openweathermap.org/forecast5#geo5
app.service('weather').create({
endpoint: 'forecast',
lat: 52.520008,
lon: 13.404954
});// by zip code https://openweathermap.org/forecast5#zip
app.service('weather').create({
endpoint: 'forecast',
zipCode: "18057",
countryCode: "DE"
});
```#### [Hourly forecast](https://openweathermap.org/api/hourly-forecast)
```js
// by city name https://openweathermap.org/api/hourly-forecast#name5
app.service('weather').create({
endpoint: 'forecast/hourly',
cityName: "Munich",
stateCode: "DE"
});// by city id https://openweathermap.org/api/hourly-forecast#cityid5
app.service('weather').create({
endpoint: 'forecast/hourly',
cityId: 2844588
});// by geo coordinates https://openweathermap.org/api/hourly-forecast#geo5
app.service('weather').create({
endpoint: 'forecast/hourly',
lat: 52.520008,
lon: 13.404954
});// by zip code https://openweathermap.org/api/hourly-forecast#zip
app.service('weather').create({
endpoint: 'forecast/hourly',
zipCode: "18057",
countryCode: "DE"
});
```#### [Daily forecast](https://openweathermap.org/forecast16)
```js
// by city name https://openweathermap.org/forecast16#name16
app.service('weather').create({
endpoint: 'forecast/daily',
cityName: "Munich",
stateCode: "DE"
});// by city id https://openweathermap.org/forecast16#cityid16
app.service('weather').create({
endpoint: 'forecast/daily',
cityId: 2844588
});// by geo coordinates https://openweathermap.org/forecast16#geo16
app.service('weather').create({
endpoint: 'forecast/daily',
lat: 52.520008,
lon: 13.404954
});// by zip code https://openweathermap.org/forecast16#zip
app.service('weather').create({
endpoint: 'forecast/daily',
zipCode: "18057",
countryCode: "DE"
});
```#### [Climatic forecast](https://openweathermap.org/api/forecast30)
```js
// by city name https://openweathermap.org/api/forecast30#name-year
app.service('weather').create({
endpoint: 'forecast/climatic',
cityName: "Munich",
stateCode: "DE"
});// by city id https://openweathermap.org/api/forecast30#cityid-year
app.service('weather').create({
endpoint: 'forecast/climatic',
cityId: 2844588
});// by geo coordinates https://openweathermap.org/api/forecast30#geo-year
app.service('weather').create({
endpoint: 'forecast/climatic',
lat: 52.520008
lon: 13.404954
});// by zip code https://openweathermap.org/api/forecast30#zip-year
app.service('weather').create({
endpoint: 'forecast/climatic',
zipCode: "18057",
countryCode: "DE"
});
```#### [Air pollution](https://openweathermap.org/api/air-pollution)
```js
// current air pollution https://openweathermap.org/api/air-pollution#current
app.service('weather').create({
endpoint: "air_pollution",
lat: 52.520008,
lon: 13.404954
});// forecast air pollution https://openweathermap.org/api/air-pollution#current
app.service('weather').create({
endpoint: "air_pollution/forecast",
lat: 52.520008,
lon: 13.404954
});// historical air pollution https://openweathermap.org/api/air-pollution#history
app.service('weather').create({
endpoint: "air_pollution/history",
start: 1606223802,
end: 1606482999,
lat: 52.520008,
lon: 13.404954
});
```### `currentWeatherData(data)`
```js
app.service('weather').currentWeatherData({
cityId: 2844588
});
```### `oneCall(data)`
```js
app.service('weather').oneCall({
lat: 52.520008,
lon: 13.404954
});
```### `fiveDay3HourForecast(data)`
```js
app.service('weather').fiveDay3HourForecast({
cityName: "Munich",
stateCode: "DE",
countryCode: "DE"
})
```### `hourlyForecast4Days(data)`
```js
app.service('weather').hourlyForecast4Days({
cityName: "Munich",
stateCode: "DE",
countryCode: "DE"
})
```### `dailyForecast16Days(data)`
```js
app.service('weather').dailyForecast16Days({
cityName: "Munich",
stateCode: "DE",
countryCode: "DE"
})
```### `climaticForecast30Days(data)`
```js
app.service('weather').climaticForecast30Days({
cityName: "Munich",
stateCode: "DE",
countryCode: "DE"
})
```### `airPollutionCurrent(data)`
```js
app.service('weather').airPollutionCurrent({
lat: 52.520008,
lon: 13.404954
});
```### `airPollutionForecast(data)`
```js
app.service('weather').airPollutionForecast({
lat: 52.520008,
lon: 13.404954
});
```### `airPollutionHistorical(data)`
```js
app.service('weather').airPollutionCurrent({
lat: 52.520008,
lon: 13.404954,
start: 1606223802,
end: 1606482999
});
```## Testing
Simply run `npm test` and all your tests in the `test/` directory will be run. This project is setup with vscode. You can use the debugger with breakpoints. To run tests locally, you'll need your own `appid`. You can get it here: https://openweathermap.org/appid. Add a `.env` file with:
```shell
APPID = YOUR_APP_ID
```## License
Licensed under the [MIT license](LICENSE).