created weather.js in node.js examples, modified README.md (#394)
This commit is contained in:
committed by
Soam Vasani
parent
e77a3946d7
commit
74e05ba3a1
@@ -82,7 +82,7 @@ This is a basic example of how you can easily use asynchronous requests in your
|
|||||||
$ fission function create --name stock --env nodejs --code stock.js
|
$ fission function create --name stock --env nodejs --code stock.js
|
||||||
|
|
||||||
# Map GET /stock to your new function
|
# Map GET /stock to your new function
|
||||||
$ fission route create --method GET --url /stock --function stock
|
$ fission route create --method POST --url /stock --function stock
|
||||||
|
|
||||||
# Run the function.
|
# Run the function.
|
||||||
$ curl -H "Content-Type: application/json" -X POST -d '{"symbol":"AAPL"}' http://$FISSION_ROUTER/stock
|
$ curl -H "Content-Type: application/json" -X POST -d '{"symbol":"AAPL"}' http://$FISSION_ROUTER/stock
|
||||||
@@ -103,3 +103,22 @@ $ fission fn create --name kubeEventsSlack --env nodejs --code kubeEventsSlack.j
|
|||||||
# Watch all services in the default namespace:
|
# Watch all services in the default namespace:
|
||||||
$ fission watch create --function kubeEventsSlack --type service --ns default
|
$ fission watch create --function kubeEventsSlack --type service --ns default
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## weather.js
|
||||||
|
|
||||||
|
In this example, the Yahoo Weather API is used to current weather at a given location.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Upload your function code to fission
|
||||||
|
$ fission function create --name weather --env nodejs --code weather.js
|
||||||
|
|
||||||
|
# Map GET /stock to your new function
|
||||||
|
$ fission route create --method POST --url /weather --function weather
|
||||||
|
|
||||||
|
# Run the function.
|
||||||
|
$ curl -H "Content-Type: application/json" -X POST -d '{"location":"Sieteiglesias, Spain"}' http://$FISSION_ROUTER/weather
|
||||||
|
|
||||||
|
{"text":"It is 2 celsius degrees in Sieteiglesias, Spain and Mostly Clear"}
|
||||||
|
```
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const rp = require('request-promise-native');
|
||||||
|
|
||||||
|
module.exports = async function (context) {
|
||||||
|
const stringBody = JSON.stringify(context.request.body);
|
||||||
|
const body = JSON.parse(stringBody);
|
||||||
|
const location = body.location;
|
||||||
|
|
||||||
|
if (!location) {
|
||||||
|
return {
|
||||||
|
status: 400,
|
||||||
|
body: {
|
||||||
|
text: 'You must provide a location.'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await rp(`https://query.yahooapis.com/v1/public/yql?q=select item.condition from weather.forecast where woeid in (select woeid from geo.places(1) where text="${location}") and u="c"&format=json`);
|
||||||
|
const condition = JSON.parse(response).query.results.channel.item.condition;
|
||||||
|
const text = condition.text;
|
||||||
|
const temperature = condition.temp;
|
||||||
|
return {
|
||||||
|
status: 200,
|
||||||
|
body: {
|
||||||
|
text: `It is ${temperature} celsius degrees in ${location} and ${text}`
|
||||||
|
},
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
body: e
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user