1
0
Fork 0
mirror of synced 2024-08-18 03:31:49 +12:00
appwrite/app/sdks/flutter-dart/lib/services/storage.dart

114 lines
4.6 KiB
Dart
Raw Normal View History

2020-03-27 02:20:07 +13:00
import 'dart:html';
2020-01-31 05:18:59 +13:00
import "package:appwrite/service.dart";
import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
2020-03-27 02:20:07 +13:00
import 'package:meta/meta.dart';
import '../enums.dart';
2020-01-31 05:18:59 +13:00
class Storage extends Service {
Storage(Client client): super(client);
/// Get a list of all the user files. You can use the query params to filter
/// your results. On admin mode, this endpoint will return a list of all of the
/// project files. [Learn more about different API modes](/docs/admin).
2020-03-27 02:20:07 +13:00
Future<Response> listFiles({String search = null, int limit = 25, int offset = null, String orderType = 'ASC'}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files';
Map<String, dynamic> params = {
'search': search,
'limit': limit,
'offset': offset,
'orderType': orderType,
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.get, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Create a new file. The user who creates the file will automatically be
/// assigned to read and write access unless he has passed custom values for
/// read and write arguments.
2020-03-27 02:20:07 +13:00
Future<Response> createFile({@required File file, @required List read, @required List write}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files';
Map<String, dynamic> params = {
'file': file,
'read': read,
'write': write,
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.post, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Get file by its unique ID. This endpoint response returns a JSON object
/// with the file metadata.
2020-03-27 02:20:07 +13:00
Future<Response> getFile({@required String fileId}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.get, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Update file by its unique ID. Only users with write permissions have access
/// to update this resource.
2020-03-27 02:20:07 +13:00
Future<Response> updateFile({@required String fileId, @required List read, @required List write}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
'read': read,
'write': write,
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.put, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Delete a file by its unique ID. Only users with write permissions have
/// access to delete this resource.
2020-03-27 02:20:07 +13:00
Future<Response> deleteFile({@required String fileId}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.delete, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Get file content by its unique ID. The endpoint response return with a
/// 'Content-Disposition: attachment' header that tells the browser to start
/// downloading the file to user downloads directory.
2020-03-27 02:20:07 +13:00
Future<Response> getFileDownload({@required String fileId}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}/download'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.get, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Get a file preview image. Currently, this method supports preview for image
/// files (jpg, png, and gif), other supported formats, like pdf, docs, slides,
/// and spreadsheets, will return the file icon image. You can also pass query
/// string arguments for cutting and resizing your preview image.
2020-03-27 02:20:07 +13:00
Future<Response> getFilePreview({@required String fileId, int width = null, int height = null, int quality = 100, String background = null, String output = null}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}/preview'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
'background': background,
'output': output,
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.get, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
/// Get file content by its unique ID. This endpoint is similar to the download
/// method but returns with no 'Content-Disposition: attachment' header.
2020-03-27 02:20:07 +13:00
Future<Response> getFileView({@required String fileId, String as = null}) async {
2020-01-31 05:18:59 +13:00
String path = '/storage/files/{fileId}/view'.replaceAll(RegExp('{fileId}'), fileId);
Map<String, dynamic> params = {
'as': as,
};
2020-03-27 02:20:07 +13:00
return await this.client.call(HttpMethod.get, path: path, params: params);
2020-01-31 05:18:59 +13:00
}
}