A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

54 lines
1.7 KiB

import 'package:dynamite_runtime/http_client.dart';
/// Different app types to register for
enum AppType {
/// Will only receive Talk notifications
talk('Mozilla/5.0 (Android) Nextcloud-Talk'),
/// Will receive all notifications except Talk notifications if another Talk
/// app is already registered for the user
nextcloud('Mozilla/5.0 (Android) Nextcloud-android'),
/// Default. Same problem with notifications as the [nextcloud] type
unknown(null);
// ignore: public_member_api_docs
const AppType(this.userAgent);
// ignore: public_member_api_docs
final String? userAgent;
}
// ignore: public_member_api_docs
class NextcloudClient extends DynamiteClient {
// ignore: public_member_api_docs
NextcloudClient(
super.baseURL, {
this.loginName,
final String? password,
final String? appPassword,
final String? language,
final AppType appType = AppType.unknown,
final String? userAgentOverride,
super.cookieJar,
}) : super(
baseHeaders: language != null ? {'Accept-Language': language} : null,
userAgent: userAgentOverride ?? appType.userAgent,
authentications: [
if (appPassword != null) ...[
DynamiteHttpBearerAuthentication(
token: appPassword,
),
],
if (loginName != null && (password ?? appPassword) != null) ...[
DynamiteHttpBasicAuthentication(
username: loginName,
password: (password ?? appPassword)!,
),
],
],
);
/// Identifier used for authentication. This can be the username or email or something else.
final String? loginName;
}