| Parameter | Type | Description |
|--------------|---------------|--------------------------------------------------------------------------------------------|
-| features | String | The perimeter of functionalities given to the binding WEATHER, AIR_CARE, ENERGY, SECURITY |
| readFriends | Boolean | Enables or disables the discovery of guest weather stations. |
*/
@NonNullByDefault
public class AuthenticationApi extends RestManager {
+ private static final String ALL_SCOPES = FeatureArea.toScopeString(FeatureArea.AS_SET);
private static final UriBuilder OAUTH_BUILDER = getApiBaseBuilder().path(PATH_OAUTH);
private static final UriBuilder AUTH_BUILDER = OAUTH_BUILDER.clone().path(SUB_PATH_AUTHORIZE);
private static final URI TOKEN_URI = OAUTH_BUILDER.clone().path(SUB_PATH_TOKEN).build();
this.scheduler = scheduler;
}
- public String authorize(ApiHandlerConfiguration credentials, Set<FeatureArea> features, @Nullable String code,
- @Nullable String redirectUri) throws NetatmoException {
- String clientId = credentials.clientId;
- String clientSecret = credentials.clientSecret;
- if (!(clientId.isBlank() || clientSecret.isBlank())) {
- Map<String, String> params = new HashMap<>(Map.of(SCOPE, toScopeString(features)));
+ public String authorize(ApiHandlerConfiguration credentials, @Nullable String code, @Nullable String redirectUri)
+ throws NetatmoException {
+ if (!(credentials.clientId.isBlank() || credentials.clientSecret.isBlank())) {
+ Map<String, String> params = new HashMap<>(Map.of(SCOPE, ALL_SCOPES));
String refreshToken = credentials.refreshToken;
if (!refreshToken.isBlank()) {
params.put(REFRESH_TOKEN, refreshToken);
}
}
if (params.size() > 1) {
- return requestToken(clientId, clientSecret, params);
+ return requestToken(credentials.clientId, credentials.clientSecret, params);
}
}
throw new IllegalArgumentException("Inconsistent configuration state, please file a bug report.");
return tokenResponse.isPresent();
}
- private static String toScopeString(Set<FeatureArea> features) {
- return FeatureArea.toScopeString(features.isEmpty() ? FeatureArea.AS_SET : features);
- }
-
- public static UriBuilder getAuthorizationBuilder(String clientId, Set<FeatureArea> features) {
- return AUTH_BUILDER.clone().queryParam(CLIENT_ID, clientId).queryParam(SCOPE, toScopeString(features))
- .queryParam(STATE, clientId);
+ public static UriBuilder getAuthorizationBuilder(String clientId) {
+ return AUTH_BUILDER.clone().queryParam(CLIENT_ID, clientId).queryParam(SCOPE, ALL_SCOPES).queryParam(STATE,
+ clientId);
}
}
*/
package org.openhab.binding.netatmo.internal.config;
-import java.util.Set;
-
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.FeatureArea;
/**
* The {@link BindingConfiguration} is responsible for holding configuration of the binding itself.
*/
@NonNullByDefault
public class BindingConfiguration {
- public Set<FeatureArea> features = Set.of();
public boolean readFriends = false;
public void update(BindingConfiguration newConfig) {
- this.features = newConfig.features;
this.readFriends = newConfig.readFriends;
}
}
try {
logger.debug("Connecting to Netatmo API.");
- String refreshToken = connectApi.authorize(configuration, bindingConf.features, code, redirectUri);
+ String refreshToken = connectApi.authorize(configuration, code, redirectUri);
if (configuration.refreshToken.isBlank()) {
Configuration thingConfig = editConfiguration();
}
public UriBuilder formatAuthorizationUrl() {
- return AuthenticationApi.getAuthorizationBuilder(getId(), bindingConf.features);
+ return AuthenticationApi.getAuthorizationBuilder(getId());
}
@Override
<config-description>
- <parameter name="features" type="text" required="true" multiple="true">
- <label>Feature Area</label>
- <description>Defines the set of capabilities you want to operate on.</description>
- <options>
- <option value="AIR_CARE">Air Care</option>
- <option value="WEATHER">Weather</option>
- <option value="ENERGY">Energy</option>
- <option value="SECURITY">Security</option>
- </options>
- <limitToOptions>true</limitToOptions>
- <default>WEATHER</default>
- </parameter>
-
<parameter name="readFriends" type="boolean">
<label>Access Guests</label>
<description>For Weather Stations: A friend gave you access to their Netatmo Weather Station.</description>
# binding config
-binding.config.netatmo.features.label = Feature Area
-binding.config.netatmo.features.description = Defines the set of capabilities you want to operate on.
-binding.config.netatmo.features.option.AIR_CARE = Air Care
-binding.config.netatmo.features.option.WEATHER = Weather
-binding.config.netatmo.features.option.ENERGY = Energy
-binding.config.netatmo.features.option.SECURITY = Security
binding.config.netatmo.readFriends.label = Access Guests
binding.config.netatmo.readFriends.description = For Weather Stations: A friend gave you access to their Netatmo Weather Station.
# binding config
-binding.config.netatmo.features.label = Area Feature
-binding.config.netatmo.features.description = Definisce il set di funzionalità su cui si desidera operare.
-binding.config.netatmo.features.option.AIR_CARE = Cura Aria
-binding.config.netatmo.features.option.WEATHER = Meteo
-binding.config.netatmo.features.option.ENERGY = Energia
-binding.config.netatmo.features.option.SECURITY = Sicurezza
binding.config.netatmo.readFriends.label = Accesso Ospiti
binding.config.netatmo.readFriends.description = Per le Stazioni Meteorologiche\: Un amico ti ha dato accesso alla sua Stazione Meteo Netatmo.