package com.github.xsavikx.androidscreencast.dagger;
import com.github.xsavikx.androidscreencast.api.AndroidDevice;
import com.github.xsavikx.androidscreencast.api.AndroidDeviceImpl;
import com.github.xsavikx.androidscreencast.api.command.executor.CommandExecutor;
import com.github.xsavikx.androidscreencast.api.command.executor.ShellCommandExecutor;
import com.github.xsavikx.androidscreencast.api.command.factory.AdbInputCommandFactory;
import com.github.xsavikx.androidscreencast.api.command.factory.InputCommandFactory;
import com.github.xsavikx.androidscreencast.configuration.ApplicationConfiguration;
import dagger.Module;
import dagger.Provides;
import javax.inject.Named;
import javax.inject.Singleton;
import static com.github.xsavikx.androidscreencast.configuration.ApplicationConfigurationProperty.*;
import static com.github.xsavikx.androidscreencast.configuration.ApplicationConfigurationPropertyKeys.*;
@Singleton
@Module
public class ApiModule {
@Singleton
@Named(ADB_COMMAND_TIMEOUT_KEY)
@Provides
public static long adbCommandTimeout(ApplicationConfiguration applicationConfiguration) {
return Long.valueOf(applicationConfiguration.getProperty(ADB_COMMAND_TIMEOUT));
}
@Singleton
@Named(ADB_DEVICE_TIMEOUT_KEY)
@Provides
public static long adbDeviceTimeout(ApplicationConfiguration applicationConfiguration) {
return Long.valueOf(applicationConfiguration.getProperty(ADB_DEVICE_TIMEOUT));
}
@Singleton
@Named(ADB_PATH_KEY)
@Provides
public static String adbPath(ApplicationConfiguration applicationConfiguration) {
return applicationConfiguration.getProperty(ADB_PATH);
}
@Singleton
@Provides
public static CommandExecutor commandExecutor(ShellCommandExecutor shellCommandExecutor) {
return shellCommandExecutor;
}
@Singleton
@Provides
public static AndroidDevice androidDevice(AndroidDeviceImpl androidDevice) {
return androidDevice;
}
@Singleton
@Provides
public static InputCommandFactory inputCommandFactory(AdbInputCommandFactory adbInputCommandFactory) {
return adbInputCommandFactory;
}
}