import org.eclipse.jetty.util.Fields;
import org.openhab.binding.renault.internal.RenaultConfiguration;
import org.openhab.binding.renault.internal.api.Car.ChargingMode;
+import org.openhab.binding.renault.internal.api.exceptions.RenaultAPIGatewayException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultActionException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultForbiddenException;
}
}
- public void getVehicle(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getVehicle(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId + "/vehicles/"
+ config.vin + "/details?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void getBatteryStatus(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getBatteryStatus(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId
+ "/kamereon/kca/car-adapter/v2/cars/" + config.vin + "/battery-status?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void getHvacStatus(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getHvacStatus(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId
+ "/kamereon/kca/car-adapter/v1/cars/" + config.vin + "/hvac-status?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void getCockpit(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getCockpit(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId
+ "/kamereon/kca/car-adapter/v2/cars/" + config.vin + "/cockpit?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void getLocation(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getLocation(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId
+ "/kamereon/kca/car-adapter/v1/cars/" + config.vin + "/location?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void getLockStatus(Car car)
- throws RenaultForbiddenException, RenaultUpdateException, RenaultNotImplementedException {
+ public void getLockStatus(Car car) throws RenaultForbiddenException, RenaultUpdateException,
+ RenaultNotImplementedException, RenaultAPIGatewayException {
JsonObject responseJson = getKamereonResponse("/commerce/v1/accounts/" + kamereonaccountId
+ "/kamereon/kca/car-adapter/v1/cars/" + config.vin + "/lock-status?country=" + getCountry(config));
if (responseJson != null) {
}
}
- public void actionHvacOn(double hvacTargetTemperature)
- throws RenaultForbiddenException, RenaultNotImplementedException, RenaultActionException {
+ public void actionHvacOn(double hvacTargetTemperature) throws RenaultForbiddenException,
+ RenaultNotImplementedException, RenaultActionException, RenaultAPIGatewayException {
final String path = "/commerce/v1/accounts/" + kamereonaccountId + "/kamereon/kca/car-adapter/v1/cars/"
+ config.vin + "/actions/hvac-start?country=" + getCountry(config);
postKamereonRequest(path,
+ hvacTargetTemperature + "\"}}}");
}
- public void actionChargeMode(ChargingMode mode)
- throws RenaultForbiddenException, RenaultNotImplementedException, RenaultActionException {
+ public void actionChargeMode(ChargingMode mode) throws RenaultForbiddenException, RenaultNotImplementedException,
+ RenaultActionException, RenaultAPIGatewayException {
final String apiMode = ChargingMode.SCHEDULE_MODE.equals(mode) ? CHARGING_MODE_SCHEDULE : CHARGING_MODE_ALWAYS;
final String path = "/commerce/v1/accounts/" + kamereonaccountId + "/kamereon/kca/car-adapter/v1/cars/"
+ config.vin + "/actions/charge-mode?country=" + getCountry(config);
"{\"data\":{\"type\":\"ChargeMode\",\"attributes\":{\"action\":\"" + apiMode + "\"}}}");
}
- public void actionPause(boolean mode)
- throws RenaultForbiddenException, RenaultNotImplementedException, RenaultActionException {
+ public void actionPause(boolean mode) throws RenaultForbiddenException, RenaultNotImplementedException,
+ RenaultActionException, RenaultAPIGatewayException {
final String apiMode = mode ? "pause" : "resume";
final String path = "/commerce/v1/accounts/" + kamereonaccountId + "/kamereon/kcm/v1/vehicles/" + config.vin
"{\"data\":{\"type\":\"ChargePauseResume\",\"attributes\":{\"action\":\"" + apiMode + "\"}}}");
}
- private void postKamereonRequest(final String path, final String content)
- throws RenaultForbiddenException, RenaultNotImplementedException, RenaultActionException {
+ private void postKamereonRequest(final String path, final String content) throws RenaultForbiddenException,
+ RenaultNotImplementedException, RenaultActionException, RenaultAPIGatewayException {
Request request = httpClient.newRequest(this.constants.getKamereonRootUrl() + path).method(HttpMethod.POST)
.header("Content-type", "application/vnd.api+json").header("apikey", this.config.kamereonApiKey)
.header("x-kamereon-authorization", "Bearer " + kamereonToken).header("x-gigya-id_token", jwt)
}
}
- private @Nullable JsonObject getKamereonResponse(String path)
- throws RenaultForbiddenException, RenaultNotImplementedException, RenaultUpdateException {
+ private @Nullable JsonObject getKamereonResponse(String path) throws RenaultForbiddenException,
+ RenaultNotImplementedException, RenaultUpdateException, RenaultAPIGatewayException {
Request request = httpClient.newRequest(this.constants.getKamereonRootUrl() + path).method(HttpMethod.GET)
.header("Content-type", "application/vnd.api+json").header("apikey", this.config.kamereonApiKey)
.header("x-kamereon-authorization", "Bearer " + kamereonToken).header("x-gigya-id_token", jwt);
}
private void checkResponse(ContentResponse response)
- throws RenaultForbiddenException, RenaultNotImplementedException {
+ throws RenaultForbiddenException, RenaultNotImplementedException, RenaultAPIGatewayException {
switch (response.getStatus()) {
case HttpStatus.FORBIDDEN_403:
throw new RenaultForbiddenException(
case HttpStatus.NOT_IMPLEMENTED_501:
throw new RenaultNotImplementedException("Kamereon request not implemented");
case HttpStatus.BAD_GATEWAY_502:
- throw new RenaultNotImplementedException("Kamereon request failed");
+ throw new RenaultAPIGatewayException("Kamereon request failed");
default:
break;
}
import org.openhab.binding.renault.internal.api.Car;
import org.openhab.binding.renault.internal.api.Car.ChargingMode;
import org.openhab.binding.renault.internal.api.MyRenaultHttpSession;
+import org.openhab.binding.renault.internal.api.exceptions.RenaultAPIGatewayException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultActionException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultException;
import org.openhab.binding.renault.internal.api.exceptions.RenaultForbiddenException;
} catch (RenaultNotImplementedException e) {
logger.warn("Disabling unsupported HVAC status update.");
car.setDisableHvac(true);
- } catch (RenaultForbiddenException | RenaultUpdateException e) {
+ } catch (RenaultForbiddenException | RenaultUpdateException | RenaultAPIGatewayException e) {
logger.warn("Error updating HVAC status.", e);
}
}
} catch (RenaultNotImplementedException e) {
logger.warn("Disabling unsupported location update.");
car.setDisableLocation(true);
- } catch (IllegalArgumentException | RenaultForbiddenException | RenaultUpdateException e) {
+ } catch (IllegalArgumentException | RenaultForbiddenException | RenaultUpdateException
+ | RenaultAPIGatewayException e) {
logger.warn("Error updating location.", e);
}
}
} catch (RenaultNotImplementedException e) {
logger.warn("Disabling unsupported cockpit status update.");
car.setDisableCockpit(true);
- } catch (RenaultForbiddenException | RenaultUpdateException e) {
+ } catch (RenaultForbiddenException | RenaultUpdateException | RenaultAPIGatewayException e) {
logger.warn("Error updating cockpit status.", e);
}
}
} catch (RenaultNotImplementedException e) {
logger.warn("Disabling unsupported battery update.");
car.setDisableBattery(true);
- } catch (RenaultForbiddenException | RenaultUpdateException e) {
+ } catch (RenaultForbiddenException | RenaultUpdateException | RenaultAPIGatewayException e) {
logger.warn("Error updating battery status.", e);
}
}
updateState(CHANNEL_LOCKED, UnDefType.UNDEF);
break;
}
- } catch (RenaultNotImplementedException e) {
+ } catch (RenaultNotImplementedException | RenaultAPIGatewayException e) {
+ // If not supported API returns a Bad Gateway for this call.
updateState(CHANNEL_LOCKED, UnDefType.UNDEF);
logger.warn("Disabling unsupported lock status update.");
car.setDisableLockStatus(true);