2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.freeboxos.internal.api.rest;
15 import javax.ws.rs.core.UriBuilder;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.freeboxos.internal.api.FreeboxException;
20 import org.openhab.binding.freeboxos.internal.api.Response;
23 * The {@link SambaManager} is the Java class used to handle api requests related to Samba shares
25 * @author Gaƫl L'hopital - Initial contribution
28 public class SambaManager extends ConfigurableRest<SambaManager.Samba, SambaManager.ConfigResponse> {
29 private static final String PATH = "samba";
31 protected static class ConfigResponse extends Response<Samba> {
34 public static record Samba(boolean fileShareEnabled, boolean printShareEnabled, boolean logonEnabled,
35 @Nullable String logonUser, @Nullable String logonPassword, @Nullable String workgroup,
36 boolean smbv2Enabled) {
39 public SambaManager(FreeboxOsSession session, UriBuilder uriBuilder) throws FreeboxException {
40 super(session, LoginManager.Permission.NONE, ConfigResponse.class, uriBuilder.path(PATH), null);
43 public boolean setFileShare(boolean enable) throws FreeboxException {
44 Samba config = getConfig();
45 Samba newConfig = new Samba(enable, config.printShareEnabled, config.logonEnabled, config.logonUser,
46 config.logonPassword, config.workgroup, config.smbv2Enabled);
47 return setConfig(newConfig).fileShareEnabled();
50 public boolean setPrintShare(boolean enable) throws FreeboxException {
51 Samba config = getConfig();
52 Samba newConfig = new Samba(config.fileShareEnabled, enable, config.logonEnabled, config.logonUser,
53 config.logonPassword, config.workgroup, config.smbv2Enabled);
54 return setConfig(newConfig).printShareEnabled();