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.

67 lines
2.6 KiB

2 years ago
# nextcloud
A Nextcloud API client written in Dart.
2 years ago
## Installation
In the future this code will be available at https://pub.dev/packages/nextcloud, but for now you have to include it via git in your pubspec.yaml:
```yaml
dependencies:
nextcloud:
git:
url: https://github.com/nextcloud/neon
path: packages/nextcloud
ref: $COMMIT
2 years ago
dependency_overrides:
dynamite_runtime:
git:
url: https://github.com/nextcloud/neon
2 years ago
path: packages/dynamite/dynamite_runtime
ref: $COMMIT
```
You can either remove the `ref` or use a commit hash. It's not recommended to remove it, because then the version will be updated very often.
## Usage
### Authentication
There are multiple ways to authenticate.
First there is HTTP Basic auth which works with the normal user credentials (e-mail and other identifiers also work):
```dart
final client = NextcloudClient(
Uri.parse('http://localhost'),
loginName: 'admin',
password: 'admin',
);
```
Secondly there is Http Bearer auth which works with app passwords:
```dart
final client = NextcloudClient(
Uri.parse('http://localhost'),
loginName: 'admin',
appPassword: 'xxxxx-xxxxx-xxxxx-xxxx-xxxxx',
);
```
Not all endpoints work with just HTTP Basic auth, so it is advised to use app passwords obtained either directly in the Web UI by the user or using the [login flow](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/LoginFlow/index.html#login-flow-v2).
Some endpoints do not need any authentication at all or provide extended information when the request is optionally authenticated.
### Endpoints
It is not guaranteed that an API request will work unless the app is installed and enabled on the server (and has a supported version).
To get an easier overview of the available endpoints you can browse the [server OpenAPI documentation](https://docs.nextcloud.com/server/latest/developer_manual/_static/openapi.html), but be aware that the package might not be in sync with it.
Alternatively you can also go to https://pub.dev/documentation/nextcloud/latest (once the package has been republished at https://pub.dev/packages/nextcloud).
The endpoints are grouped by app and most apps also group their endpoints again.
They can be accessed using getters on the `NextcloudClient`.
For an example checkout the [example](./example/example.dart).
2 years ago
## Development
Except for WebDAV all client code is generated using OpenAPI specifications which can be found in the `lib/src/api/` folder.
These OpenAPI specifications are [generated](https://github.com/nextcloud/openapi-extractor) from the PHP source code.