mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-03-05 20:49:04 -08:00
fix: owm allow location city name with spaces
- Escape the location parameter of the owm segment to allow for city names with spaces to function correctly. - Update the owm api url to use https.
This commit is contained in:
parent
321ff60bfd
commit
041c5d4d2d
|
@ -5,6 +5,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"net/url"
|
||||||
|
|
||||||
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
||||||
"github.com/jandedobbeleer/oh-my-posh/src/properties"
|
"github.com/jandedobbeleer/oh-my-posh/src/properties"
|
||||||
|
@ -89,6 +90,8 @@ func (d *Owm) getResult() (*owmDataResponse, error) {
|
||||||
|
|
||||||
location := d.props.GetString(Location, "De Bilt,NL")
|
location := d.props.GetString(Location, "De Bilt,NL")
|
||||||
|
|
||||||
|
location = url.QueryEscape(location)
|
||||||
|
|
||||||
if len(apikey) == 0 || len(location) == 0 {
|
if len(apikey) == 0 || len(location) == 0 {
|
||||||
return nil, errors.New("no api key or location found")
|
return nil, errors.New("no api key or location found")
|
||||||
}
|
}
|
||||||
|
@ -96,7 +99,7 @@ func (d *Owm) getResult() (*owmDataResponse, error) {
|
||||||
units := d.props.GetString(Units, "standard")
|
units := d.props.GetString(Units, "standard")
|
||||||
httpTimeout := d.props.GetInt(properties.HTTPTimeout, properties.DefaultHTTPTimeout)
|
httpTimeout := d.props.GetInt(properties.HTTPTimeout, properties.DefaultHTTPTimeout)
|
||||||
|
|
||||||
d.URL = fmt.Sprintf("http://api.openweathermap.org/data/2.5/weather?q=%s&units=%s&appid=%s", location, units, apikey)
|
d.URL = fmt.Sprintf("https://api.openweathermap.org/data/2.5/weather?q=%s&units=%s&appid=%s", location, units, apikey)
|
||||||
|
|
||||||
body, err := d.env.HTTPRequest(d.URL, nil, httpTimeout)
|
body, err := d.env.HTTPRequest(d.URL, nil, httpTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package segments
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
||||||
|
@ -13,7 +14,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
OWMWEATHERAPIURL = "http://api.openweathermap.org/data/2.5/weather?q=%s&units=metric&appid=key"
|
OWMWEATHERAPIURL = "https://api.openweathermap.org/data/2.5/weather?q=%s&units=metric&appid=key"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOWMSegmentSingle(t *testing.T) {
|
func TestOWMSegmentSingle(t *testing.T) {
|
||||||
|
@ -79,8 +80,9 @@ func TestOWMSegmentSingle(t *testing.T) {
|
||||||
properties.CacheTimeout: 0,
|
properties.CacheTimeout: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
url := fmt.Sprintf(OWMWEATHERAPIURL, tc.Location)
|
location := url.QueryEscape(tc.Location)
|
||||||
env.On("HTTPRequest", url).Return([]byte(tc.WeatherJSONResponse), tc.Error)
|
testURL := fmt.Sprintf(OWMWEATHERAPIURL, location)
|
||||||
|
env.On("HTTPRequest", testURL).Return([]byte(tc.WeatherJSONResponse), tc.Error)
|
||||||
env.On("Error", mock2.Anything)
|
env.On("Error", mock2.Anything)
|
||||||
|
|
||||||
o := &Owm{
|
o := &Owm{
|
||||||
|
@ -200,7 +202,8 @@ func TestOWMSegmentIcons(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
url := fmt.Sprintf(OWMWEATHERAPIURL, "AMSTERDAM,NL")
|
location := url.QueryEscape("AMSTERDAM,NL")
|
||||||
|
testURL := fmt.Sprintf(OWMWEATHERAPIURL, location)
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
env := &mock.MockedEnvironment{}
|
env := &mock.MockedEnvironment{}
|
||||||
|
@ -208,7 +211,7 @@ func TestOWMSegmentIcons(t *testing.T) {
|
||||||
weatherResponse := fmt.Sprintf(`{"weather":[{"icon":"%s"}],"main":{"temp":20.3}}`, tc.IconID)
|
weatherResponse := fmt.Sprintf(`{"weather":[{"icon":"%s"}],"main":{"temp":20.3}}`, tc.IconID)
|
||||||
expectedString := fmt.Sprintf("%s (20°C)", tc.ExpectedIconString)
|
expectedString := fmt.Sprintf("%s (20°C)", tc.ExpectedIconString)
|
||||||
|
|
||||||
env.On("HTTPRequest", url).Return([]byte(weatherResponse), nil)
|
env.On("HTTPRequest", testURL).Return([]byte(weatherResponse), nil)
|
||||||
|
|
||||||
o := &Owm{
|
o := &Owm{
|
||||||
props: properties.Map{
|
props: properties.Map{
|
||||||
|
@ -229,9 +232,9 @@ func TestOWMSegmentIcons(t *testing.T) {
|
||||||
env := &mock.MockedEnvironment{}
|
env := &mock.MockedEnvironment{}
|
||||||
|
|
||||||
weatherResponse := fmt.Sprintf(`{"weather":[{"icon":"%s"}],"main":{"temp":20.3}}`, tc.IconID)
|
weatherResponse := fmt.Sprintf(`{"weather":[{"icon":"%s"}],"main":{"temp":20.3}}`, tc.IconID)
|
||||||
expectedString := fmt.Sprintf("«%s (20°C)»(%s)", tc.ExpectedIconString, url)
|
expectedString := fmt.Sprintf("«%s (20°C)»(%s)", tc.ExpectedIconString, testURL)
|
||||||
|
|
||||||
env.On("HTTPRequest", url).Return([]byte(weatherResponse), nil)
|
env.On("HTTPRequest", testURL).Return([]byte(weatherResponse), nil)
|
||||||
|
|
||||||
o := &Owm{
|
o := &Owm{
|
||||||
props: properties.Map{
|
props: properties.Map{
|
||||||
|
|
Loading…
Reference in a new issue