Compare commits

..

2 Commits

Author SHA1 Message Date
7f69e6e1c2
Add test .drone.yml
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-01 09:11:31 -05:00
53a6efa13e
weather: Use variables for error messages 2022-08-28 18:34:14 -05:00
2 changed files with 23 additions and 10 deletions

10
.drone.yml Normal file
View File

@ -0,0 +1,10 @@
kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world

View File

@ -2,6 +2,7 @@ package weather
import (
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
@ -23,6 +24,10 @@ const (
var (
EndpointWeather = lib.BuildURI(OpenWeatherMapURI, "/data/2.5/weather")
ErrUnmarshal = errors.New("unmarshaling JSON failed")
ErrReadingResponse = errors.New("reading HTTP response failed")
ErrRequestFailed = errors.New("HTTP request failed")
ErrCreateRequestFailed = errors.New("failed to create new HTTP request")
)
func NewClient(token string) *WeatherClient {
@ -30,13 +35,11 @@ func NewClient(token string) *WeatherClient {
}
func (c *WeatherClient) Get(loc string) (w Weather, err error) {
var (
werr WeatherError
)
var werr WeatherError
req, err := http.NewRequest("GET", EndpointWeather, nil)
if err != nil {
err = fmt.Errorf("failed to create new request: %s", err)
err = fmt.Errorf("%s: %s", ErrCreateRequestFailed, err)
return
}
@ -47,22 +50,22 @@ func (c *WeatherClient) Get(loc string) (w Weather, err error) {
resp, err := http.DefaultClient.Do(req)
if err != nil {
err = fmt.Errorf("HTTP request failed: %s", err)
err = fmt.Errorf("%s: %s", ErrRequestFailed, err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
err = fmt.Errorf("reading HTTP response failed: %s", err)
err = fmt.Errorf("%s: %s", ErrReadingResponse, err)
return
}
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
err = json.Unmarshal(body, &werr)
if err != nil {
log.Debugf("%s", body)
err = fmt.Errorf("unmarshaling JSON failed: %s", err)
err = fmt.Errorf("%s: %s", ErrUnmarshal, err)
return
}
@ -73,7 +76,7 @@ func (c *WeatherClient) Get(loc string) (w Weather, err error) {
err = json.Unmarshal(body, &w)
if err != nil {
log.Debugf("%s", body)
log.Errorf("unmarshaling JSON failed: %s", err)
err = fmt.Errorf("%s: %s", ErrUnmarshal, err)
return
}