Fix openweather service

This commit is contained in:
Bastien Wirtz 2022-10-30 14:48:45 +01:00
parent de814b9e04
commit 5bb84dcefb
4 changed files with 66 additions and 9 deletions

View File

@ -0,0 +1,46 @@
{
"coord": {
"lon": 4.5833,
"lat": 45.75
},
"weather": [
{
"id": 804,
"main": "Clouds",
"description": "overcast clouds",
"icon": "04d"
}
],
"base": "stations",
"main": {
"temp": 23,
"feels_like": 22.3,
"temp_min": 21.75,
"temp_max": 25.03,
"pressure": 1019,
"humidity": 36,
"sea_level": 1019,
"grnd_level": 957
},
"visibility": 10000,
"wind": {
"speed": 2.29,
"deg": 174,
"gust": 6.22
},
"clouds": {
"all": 97
},
"dt": 1667136939,
"sys": {
"type": 2,
"id": 2005747,
"country": "FR",
"sunrise": 1667110705,
"sunset": 1667147524
},
"timezone": 3600,
"id": 2996943,
"name": "Arrondissement de Lyon",
"cod": 200
}

View File

@ -100,6 +100,12 @@ services:
keywords: "demo" keywords: "demo"
url: "#" url: "#"
target: "_blank" target: "_blank"
- name: "Weather"
location: "Lyon"
apikey: "xxxxxxxxxxxx" # insert your own API key here. Request one from https://openweathermap.org/api.
units: "metric"
endpoint: "https://homer-demo-content.netlify.app/openweather/weather"
type: "OpenWeather"
- name: "interesting links" - name: "interesting links"
icon: "fas fa-solid fa-arrow-up-right-from-square" icon: "fas fa-solid fa-arrow-up-right-from-square"
items: items:

View File

@ -23,7 +23,7 @@
<p class="title is-4">{{ name }}</p> <p class="title is-4">{{ name }}</p>
<p class="subtitle is-6"> <p class="subtitle is-6">
<span> <span>
{{ temp | tempSuffix(this.item.units) }} {{ temperature }}
</span> </span>
<span class="location-time"> <span class="location-time">
{{ locationTime }} {{ locationTime }}
@ -68,15 +68,13 @@ export default {
} }
return `${this.temp} ${unit}`; return `${this.temp} ${unit}`;
}, },
},
created() {
this.fetchWeather();
},
computed: {
locationTime: function () { locationTime: function () {
return this.calcTime(this.timezoneOffset); return this.calcTime(this.timezoneOffset);
}, },
}, },
created() {
this.fetchWeather();
},
methods: { methods: {
fetchWeather: async function () { fetchWeather: async function () {
let locationQuery; let locationQuery;
@ -89,7 +87,11 @@ export default {
} }
const apiKey = this.item.apikey || this.item.apiKey; const apiKey = this.item.apikey || this.item.apiKey;
const url = `https://api.openweathermap.org/data/2.5/weather?${locationQuery}&appid=${apiKey}&units=${this.item.units}`;
let url = `https://api.openweathermap.org/data/2.5/weather?${locationQuery}&appid=${apiKey}&units=${this.item.units}`;
if (this.item.endpoint) {
url = this.item.endpoint;
}
fetch(url) fetch(url)
.then((response) => { .then((response) => {
if (!response.ok) { if (!response.ok) {

View File

@ -29,9 +29,12 @@ export default {
}, },
methods: { methods: {
fetchStatus: async function () { fetchStatus: async function () {
const method = typeof this.item.method === 'string' ? this.item.method.toUpperCase() : 'HEAD'; const method =
typeof this.item.method === "string"
? this.item.method.toUpperCase()
: "HEAD";
if (!['GET', 'HEAD', 'OPTION'].includes(method)) { if (!["GET", "HEAD", "OPTION"].includes(method)) {
console.error(`Ping: ${method} is not a supported HTTP method`); console.error(`Ping: ${method} is not a supported HTTP method`);
return; return;
} }