Proxy support for AWN/Wunderground
This commit is contained in:
		| @@ -13,7 +13,10 @@ import ( | ||||
|  | ||||
| type WUProvider struct{} | ||||
|  | ||||
| const providerName = "weatherunderground" | ||||
| const ( | ||||
| 	providerName = "weatherunderground" | ||||
| 	wuURL        = "http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php" | ||||
| ) | ||||
|  | ||||
| func (wu *WUProvider) Name() string { | ||||
| 	return providerName | ||||
| @@ -32,6 +35,29 @@ func (wu *WUProvider) ReqToWeather(_ context.Context, r *http.Request) ( | ||||
| 	return MapWUUpdate(wuUpdate), nil | ||||
| } | ||||
|  | ||||
| func (wu *WUProvider) ProxyReq(ctx context.Context, update *weather.WeatherUpdate) error { | ||||
| 	// tracer := otel.GetTracer(ctx, "wuProvider", "proxyReq") | ||||
| 	// ctx, span := tracer.Start(ctx, "proxyToWunderground") | ||||
| 	// defer span.End() | ||||
| 	// | ||||
| 	// resp, err := resty.New().R(). | ||||
| 	// 	SetContext(ctx). | ||||
| 	// 	SetQueryParamsFromValues(r.URL.Query()). | ||||
| 	// 	Get(wuURL) | ||||
| 	// if err != nil { | ||||
| 	// 	span.SetStatus(codes.Error, err.Error()) | ||||
| 	// 	span.RecordError(err) | ||||
| 	// } | ||||
| 	// | ||||
| 	// span.SetAttributes( | ||||
| 	// 	attribute.Int("statusCode", resp.StatusCode()), | ||||
| 	// 	attribute.String("body", string(resp.Body())), | ||||
| 	// ) | ||||
| 	// | ||||
| 	// return err | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func MapWUUpdate(wuUpdate *WundergroundUpdate) *weather.WeatherUpdate { | ||||
| 	updateTime := time.Now() | ||||
|  | ||||
| @@ -42,25 +68,32 @@ func MapWUUpdate(wuUpdate *WundergroundUpdate) *weather.WeatherUpdate { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	credentials := make(map[string]string) | ||||
| 	if wuUpdate.ID != nil && wuUpdate.Password != nil { | ||||
| 		credentials["ID"] = *wuUpdate.ID | ||||
| 		credentials["Password"] = *wuUpdate.Password | ||||
| 	} | ||||
|  | ||||
| 	return &weather.WeatherUpdate{ | ||||
| 		DateUTC:         &updateTime, | ||||
| 		StationID:       wuUpdate.ID, | ||||
| 		StationType:     wuUpdate.SoftwareType, | ||||
| 		TempOutdoorF:    wuUpdate.Tempf, | ||||
| 		HumidityOudoor:  wuUpdate.Humidity, | ||||
| 		WindSpeedMPH:    wuUpdate.WindGustMPH, | ||||
| 		WindGustMPH:     wuUpdate.WindGustMPH, | ||||
| 		WindDir:         wuUpdate.WindDir, | ||||
| 		UV:              wuUpdate.UV, | ||||
| 		SolarRadiation:  wuUpdate.SolarRadiation, | ||||
| 		HourlyRainIn:    wuUpdate.RainIn, | ||||
| 		DailyRainIn:     wuUpdate.DailyRainIn, | ||||
| 		WeeklyRainIn:    wuUpdate.WeeklyRainIn, | ||||
| 		MonthlyRainIn:   wuUpdate.MonthlyRainIn, | ||||
| 		YearlyRainIn:    wuUpdate.YearlyRainIn, | ||||
| 		TempIndoorF:     wuUpdate.IndoorTempF, | ||||
| 		HumidityIndoor:  wuUpdate.IndoorHumidity, | ||||
| 		BaromRelativeIn: wuUpdate.BaromIn, | ||||
| 		DateUTC:                   &updateTime, | ||||
| 		StationID:                 wuUpdate.ID, | ||||
| 		StationType:               wuUpdate.SoftwareType, | ||||
| 		TempOutdoorF:              wuUpdate.Tempf, | ||||
| 		HumidityOudoor:            wuUpdate.Humidity, | ||||
| 		WindSpeedMPH:              wuUpdate.WindGustMPH, | ||||
| 		WindGustMPH:               wuUpdate.WindGustMPH, | ||||
| 		WindDir:                   wuUpdate.WindDir, | ||||
| 		UV:                        wuUpdate.UV, | ||||
| 		SolarRadiation:            wuUpdate.SolarRadiation, | ||||
| 		HourlyRainIn:              wuUpdate.RainIn, | ||||
| 		DailyRainIn:               wuUpdate.DailyRainIn, | ||||
| 		WeeklyRainIn:              wuUpdate.WeeklyRainIn, | ||||
| 		MonthlyRainIn:             wuUpdate.MonthlyRainIn, | ||||
| 		YearlyRainIn:              wuUpdate.YearlyRainIn, | ||||
| 		TempIndoorF:               wuUpdate.IndoorTempF, | ||||
| 		HumidityIndoor:            wuUpdate.IndoorHumidity, | ||||
| 		BaromRelativeIn:           wuUpdate.BaromIn, | ||||
| 		WeatherServiceCredentials: credentials, | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user