import 'package:nextcloud/nextcloud.dart';

import '../../../model/accountData.dart';
import '../../../model/endpointData.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 {
    return NextcloudClient(Uri.parse("https://${EndpointData().nextcloud().full()}"), password: AccountData().getPassword(), loginName: AccountData().getUsername()).webdav;
  }

  static Future<String> buildWebdavConnectString() async {
    return "https://${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().full()}/remote.php/dav/files/${AccountData().getUsername()}/";
  }
}