import 'package:nextcloud/nextcloud.dart';
import 'package:shared_preferences/shared_preferences.dart';

import '../../apiRequest.dart';
import '../../apiResponse.dart';

abstract class WebdavApi<T> extends ApiRequest {
  T genericParams;

  WebdavApi(this.genericParams) {
    establishWebdavConnection();
  }

  Future<ApiResponse> run();

  static Future<WebDavClient> webdav = establishWebdavConnection();
  static Future<String> webdavConnectString = buildWebdavConnectString();

  static Future<WebDavClient> establishWebdavConnection() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();

    return NextcloudClient("https://cloud.marianum-fulda.de/", username: preferences.getString("username"), password: preferences.getString("password"), loginName: preferences.getString("username")).webdav;
  }

  static Future<String> buildWebdavConnectString() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();

    return "https://${preferences.getString("username")}:${preferences.getString("password")}@cloud.marianum-fulda.de/remote.php/dav/files/${preferences.getString("username")}/";
  }
}