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
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; |
|
}
|
|
|