forked from extern/homer
Fix openweather service
This commit is contained in:
parent
de814b9e04
commit
5bb84dcefb
46
dummy-data/openweather/weather
Normal file
46
dummy-data/openweather/weather
Normal 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
|
||||||
|
}
|
@ -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:
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user