Add transactions

This commit is contained in:
Jake Barnby
2025-10-09 20:20:28 +13:00
parent c857cbcb7f
commit e532e8f055
129 changed files with 4411 additions and 4178 deletions
+4
View File
@@ -1,5 +1,9 @@
# Change Log
## 20.2.0
* Add transaction support for Databases and TablesDB
## 20.1.0
* Deprecate `createVerification` method in `Account` service
+1 -1
View File
@@ -21,7 +21,7 @@ Add this to your package's `pubspec.yaml` file:
```yml
dependencies:
appwrite: ^20.1.0
appwrite: ^20.2.0
```
You can install packages from the command line:
@@ -18,4 +18,5 @@ Document result = await databases.createDocument(
"isAdmin": false
},
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,22 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
Transaction result = await databases.createOperations(
transactionId: '<TRANSACTION_ID>',
operations: [
{
"action": "create",
"databaseId": "<DATABASE_ID>",
"collectionId": "<COLLECTION_ID>",
"documentId": "<DOCUMENT_ID>",
"data": {
"name": "Walter O'Brien"
}
}
], // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
Transaction result = await databases.createTransaction(
ttl: 60, // optional
);
@@ -13,4 +13,5 @@ Document result = await databases.decrementDocumentAttribute(
attribute: '',
value: 0, // optional
min: 0, // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -10,4 +10,5 @@ await databases.deleteDocument(
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
await databases.deleteTransaction(
transactionId: '<TRANSACTION_ID>',
);
+1
View File
@@ -11,4 +11,5 @@ Document result = await databases.getDocument(
collectionId: '<COLLECTION_ID>',
documentId: '<DOCUMENT_ID>',
queries: [], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
Transaction result = await databases.getTransaction(
transactionId: '<TRANSACTION_ID>',
);
@@ -13,4 +13,5 @@ Document result = await databases.incrementDocumentAttribute(
attribute: '',
value: 0, // optional
max: 0, // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -10,4 +10,5 @@ DocumentList result = await databases.listDocuments(
databaseId: '<DATABASE_ID>',
collectionId: '<COLLECTION_ID>',
queries: [], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
TransactionList result = await databases.listTransactions(
queries: [], // optional
);
@@ -12,4 +12,5 @@ Document result = await databases.updateDocument(
documentId: '<DOCUMENT_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,13 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
Databases databases = Databases(client);
Transaction result = await databases.updateTransaction(
transactionId: '<TRANSACTION_ID>',
commit: false, // optional
rollback: false, // optional
);
@@ -12,4 +12,5 @@ Document result = await databases.upsertDocument(
documentId: '<DOCUMENT_ID>',
data: {},
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,22 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
Transaction result = await tablesDB.createOperations(
transactionId: '<TRANSACTION_ID>',
operations: [
{
"action": "create",
"databaseId": "<DATABASE_ID>",
"tableId": "<TABLE_ID>",
"rowId": "<ROW_ID>",
"data": {
"name": "Walter O'Brien"
}
}
], // optional
);
+1
View File
@@ -18,4 +18,5 @@ Row result = await tablesDB.createRow(
"isAdmin": false
},
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
Transaction result = await tablesDB.createTransaction(
ttl: 60, // optional
);
@@ -13,4 +13,5 @@ Row result = await tablesDB.decrementRowColumn(
column: '',
value: 0, // optional
min: 0, // optional
transactionId: '<TRANSACTION_ID>', // optional
);
+1
View File
@@ -10,4 +10,5 @@ await tablesDB.deleteRow(
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
await tablesDB.deleteTransaction(
transactionId: '<TRANSACTION_ID>',
);
+1
View File
@@ -11,4 +11,5 @@ Row result = await tablesDB.getRow(
tableId: '<TABLE_ID>',
rowId: '<ROW_ID>',
queries: [], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
+11
View File
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
Transaction result = await tablesDB.getTransaction(
transactionId: '<TRANSACTION_ID>',
);
@@ -13,4 +13,5 @@ Row result = await tablesDB.incrementRowColumn(
column: '',
value: 0, // optional
max: 0, // optional
transactionId: '<TRANSACTION_ID>', // optional
);
+1
View File
@@ -10,4 +10,5 @@ RowList result = await tablesDB.listRows(
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
queries: [], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,11 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
TransactionList result = await tablesDB.listTransactions(
queries: [], // optional
);
+1
View File
@@ -12,4 +12,5 @@ Row result = await tablesDB.updateRow(
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
@@ -0,0 +1,13 @@
import 'package:appwrite/appwrite.dart';
Client client = Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>'); // Your project ID
TablesDB tablesDB = TablesDB(client);
Transaction result = await tablesDB.updateTransaction(
transactionId: '<TRANSACTION_ID>',
commit: false, // optional
rollback: false, // optional
);
+1
View File
@@ -12,4 +12,5 @@ Row result = await tablesDB.upsertRow(
rowId: '<ROW_ID>',
data: {}, // optional
permissions: ["read("any")"], // optional
transactionId: '<TRANSACTION_ID>', // optional
);
+1 -1
View File
@@ -1,6 +1,6 @@
/// Appwrite Flutter SDK
///
/// This SDK is compatible with Appwrite server version 1.8.x.
/// This SDK is compatible with Appwrite server version 1.8.x.
/// For older versions, please check
/// [previous releases](https://github.com/appwrite/sdk-for-flutter/releases).
library appwrite;
+1 -1
View File
@@ -1 +1 @@
export 'src/client_browser.dart';
export 'src/client_browser.dart';
+1 -1
View File
@@ -1 +1 @@
export 'src/client_io.dart';
export 'src/client_io.dart';
+2
View File
@@ -19,6 +19,7 @@ part 'src/models/language_list.dart';
part 'src/models/currency_list.dart';
part 'src/models/phone_list.dart';
part 'src/models/locale_code_list.dart';
part 'src/models/transaction_list.dart';
part 'src/models/row.dart';
part 'src/models/document.dart';
part 'src/models/log.dart';
@@ -51,5 +52,6 @@ part 'src/models/mfa_challenge.dart';
part 'src/models/mfa_recovery_codes.dart';
part 'src/models/mfa_type.dart';
part 'src/models/mfa_factors.dart';
part 'src/models/transaction.dart';
part 'src/models/subscriber.dart';
part 'src/models/target.dart';
+20 -43
View File
@@ -10,14 +10,14 @@ class Query {
Map<String, dynamic> toJson() {
final result = <String, dynamic>{};
result['method'] = method;
if (attribute != null) {
if(attribute != null) {
result['attribute'] = attribute;
}
if (values != null) {
if(values != null) {
result['values'] = values is List ? values : [values];
}
@@ -28,7 +28,7 @@ class Query {
String toString() => jsonEncode(toJson());
/// Filter resources where [attribute] is equal to [value].
///
///
/// [value] can be a single value or a list. If a list is used
/// the query will return resources where [attribute] is equal
/// to any of the values in the list.
@@ -154,17 +154,18 @@ class Query {
Query._('orderDesc', attribute).toString();
/// Sort results randomly.
static String orderRandom() => Query._('orderRandom').toString();
static String orderRandom() =>
Query._('orderRandom').toString();
/// Return results before [id].
///
///
/// Refer to the [Cursor Based Pagination](https://appwrite.io/docs/pagination#cursor-pagination)
/// docs for more information.
static String cursorBefore(String id) =>
Query._('cursorBefore', null, id).toString();
/// Return results after [id].
///
///
/// Refer to the [Cursor Based Pagination](https://appwrite.io/docs/pagination#cursor-pagination)
/// docs for more information.
static String cursorAfter(String id) =>
@@ -174,51 +175,27 @@ class Query {
static String limit(int limit) => Query._('limit', null, limit).toString();
/// Return results from [offset].
///
///
/// Refer to the [Offset Pagination](https://appwrite.io/docs/pagination#offset-pagination)
/// docs for more information.
static String offset(int offset) =>
Query._('offset', null, offset).toString();
/// Filter resources where [attribute] is at a specific distance from the given coordinates.
static String distanceEqual(
String attribute,
List<dynamic> values,
num distance, [
bool meters = true,
]) => Query._('distanceEqual', attribute, [
[values, distance, meters],
]).toString();
static String distanceEqual(String attribute, List<dynamic> values, num distance, [bool meters = true]) =>
Query._('distanceEqual', attribute, [[values, distance, meters]]).toString();
/// Filter resources where [attribute] is not at a specific distance from the given coordinates.
static String distanceNotEqual(
String attribute,
List<dynamic> values,
num distance, [
bool meters = true,
]) => Query._('distanceNotEqual', attribute, [
[values, distance, meters],
]).toString();
static String distanceNotEqual(String attribute, List<dynamic> values, num distance, [bool meters = true]) =>
Query._('distanceNotEqual', attribute, [[values, distance, meters]]).toString();
/// Filter resources where [attribute] is at a distance greater than the specified value from the given coordinates.
static String distanceGreaterThan(
String attribute,
List<dynamic> values,
num distance, [
bool meters = true,
]) => Query._('distanceGreaterThan', attribute, [
[values, distance, meters],
]).toString();
static String distanceGreaterThan(String attribute, List<dynamic> values, num distance, [bool meters = true]) =>
Query._('distanceGreaterThan', attribute, [[values, distance, meters]]).toString();
/// Filter resources where [attribute] is at a distance less than the specified value from the given coordinates.
static String distanceLessThan(
String attribute,
List<dynamic> values,
num distance, [
bool meters = true,
]) => Query._('distanceLessThan', attribute, [
[values, distance, meters],
]).toString();
static String distanceLessThan(String attribute, List<dynamic> values, num distance, [bool meters = true]) =>
Query._('distanceLessThan', attribute, [[values, distance, meters]]).toString();
/// Filter resources where [attribute] intersects with the given geometry.
static String intersects(String attribute, List<dynamic> values) =>
@@ -251,4 +228,4 @@ class Query {
/// Filter resources where [attribute] does not touch the given geometry.
static String notTouches(String attribute, List<dynamic> values) =>
Query._('notTouches', attribute, [values]).toString();
}
}
+1 -1
View File
@@ -1 +1 @@
export 'src/realtime_browser.dart';
export 'src/realtime_browser.dart';
+1 -1
View File
@@ -1 +1 @@
export 'src/realtime_io.dart';
export 'src/realtime_io.dart';
+1 -1
View File
@@ -63,4 +63,4 @@ class Role {
static String label(String name) {
return 'label:$name';
}
}
}
+632 -834
View File
File diff suppressed because it is too large Load Diff
+94 -160
View File
@@ -1,7 +1,7 @@
part of '../appwrite.dart';
/// The Avatars service aims to help you complete everyday tasks related to
/// your app image, icons, and avatars.
/// The Avatars service aims to help you complete everyday tasks related to
/// your app image, icons, and avatars.
class Avatars extends Service {
/// Initializes a [Avatars] service
Avatars(super.client);
@@ -11,169 +11,121 @@ class Avatars extends Service {
/// /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions)
/// endpoint. Use width, height and quality arguments to change the output
/// settings.
///
///
/// When one dimension is specified and the other is 0, the image is scaled
/// with preserved aspect ratio. If both dimensions are 0, the API provides an
/// image at source quality. If dimensions are not specified, the default size
/// of image returned is 100x100px.
Future<Uint8List> getBrowser({
required enums.Browser code,
int? width,
int? height,
int? quality,
}) async {
final String apiPath = '/avatars/browsers/{code}'.replaceAll(
'{code}',
code.value,
);
Future<Uint8List> getBrowser({required enums.Browser code, int? width, int? height, int? quality}) async {
final String apiPath = '/avatars/browsers/{code}'.replaceAll('{code}', code.value);
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// The credit card endpoint will return you the icon of the credit card
/// provider you need. Use width, height and quality arguments to change the
/// output settings.
///
///
/// When one dimension is specified and the other is 0, the image is scaled
/// with preserved aspect ratio. If both dimensions are 0, the API provides an
/// image at source quality. If dimensions are not specified, the default size
/// of image returned is 100x100px.
///
Future<Uint8List> getCreditCard({
required enums.CreditCard code,
int? width,
int? height,
int? quality,
}) async {
final String apiPath = '/avatars/credit-cards/{code}'.replaceAll(
'{code}',
code.value,
);
///
Future<Uint8List> getCreditCard({required enums.CreditCard code, int? width, int? height, int? quality}) async {
final String apiPath = '/avatars/credit-cards/{code}'.replaceAll('{code}', code.value);
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Use this endpoint to fetch the favorite icon (AKA favicon) of any remote
/// website URL.
///
///
/// This endpoint does not follow HTTP redirects.
Future<Uint8List> getFavicon({required String url}) async {
const String apiPath = '/avatars/favicon';
final Map<String, dynamic> params = {
'url': url,
final Map<String, dynamic> params = {
'url': url,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// You can use this endpoint to show different country flags icons to your
/// users. The code argument receives the 2 letter country code. Use width,
/// height and quality arguments to change the output settings. Country codes
/// follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.
///
///
/// When one dimension is specified and the other is 0, the image is scaled
/// with preserved aspect ratio. If both dimensions are 0, the API provides an
/// image at source quality. If dimensions are not specified, the default size
/// of image returned is 100x100px.
///
Future<Uint8List> getFlag({
required enums.Flag code,
int? width,
int? height,
int? quality,
}) async {
final String apiPath = '/avatars/flags/{code}'.replaceAll(
'{code}',
code.value,
);
///
Future<Uint8List> getFlag({required enums.Flag code, int? width, int? height, int? quality}) async {
final String apiPath = '/avatars/flags/{code}'.replaceAll('{code}', code.value);
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
final Map<String, dynamic> params = {
'width': width,
'height': height,
'quality': quality,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Use this endpoint to fetch a remote image URL and crop it to any image size
/// you want. This endpoint is very useful if you need to crop and display
/// remote images in your app or in case you want to make sure a 3rd party
/// image is properly served using a TLS protocol.
///
///
/// When one dimension is specified and the other is 0, the image is scaled
/// with preserved aspect ratio. If both dimensions are 0, the API provides an
/// image at source quality. If dimensions are not specified, the default size
/// of image returned is 400x400px.
///
///
/// This endpoint does not follow HTTP redirects.
Future<Uint8List> getImage({
required String url,
int? width,
int? height,
}) async {
Future<Uint8List> getImage({required String url, int? width, int? height}) async {
const String apiPath = '/avatars/image';
final Map<String, dynamic> params = {
'url': url,
'width': width,
'height': height,
final Map<String, dynamic> params = {
'url': url,
'width': width,
'height': height,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Use this endpoint to show your user initials avatar icon on your website or
@@ -181,69 +133,51 @@ class Avatars extends Service {
/// email initials. You can also overwrite the user name if you pass the 'name'
/// parameter. If no name is given and no user is logged, an empty avatar will
/// be returned.
///
///
/// You can use the color and background params to change the avatar colors. By
/// default, a random theme will be selected. The random theme will persist for
/// the user's initials when reloading the same theme will always return for
/// the same initials.
///
///
/// When one dimension is specified and the other is 0, the image is scaled
/// with preserved aspect ratio. If both dimensions are 0, the API provides an
/// image at source quality. If dimensions are not specified, the default size
/// of image returned is 100x100px.
///
Future<Uint8List> getInitials({
String? name,
int? width,
int? height,
String? background,
}) async {
///
Future<Uint8List> getInitials({String? name, int? width, int? height, String? background}) async {
const String apiPath = '/avatars/initials';
final Map<String, dynamic> params = {
'name': name,
'width': width,
'height': height,
'background': background,
final Map<String, dynamic> params = {
'name': name,
'width': width,
'height': height,
'background': background,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Converts a given plain text to a QR code image. You can use the query
/// parameters to change the size and style of the resulting image.
///
Future<Uint8List> getQR({
required String text,
int? size,
int? margin,
bool? download,
}) async {
///
Future<Uint8List> getQR({required String text, int? size, int? margin, bool? download}) async {
const String apiPath = '/avatars/qr';
final Map<String, dynamic> params = {
'text': text,
'size': size,
'margin': margin,
'download': download,
final Map<String, dynamic> params = {
'text': text,
'size': size,
'margin': margin,
'download': download,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
}
}
+219 -202
View File
@@ -1,272 +1,289 @@
part of '../appwrite.dart';
/// The Databases service allows you to create structured collections of
/// documents, query and filter lists of documents
/// The Databases service allows you to create structured collections of
/// documents, query and filter lists of documents
class Databases extends Service {
/// Initializes a [Databases] service
Databases(super.client);
/// List transactions across all databases.
Future<models.TransactionList> listTransactions({List<String>? queries}) async {
const String apiPath = '/databases/transactions';
final Map<String, dynamic> apiParams = {
'queries': queries,
};
final Map<String, String> apiHeaders = {
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.TransactionList.fromMap(res.data);
}
/// Create a new transaction.
Future<models.Transaction> createTransaction({int? ttl}) async {
const String apiPath = '/databases/transactions';
final Map<String, dynamic> apiParams = {
'ttl': ttl,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Get a transaction by its unique ID.
Future<models.Transaction> getTransaction({required String transactionId}) async {
final String apiPath = '/databases/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Update a transaction, to either commit or roll back its operations.
Future<models.Transaction> updateTransaction({required String transactionId, bool? commit, bool? rollback}) async {
final String apiPath = '/databases/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
'commit': commit,
'rollback': rollback,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Delete a transaction by its unique ID.
Future deleteTransaction({required String transactionId}) async {
final String apiPath = '/databases/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
}
/// Create multiple operations in a single transaction.
Future<models.Transaction> createOperations({required String transactionId, List<Map>? operations}) async {
final String apiPath = '/databases/transactions/{transactionId}/operations'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
'operations': operations,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Get a list of all the user's documents in a given collection. You can use
/// the query params to filter your results.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.listRows` instead.',
)
Future<models.DocumentList> listDocuments({
required String databaseId,
required String collectionId,
List<String>? queries,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.listRows` instead.')
Future<models.DocumentList> listDocuments({required String databaseId, required String collectionId, List<String>? queries, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId);
final Map<String, dynamic> apiParams = {'queries': queries};
final Map<String, dynamic> apiParams = {
'queries': queries,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.DocumentList.fromMap(res.data);
return models.DocumentList.fromMap(res.data);
}
/// Create a new Document. Before using this route, you should create a new
/// collection resource using either a [server
/// integration](https://appwrite.io/docs/server/databases#databasesCreateCollection)
/// API or directly from your database console.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.createRow` instead.',
)
Future<models.Document> createDocument({
required String databaseId,
required String collectionId,
required String documentId,
required Map data,
List<String>? permissions,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.createRow` instead.')
Future<models.Document> createDocument({required String databaseId, required String collectionId, required String documentId, required Map data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId);
final Map<String, dynamic> apiParams = {
'documentId': documentId,
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'documentId': documentId,
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
/// Get a document by its unique ID. This endpoint response returns a JSON
/// object with the document data.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.getRow` instead.',
)
Future<models.Document> getDocument({
required String databaseId,
required String collectionId,
required String documentId,
List<String>? queries,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.getRow` instead.')
Future<models.Document> getDocument({required String databaseId, required String collectionId, required String documentId, List<String>? queries, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId);
final Map<String, dynamic> apiParams = {'queries': queries};
final Map<String, dynamic> apiParams = {
'queries': queries,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
/// Create or update a Document. Before using this route, you should create a
/// new collection resource using either a [server
/// integration](https://appwrite.io/docs/server/databases#databasesCreateCollection)
/// API or directly from your database console.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.upsertRow` instead.',
)
Future<models.Document> upsertDocument({
required String databaseId,
required String collectionId,
required String documentId,
required Map data,
List<String>? permissions,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.upsertRow` instead.')
Future<models.Document> upsertDocument({required String databaseId, required String collectionId, required String documentId, required Map data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId);
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.put,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.put, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
/// Update a document by its unique ID. Using the patch method you can pass
/// only specific fields that will get updated.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.updateRow` instead.',
)
Future<models.Document> updateDocument({
required String databaseId,
required String collectionId,
required String documentId,
Map? data,
List<String>? permissions,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.updateRow` instead.')
Future<models.Document> updateDocument({required String databaseId, required String collectionId, required String documentId, Map? data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId);
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
/// Delete a document by its unique ID.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.deleteRow` instead.',
)
Future deleteDocument({
required String databaseId,
required String collectionId,
required String documentId,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.deleteRow` instead.')
Future deleteDocument({required String databaseId, required String collectionId, required String documentId, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Decrement a specific attribute of a document by a given value.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.decrementRowColumn` instead.',
)
Future<models.Document> decrementDocumentAttribute({
required String databaseId,
required String collectionId,
required String documentId,
required String attribute,
double? value,
double? min,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/decrement'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId)
.replaceAll('{attribute}', attribute);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.decrementRowColumn` instead.')
Future<models.Document> decrementDocumentAttribute({required String databaseId, required String collectionId, required String documentId, required String attribute, double? value, double? min, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/decrement'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId).replaceAll('{attribute}', attribute);
final Map<String, dynamic> apiParams = {'value': value, 'min': min};
final Map<String, dynamic> apiParams = {
'value': value,
'min': min,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
/// Increment a specific attribute of a document by a given value.
@Deprecated(
'This API has been deprecated since 1.8.0. Please use `TablesDB.incrementRowColumn` instead.',
)
Future<models.Document> incrementDocumentAttribute({
required String databaseId,
required String collectionId,
required String documentId,
required String attribute,
double? value,
double? max,
}) async {
final String apiPath =
'/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/increment'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{collectionId}', collectionId)
.replaceAll('{documentId}', documentId)
.replaceAll('{attribute}', attribute);
@Deprecated('This API has been deprecated since 1.8.0. Please use `TablesDB.incrementRowColumn` instead.')
Future<models.Document> incrementDocumentAttribute({required String databaseId, required String collectionId, required String documentId, required String attribute, double? value, double? max, String? transactionId}) async {
final String apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/increment'.replaceAll('{databaseId}', databaseId).replaceAll('{collectionId}', collectionId).replaceAll('{documentId}', documentId).replaceAll('{attribute}', attribute);
final Map<String, dynamic> apiParams = {'value': value, 'max': max};
final Map<String, dynamic> apiParams = {
'value': value,
'max': max,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Document.fromMap(res.data);
return models.Document.fromMap(res.data);
}
}
}
+40 -65
View File
@@ -1,95 +1,70 @@
part of '../appwrite.dart';
/// The Functions Service allows you view, create and manage your Cloud
/// Functions.
/// The Functions Service allows you view, create and manage your Cloud
/// Functions.
class Functions extends Service {
/// Initializes a [Functions] service
Functions(super.client);
/// Get a list of all the current user function execution logs. You can use the
/// query params to filter your results.
Future<models.ExecutionList> listExecutions({
required String functionId,
List<String>? queries,
}) async {
final String apiPath = '/functions/{functionId}/executions'.replaceAll(
'{functionId}',
functionId,
);
Future<models.ExecutionList> listExecutions({required String functionId, List<String>? queries}) async {
final String apiPath = '/functions/{functionId}/executions'.replaceAll('{functionId}', functionId);
final Map<String, dynamic> apiParams = {'queries': queries};
final Map<String, dynamic> apiParams = {
'queries': queries,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.ExecutionList.fromMap(res.data);
return models.ExecutionList.fromMap(res.data);
}
/// Trigger a function execution. The returned object will return you the
/// current execution status. You can ping the `Get Execution` endpoint to get
/// updates on the current execution status. Once this endpoint is called, your
/// function execution process will start asynchronously.
Future<models.Execution> createExecution({
required String functionId,
String? body,
bool? xasync,
String? path,
enums.ExecutionMethod? method,
Map? headers,
String? scheduledAt,
}) async {
final String apiPath = '/functions/{functionId}/executions'.replaceAll(
'{functionId}',
functionId,
);
Future<models.Execution> createExecution({required String functionId, String? body, bool? xasync, String? path, enums.ExecutionMethod? method, Map? headers, String? scheduledAt}) async {
final String apiPath = '/functions/{functionId}/executions'.replaceAll('{functionId}', functionId);
final Map<String, dynamic> apiParams = {
'body': body,
'async': xasync,
'path': path,
'method': method?.value,
'headers': headers,
'scheduledAt': scheduledAt,
};
final Map<String, dynamic> apiParams = {
'body': body,
'async': xasync,
'path': path,
'method': method?.value,
'headers': headers,
'scheduledAt': scheduledAt,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Execution.fromMap(res.data);
return models.Execution.fromMap(res.data);
}
/// Get a function execution log by its unique ID.
Future<models.Execution> getExecution({
required String functionId,
required String executionId,
}) async {
final String apiPath = '/functions/{functionId}/executions/{executionId}'
.replaceAll('{functionId}', functionId)
.replaceAll('{executionId}', executionId);
Future<models.Execution> getExecution({required String functionId, required String executionId}) async {
final String apiPath = '/functions/{functionId}/executions/{executionId}'.replaceAll('{functionId}', functionId).replaceAll('{executionId}', executionId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Execution.fromMap(res.data);
return models.Execution.fromMap(res.data);
}
}
}
+21 -27
View File
@@ -1,7 +1,7 @@
part of '../appwrite.dart';
/// The GraphQL API allows you to query and mutate your Appwrite server using
/// GraphQL.
/// The GraphQL API allows you to query and mutate your Appwrite server using
/// GraphQL.
class Graphql extends Service {
/// Initializes a [Graphql] service
Graphql(super.client);
@@ -10,41 +10,35 @@ class Graphql extends Service {
Future query({required Map query}) async {
const String apiPath = '/graphql';
final Map<String, dynamic> apiParams = {'query': query};
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true', 'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Execute a GraphQL mutation.
Future mutation({required Map query}) async {
const String apiPath = '/graphql/mutation';
final Map<String, dynamic> apiParams = {'query': query};
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true', 'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
}
}
+68 -76
View File
@@ -1,7 +1,7 @@
part of '../appwrite.dart';
/// The Locale service allows you to customize your app based on your users&#039;
/// location.
/// The Locale service allows you to customize your app based on your users&#039;
/// location.
class Locale extends Service {
/// Initializes a [Locale] service
Locale(super.client);
@@ -10,23 +10,22 @@ class Locale extends Service {
/// country code, country name, continent name, continent code, ip address and
/// suggested currency. You can use the locale header to get the data in a
/// supported language.
///
///
/// ([IP Geolocation by DB-IP](https://db-ip.com))
Future<models.Locale> get() async {
const String apiPath = '/locale';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Locale.fromMap(res.data);
return models.Locale.fromMap(res.data);
}
/// List of all locale codes in [ISO
@@ -34,18 +33,17 @@ class Locale extends Service {
Future<models.LocaleCodeList> listCodes() async {
const String apiPath = '/locale/codes';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.LocaleCodeList.fromMap(res.data);
return models.LocaleCodeList.fromMap(res.data);
}
/// List of all continents. You can use the locale header to get the data in a
@@ -53,18 +51,17 @@ class Locale extends Service {
Future<models.ContinentList> listContinents() async {
const String apiPath = '/locale/continents';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.ContinentList.fromMap(res.data);
return models.ContinentList.fromMap(res.data);
}
/// List of all countries. You can use the locale header to get the data in a
@@ -72,18 +69,17 @@ class Locale extends Service {
Future<models.CountryList> listCountries() async {
const String apiPath = '/locale/countries';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.CountryList.fromMap(res.data);
return models.CountryList.fromMap(res.data);
}
/// List of all countries that are currently members of the EU. You can use the
@@ -91,18 +87,17 @@ class Locale extends Service {
Future<models.CountryList> listCountriesEU() async {
const String apiPath = '/locale/countries/eu';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.CountryList.fromMap(res.data);
return models.CountryList.fromMap(res.data);
}
/// List of all countries phone codes. You can use the locale header to get the
@@ -110,18 +105,17 @@ class Locale extends Service {
Future<models.PhoneList> listCountriesPhones() async {
const String apiPath = '/locale/countries/phones';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.PhoneList.fromMap(res.data);
return models.PhoneList.fromMap(res.data);
}
/// List of all currencies, including currency symbol, name, plural, and
@@ -130,18 +124,17 @@ class Locale extends Service {
Future<models.CurrencyList> listCurrencies() async {
const String apiPath = '/locale/currencies';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.CurrencyList.fromMap(res.data);
return models.CurrencyList.fromMap(res.data);
}
/// List of all languages classified by ISO 639-1 including 2-letter code, name
@@ -149,17 +142,16 @@ class Locale extends Service {
Future<models.LanguageList> listLanguages() async {
const String apiPath = '/locale/languages';
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.LanguageList.fromMap(res.data);
return models.LanguageList.fromMap(res.data);
}
}
}
+25 -41
View File
@@ -1,60 +1,44 @@
part of '../appwrite.dart';
/// The Messaging service allows you to send messages to any provider type
/// (SMTP, push notification, SMS, etc.).
/// The Messaging service allows you to send messages to any provider type
/// (SMTP, push notification, SMS, etc.).
class Messaging extends Service {
/// Initializes a [Messaging] service
Messaging(super.client);
/// Create a new subscriber.
Future<models.Subscriber> createSubscriber({
required String topicId,
required String subscriberId,
required String targetId,
}) async {
final String apiPath = '/messaging/topics/{topicId}/subscribers'.replaceAll(
'{topicId}',
topicId,
);
Future<models.Subscriber> createSubscriber({required String topicId, required String subscriberId, required String targetId}) async {
final String apiPath = '/messaging/topics/{topicId}/subscribers'.replaceAll('{topicId}', topicId);
final Map<String, dynamic> apiParams = {
'subscriberId': subscriberId,
'targetId': targetId,
};
final Map<String, dynamic> apiParams = {
'subscriberId': subscriberId,
'targetId': targetId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Subscriber.fromMap(res.data);
return models.Subscriber.fromMap(res.data);
}
/// Delete a subscriber by its unique ID.
Future deleteSubscriber({
required String topicId,
required String subscriberId,
}) async {
final String apiPath =
'/messaging/topics/{topicId}/subscribers/{subscriberId}'
.replaceAll('{topicId}', topicId)
.replaceAll('{subscriberId}', subscriberId);
Future deleteSubscriber({required String topicId, required String subscriberId}) async {
final String apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replaceAll('{topicId}', topicId).replaceAll('{subscriberId}', subscriberId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
}
}
+115 -189
View File
@@ -1,193 +1,150 @@
part of '../appwrite.dart';
/// The Storage service allows you to manage your project files.
/// The Storage service allows you to manage your project files.
class Storage extends Service {
/// Initializes a [Storage] service
Storage(super.client);
/// Get a list of all the user files. You can use the query params to filter
/// your results.
Future<models.FileList> listFiles({
required String bucketId,
List<String>? queries,
String? search,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files'.replaceAll(
'{bucketId}',
bucketId,
);
Future<models.FileList> listFiles({required String bucketId, List<String>? queries, String? search}) async {
final String apiPath = '/storage/buckets/{bucketId}/files'.replaceAll('{bucketId}', bucketId);
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.FileList.fromMap(res.data);
return models.FileList.fromMap(res.data);
}
/// Create a new file. Before using this route, you should create a new bucket
/// resource using either a [server
/// integration](https://appwrite.io/docs/server/storage#storageCreateBucket)
/// API or directly from your Appwrite console.
///
///
/// Larger files should be uploaded using multiple requests with the
/// [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range)
/// header to send a partial request with a maximum supported chunk of `5MB`.
/// The `content-range` header values should always be in bytes.
///
///
/// When the first request is sent, the server will return the **File** object,
/// and the subsequent part request must include the file's **id** in
/// `x-appwrite-id` header to allow the server to know that the partial upload
/// is for the existing file and not for a new one.
///
///
/// If you're creating a new file using one of the Appwrite SDKs, all the
/// chunking logic will be managed by the SDK internally.
///
Future<models.File> createFile({
required String bucketId,
required String fileId,
required InputFile file,
List<String>? permissions,
Function(UploadProgress)? onProgress,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files'.replaceAll(
'{bucketId}',
bucketId,
);
///
Future<models.File> createFile({required String bucketId, required String fileId, required InputFile file, List<String>? permissions, Function(UploadProgress)? onProgress}) async {
final String apiPath = '/storage/buckets/{bucketId}/files'.replaceAll('{bucketId}', bucketId);
final Map<String, dynamic> apiParams = {
'fileId': fileId,
'file': file,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
final Map<String, String> apiHeaders = {
'content-type': 'multipart/form-data',
};
String idParamName = '';
idParamName = 'fileId';
final paramName = 'file';
final res = await client.chunkedUpload(
path: apiPath,
params: apiParams,
paramName: paramName,
idParamName: idParamName,
headers: apiHeaders,
onProgress: onProgress,
);
'fileId': fileId,
'file': file,
'permissions': permissions,
};
final Map<String, String> apiHeaders = {
'content-type': 'multipart/form-data',
};
String idParamName = '';
idParamName = 'fileId';
final paramName = 'file';
final res = await client.chunkedUpload(
path: apiPath,
params: apiParams,
paramName: paramName,
idParamName: idParamName,
headers: apiHeaders,
onProgress: onProgress,
);
return models.File.fromMap(res.data);
return models.File.fromMap(res.data);
}
/// Get a file by its unique ID. This endpoint response returns a JSON object
/// with the file metadata.
Future<models.File> getFile({
required String bucketId,
required String fileId,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
Future<models.File> getFile({required String bucketId, required String fileId}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.File.fromMap(res.data);
return models.File.fromMap(res.data);
}
/// Update a file by its unique ID. Only users with write permissions have
/// access to update this resource.
Future<models.File> updateFile({
required String bucketId,
required String fileId,
String? name,
List<String>? permissions,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
Future<models.File> updateFile({required String bucketId, required String fileId, String? name, List<String>? permissions}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> apiParams = {
'name': name,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'name': name,
'permissions': permissions,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.put,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.put, path: apiPath, params: apiParams, headers: apiHeaders);
return models.File.fromMap(res.data);
return models.File.fromMap(res.data);
}
/// Delete a file by its unique ID. Only users with write permissions have
/// access to delete this resource.
Future deleteFile({required String bucketId, required String fileId}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Get a 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.
Future<Uint8List> getFileDownload({
required String bucketId,
required String fileId,
String? token,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/download'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
Future<Uint8List> getFileDownload({required String bucketId, required String fileId, String? token}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/download'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> params = {
'token': token,
final Map<String, dynamic> params = {
'token': token,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Get a file preview image. Currently, this method supports preview for image
@@ -195,76 +152,45 @@ class Storage extends Service {
/// and spreadsheets, will return the file icon image. You can also pass query
/// string arguments for cutting and resizing your preview image. Preview is
/// supported only for image files smaller than 10MB.
Future<Uint8List> getFilePreview({
required String bucketId,
required String fileId,
int? width,
int? height,
enums.ImageGravity? gravity,
int? quality,
int? borderWidth,
String? borderColor,
int? borderRadius,
double? opacity,
int? rotation,
String? background,
enums.ImageFormat? output,
String? token,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/preview'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
Future<Uint8List> getFilePreview({required String bucketId, required String fileId, int? width, int? height, enums.ImageGravity? gravity, int? quality, int? borderWidth, String? borderColor, int? borderRadius, double? opacity, int? rotation, String? background, enums.ImageFormat? output, String? token}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/preview'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> params = {
'width': width,
'height': height,
'gravity': gravity?.value,
'quality': quality,
'borderWidth': borderWidth,
'borderColor': borderColor,
'borderRadius': borderRadius,
'opacity': opacity,
'rotation': rotation,
'background': background,
'output': output?.value,
'token': token,
final Map<String, dynamic> params = {
'width': width,
'height': height,
'gravity': gravity?.value,
'quality': quality,
'borderWidth': borderWidth,
'borderColor': borderColor,
'borderRadius': borderRadius,
'opacity': opacity,
'rotation': rotation,
'background': background,
'output': output?.value,
'token': token,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
/// Get a file content by its unique ID. This endpoint is similar to the
/// download method but returns with no 'Content-Disposition: attachment'
/// header.
Future<Uint8List> getFileView({
required String bucketId,
required String fileId,
String? token,
}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/view'
.replaceAll('{bucketId}', bucketId)
.replaceAll('{fileId}', fileId);
Future<Uint8List> getFileView({required String bucketId, required String fileId, String? token}) async {
final String apiPath = '/storage/buckets/{bucketId}/files/{fileId}/view'.replaceAll('{bucketId}', bucketId).replaceAll('{fileId}', fileId);
final Map<String, dynamic> params = {
'token': token,
final Map<String, dynamic> params = {
'token': token,
'project': client.config['project'],
};
'project': client.config['project'],
};
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: params,
responseType: ResponseType.bytes,
);
return res.data;
final res = await client.call(HttpMethod.get, path: apiPath, params: params, responseType: ResponseType.bytes);
return res.data;
}
}
}
+209 -174
View File
@@ -4,241 +4,276 @@ class TablesDB extends Service {
/// Initializes a [TablesDB] service
TablesDB(super.client);
/// List transactions across all databases.
Future<models.TransactionList> listTransactions({List<String>? queries}) async {
const String apiPath = '/tablesdb/transactions';
final Map<String, dynamic> apiParams = {
'queries': queries,
};
final Map<String, String> apiHeaders = {
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.TransactionList.fromMap(res.data);
}
/// Create a new transaction.
Future<models.Transaction> createTransaction({int? ttl}) async {
const String apiPath = '/tablesdb/transactions';
final Map<String, dynamic> apiParams = {
'ttl': ttl,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Get a transaction by its unique ID.
Future<models.Transaction> getTransaction({required String transactionId}) async {
final String apiPath = '/tablesdb/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Update a transaction, to either commit or roll back its operations.
Future<models.Transaction> updateTransaction({required String transactionId, bool? commit, bool? rollback}) async {
final String apiPath = '/tablesdb/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
'commit': commit,
'rollback': rollback,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Delete a transaction by its unique ID.
Future deleteTransaction({required String transactionId}) async {
final String apiPath = '/tablesdb/transactions/{transactionId}'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
}
/// Create multiple operations in a single transaction.
Future<models.Transaction> createOperations({required String transactionId, List<Map>? operations}) async {
final String apiPath = '/tablesdb/transactions/{transactionId}/operations'.replaceAll('{transactionId}', transactionId);
final Map<String, dynamic> apiParams = {
'operations': operations,
};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Transaction.fromMap(res.data);
}
/// Get a list of all the user's rows in a given table. You can use the query
/// params to filter your results.
Future<models.RowList> listRows({
required String databaseId,
required String tableId,
List<String>? queries,
}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId);
Future<models.RowList> listRows({required String databaseId, required String tableId, List<String>? queries, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId);
final Map<String, dynamic> apiParams = {'queries': queries};
final Map<String, dynamic> apiParams = {
'queries': queries,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.RowList.fromMap(res.data);
return models.RowList.fromMap(res.data);
}
/// Create a new Row. Before using this route, you should create a new table
/// resource using either a [server
/// integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable)
/// API or directly from your database console.
Future<models.Row> createRow({
required String databaseId,
required String tableId,
required String rowId,
required Map data,
List<String>? permissions,
}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId);
Future<models.Row> createRow({required String databaseId, required String tableId, required String rowId, required Map data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId);
final Map<String, dynamic> apiParams = {
'rowId': rowId,
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'rowId': rowId,
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
/// Get a row by its unique ID. This endpoint response returns a JSON object
/// with the row data.
Future<models.Row> getRow({
required String databaseId,
required String tableId,
required String rowId,
List<String>? queries,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId);
Future<models.Row> getRow({required String databaseId, required String tableId, required String rowId, List<String>? queries, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId);
final Map<String, dynamic> apiParams = {'queries': queries};
final Map<String, dynamic> apiParams = {
'queries': queries,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
/// Create or update a Row. Before using this route, you should create a new
/// table resource using either a [server
/// integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable)
/// API or directly from your database console.
Future<models.Row> upsertRow({
required String databaseId,
required String tableId,
required String rowId,
Map? data,
List<String>? permissions,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId);
Future<models.Row> upsertRow({required String databaseId, required String tableId, required String rowId, Map? data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId);
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.put,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.put, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
/// Update a row by its unique ID. Using the patch method you can pass only
/// specific fields that will get updated.
Future<models.Row> updateRow({
required String databaseId,
required String tableId,
required String rowId,
Map? data,
List<String>? permissions,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId);
Future<models.Row> updateRow({required String databaseId, required String tableId, required String rowId, Map? data, List<String>? permissions, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId);
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
};
final Map<String, dynamic> apiParams = {
'data': data,
'permissions': permissions,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
/// Delete a row by its unique ID.
Future deleteRow({
required String databaseId,
required String tableId,
required String rowId,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId);
Future deleteRow({required String databaseId, required String tableId, required String rowId, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Decrement a specific column of a row by a given value.
Future<models.Row> decrementRowColumn({
required String databaseId,
required String tableId,
required String rowId,
required String column,
double? value,
double? min,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/decrement'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId)
.replaceAll('{column}', column);
Future<models.Row> decrementRowColumn({required String databaseId, required String tableId, required String rowId, required String column, double? value, double? min, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/decrement'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId).replaceAll('{column}', column);
final Map<String, dynamic> apiParams = {'value': value, 'min': min};
final Map<String, dynamic> apiParams = {
'value': value,
'min': min,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
/// Increment a specific column of a row by a given value.
Future<models.Row> incrementRowColumn({
required String databaseId,
required String tableId,
required String rowId,
required String column,
double? value,
double? max,
}) async {
final String apiPath =
'/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/increment'
.replaceAll('{databaseId}', databaseId)
.replaceAll('{tableId}', tableId)
.replaceAll('{rowId}', rowId)
.replaceAll('{column}', column);
Future<models.Row> incrementRowColumn({required String databaseId, required String tableId, required String rowId, required String column, double? value, double? max, String? transactionId}) async {
final String apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/increment'.replaceAll('{databaseId}', databaseId).replaceAll('{tableId}', tableId).replaceAll('{rowId}', rowId).replaceAll('{column}', column);
final Map<String, dynamic> apiParams = {'value': value, 'max': max};
final Map<String, dynamic> apiParams = {
'value': value,
'max': max,
'transactionId': transactionId,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Row.fromMap(res.data);
return models.Row.fromMap(res.data);
}
}
}
+150 -219
View File
@@ -1,7 +1,7 @@
part of '../appwrite.dart';
/// The Teams service allows you to group users of your project and to enable
/// them to share read and write access to your project resources
/// The Teams service allows you to group users of your project and to enable
/// them to share read and write access to your project resources
class Teams extends Service {
/// Initializes a [Teams] service
Teams(super.client);
@@ -11,88 +11,76 @@ class Teams extends Service {
Future<models.TeamList> list({List<String>? queries, String? search}) async {
const String apiPath = '/teams';
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.TeamList.fromMap(res.data);
return models.TeamList.fromMap(res.data);
}
/// Create a new team. The user who creates the team will automatically be
/// assigned as the owner of the team. Only the users with the owner role can
/// invite new members, add new owners and delete or update the team.
Future<models.Team> create({
required String teamId,
required String name,
List<String>? roles,
}) async {
Future<models.Team> create({required String teamId, required String name, List<String>? roles}) async {
const String apiPath = '/teams';
final Map<String, dynamic> apiParams = {
'teamId': teamId,
'name': name,
'roles': roles,
};
final Map<String, dynamic> apiParams = {
'teamId': teamId,
'name': name,
'roles': roles,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Team.fromMap(res.data);
return models.Team.fromMap(res.data);
}
/// Get a team by its ID. All team members have read access for this resource.
Future<models.Team> get({required String teamId}) async {
final String apiPath = '/teams/{teamId}'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Team.fromMap(res.data);
return models.Team.fromMap(res.data);
}
/// Update the team's name by its unique ID.
Future<models.Team> updateName({
required String teamId,
required String name,
}) async {
Future<models.Team> updateName({required String teamId, required String name}) async {
final String apiPath = '/teams/{teamId}'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {'name': name};
final Map<String, dynamic> apiParams = {
'name': name,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.put,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.put, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Team.fromMap(res.data);
return models.Team.fromMap(res.data);
}
/// Delete a team using its ID. Only team members with the owner role can
@@ -100,48 +88,38 @@ class Teams extends Service {
Future delete({required String teamId}) async {
final String apiPath = '/teams/{teamId}'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Use this endpoint to list a team's members using the team's ID. All team
/// members have read access to this endpoint. Hide sensitive attributes from
/// the response by toggling membership privacy in the Console.
Future<models.MembershipList> listMemberships({
required String teamId,
List<String>? queries,
String? search,
}) async {
final String apiPath = '/teams/{teamId}/memberships'.replaceAll(
'{teamId}',
teamId,
);
Future<models.MembershipList> listMemberships({required String teamId, List<String>? queries, String? search}) async {
final String apiPath = '/teams/{teamId}/memberships'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, dynamic> apiParams = {
'queries': queries,
'search': search,
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.MembershipList.fromMap(res.data);
return models.MembershipList.fromMap(res.data);
}
/// Invite a new member to join your team. Provide an ID for existing users, or
@@ -150,210 +128,163 @@ class Teams extends Service {
/// team to the invited user, and an account will be created for them if one
/// doesn't exist. If initiated from a Server SDK, the new member will be added
/// automatically to the team.
///
///
/// You only need to provide one of a user ID, email, or phone number. Appwrite
/// will prioritize accepting the user ID > email > phone number if you provide
/// more than one of these parameters.
///
///
/// Use the `url` parameter to redirect the user from the invitation email to
/// your app. After the user is redirected, use the [Update Team Membership
/// Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus)
/// endpoint to allow the user to accept the invitation to the team.
///
/// endpoint to allow the user to accept the invitation to the team.
///
/// Please note that to avoid a [Redirect
/// Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
/// Appwrite will accept the only redirect URLs under the domains you have
/// added as a platform on the Appwrite Console.
///
Future<models.Membership> createMembership({
required String teamId,
required List<String> roles,
String? email,
String? userId,
String? phone,
String? url,
String? name,
}) async {
final String apiPath = '/teams/{teamId}/memberships'.replaceAll(
'{teamId}',
teamId,
);
///
Future<models.Membership> createMembership({required String teamId, required List<String> roles, String? email, String? userId, String? phone, String? url, String? name}) async {
final String apiPath = '/teams/{teamId}/memberships'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {
'email': email,
'userId': userId,
'phone': phone,
'roles': roles,
'url': url,
'name': name,
};
final Map<String, dynamic> apiParams = {
'email': email,
'userId': userId,
'phone': phone,
'roles': roles,
'url': url,
'name': name,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.post,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.post, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Membership.fromMap(res.data);
return models.Membership.fromMap(res.data);
}
/// Get a team member by the membership unique id. All team members have read
/// access for this resource. Hide sensitive attributes from the response by
/// toggling membership privacy in the Console.
Future<models.Membership> getMembership({
required String teamId,
required String membershipId,
}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'
.replaceAll('{teamId}', teamId)
.replaceAll('{membershipId}', membershipId);
Future<models.Membership> getMembership({required String teamId, required String membershipId}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'.replaceAll('{teamId}', teamId).replaceAll('{membershipId}', membershipId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Membership.fromMap(res.data);
return models.Membership.fromMap(res.data);
}
/// Modify the roles of a team member. Only team members with the owner role
/// have access to this endpoint. Learn more about [roles and
/// permissions](https://appwrite.io/docs/permissions).
///
Future<models.Membership> updateMembership({
required String teamId,
required String membershipId,
required List<String> roles,
}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'
.replaceAll('{teamId}', teamId)
.replaceAll('{membershipId}', membershipId);
///
Future<models.Membership> updateMembership({required String teamId, required String membershipId, required List<String> roles}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'.replaceAll('{teamId}', teamId).replaceAll('{membershipId}', membershipId);
final Map<String, dynamic> apiParams = {'roles': roles};
final Map<String, dynamic> apiParams = {
'roles': roles,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Membership.fromMap(res.data);
return models.Membership.fromMap(res.data);
}
/// This endpoint allows a user to leave a team or for a team owner to delete
/// the membership of any other team member. You can also use this endpoint to
/// delete a user membership even if it is not accepted.
Future deleteMembership({
required String teamId,
required String membershipId,
}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'
.replaceAll('{teamId}', teamId)
.replaceAll('{membershipId}', membershipId);
Future deleteMembership({required String teamId, required String membershipId}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}'.replaceAll('{teamId}', teamId).replaceAll('{membershipId}', membershipId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.delete,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.delete, path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
return res.data;
}
/// Use this endpoint to allow a user to accept an invitation to join a team
/// after being redirected back to your app from the invitation email received
/// by the user.
///
///
/// If the request is successful, a session for the user is automatically
/// created.
///
Future<models.Membership> updateMembershipStatus({
required String teamId,
required String membershipId,
required String userId,
required String secret,
}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}/status'
.replaceAll('{teamId}', teamId)
.replaceAll('{membershipId}', membershipId);
///
Future<models.Membership> updateMembershipStatus({required String teamId, required String membershipId, required String userId, required String secret}) async {
final String apiPath = '/teams/{teamId}/memberships/{membershipId}/status'.replaceAll('{teamId}', teamId).replaceAll('{membershipId}', membershipId);
final Map<String, dynamic> apiParams = {'userId': userId, 'secret': secret};
final Map<String, dynamic> apiParams = {
'userId': userId,
'secret': secret,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.patch,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.patch, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Membership.fromMap(res.data);
return models.Membership.fromMap(res.data);
}
/// Get the team's shared preferences by its unique ID. If a preference doesn't
/// need to be shared by all team members, prefer storing them in [user
/// preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs).
Future<models.Preferences> getPrefs({required String teamId}) async {
final String apiPath = '/teams/{teamId}/prefs'.replaceAll(
'{teamId}',
teamId,
);
final String apiPath = '/teams/{teamId}/prefs'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {};
final Map<String, dynamic> apiParams = {
};
final Map<String, String> apiHeaders = {};
final Map<String, String> apiHeaders = {
final res = await client.call(
HttpMethod.get,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
};
final res = await client.call(HttpMethod.get, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Preferences.fromMap(res.data);
return models.Preferences.fromMap(res.data);
}
/// Update the team's preferences by its unique ID. The object you pass is
/// stored as is and replaces any previous value. The maximum allowed prefs
/// size is 64kB and throws an error if exceeded.
Future<models.Preferences> updatePrefs({
required String teamId,
required Map prefs,
}) async {
final String apiPath = '/teams/{teamId}/prefs'.replaceAll(
'{teamId}',
teamId,
);
Future<models.Preferences> updatePrefs({required String teamId, required Map prefs}) async {
final String apiPath = '/teams/{teamId}/prefs'.replaceAll('{teamId}', teamId);
final Map<String, dynamic> apiParams = {'prefs': prefs};
final Map<String, dynamic> apiParams = {
'prefs': prefs,
};
final Map<String, String> apiHeaders = {'content-type': 'application/json'};
final Map<String, String> apiHeaders = {
'content-type': 'application/json',
};
final res = await client.call(
HttpMethod.put,
path: apiPath,
params: apiParams,
headers: apiHeaders,
);
final res = await client.call(HttpMethod.put, path: apiPath, params: apiParams, headers: apiHeaders);
return models.Preferences.fromMap(res.data);
return models.Preferences.fromMap(res.data);
}
}
}
-3
View File
@@ -6,17 +6,14 @@ abstract class ClientBase implements Client {
/// Your project ID
@override
ClientBase setProject(value);
/// Your secret JSON Web Token
@override
ClientBase setJWT(value);
@override
ClientBase setLocale(value);
/// The user session to authenticate with
@override
ClientBase setSession(value);
/// Your secret dev API key
@override
ClientBase setDevKey(value);
+1 -5
View File
@@ -40,7 +40,7 @@ class ClientBrowser extends ClientBase with ClientMixin {
'x-sdk-name': 'Flutter',
'x-sdk-platform': 'client',
'x-sdk-language': 'flutter',
'x-sdk-version': '20.1.0',
'x-sdk-version': '20.2.0',
'X-Appwrite-Response-Format': '1.8.0',
};
@@ -63,7 +63,6 @@ class ClientBrowser extends ClientBase with ClientMixin {
addHeader('X-Appwrite-Project', value);
return this;
}
/// Your secret JSON Web Token
@override
ClientBrowser setJWT(value) {
@@ -71,14 +70,12 @@ class ClientBrowser extends ClientBase with ClientMixin {
addHeader('X-Appwrite-JWT', value);
return this;
}
@override
ClientBrowser setLocale(value) {
config['locale'] = value;
addHeader('X-Appwrite-Locale', value);
return this;
}
/// The user session to authenticate with
@override
ClientBrowser setSession(value) {
@@ -86,7 +83,6 @@ class ClientBrowser extends ClientBase with ClientMixin {
addHeader('X-Appwrite-Session', value);
return this;
}
/// Your secret dev API key
@override
ClientBrowser setDevKey(value) {
+1 -5
View File
@@ -58,7 +58,7 @@ class ClientIO extends ClientBase with ClientMixin {
'x-sdk-name': 'Flutter',
'x-sdk-platform': 'client',
'x-sdk-language': 'flutter',
'x-sdk-version': '20.1.0',
'x-sdk-version': '20.2.0',
'X-Appwrite-Response-Format': '1.8.0',
};
@@ -89,7 +89,6 @@ class ClientIO extends ClientBase with ClientMixin {
addHeader('X-Appwrite-Project', value);
return this;
}
/// Your secret JSON Web Token
@override
ClientIO setJWT(value) {
@@ -97,14 +96,12 @@ class ClientIO extends ClientBase with ClientMixin {
addHeader('X-Appwrite-JWT', value);
return this;
}
@override
ClientIO setLocale(value) {
config['locale'] = value;
addHeader('X-Appwrite-Locale', value);
return this;
}
/// The user session to authenticate with
@override
ClientIO setSession(value) {
@@ -112,7 +109,6 @@ class ClientIO extends ClientBase with ClientMixin {
addHeader('X-Appwrite-Session', value);
return this;
}
/// Your secret dev API key
@override
ClientIO setDevKey(value) {
+3 -8
View File
@@ -40,7 +40,7 @@ mixin ClientMixin {
}
} else if (method == HttpMethod.get) {
if (params.isNotEmpty) {
params = params.map((key, value) {
params = params.map((key, value){
if (value is int || value is double) {
return MapEntry(key, value.toString());
}
@@ -120,14 +120,9 @@ mixin ClientMixin {
http.StreamedResponse streamedResponse,
) async {
if (streamedResponse.statusCode == 204) {
return http.Response(
'',
return http.Response('',
streamedResponse.statusCode,
headers: streamedResponse.headers.map(
(k, v) => k.toLowerCase() == 'content-type'
? MapEntry(k, 'text/plain')
: MapEntry(k, v),
),
headers: streamedResponse.headers.map((k,v) => k.toLowerCase()=='content-type' ? MapEntry(k, 'text/plain') : MapEntry(k,v)),
request: streamedResponse.request,
isRedirect: streamedResponse.isRedirect,
persistentConnection: streamedResponse.persistentConnection,
+13 -13
View File
@@ -11,19 +11,20 @@ class CookieManager extends Interceptor {
CookieManager(this.cookieJar);
@override
FutureOr<http.BaseRequest> onRequest(http.BaseRequest request) async {
FutureOr<http.BaseRequest> onRequest(
http.BaseRequest request,
) async {
await cookieJar
.loadForRequest(Uri(scheme: request.url.scheme, host: request.url.host))
.then((cookies) {
var cookie = getCookies(cookies);
if (cookie.isNotEmpty) {
request.headers.addAll({HttpHeaders.cookieHeader: cookie});
}
return request;
})
.catchError((e, stackTrace) {
return request;
});
var cookie = getCookies(cookies);
if (cookie.isNotEmpty) {
request.headers.addAll({HttpHeaders.cookieHeader: cookie});
}
return request;
}).catchError((e, stackTrace) {
return request;
});
return request;
}
@@ -42,9 +43,8 @@ class CookieManager extends Interceptor {
var cookies = cookie.split(exp);
await cookieJar.saveFromResponse(
Uri(
scheme: response.request!.url.scheme,
host: response.request!.url.host,
),
scheme: response.request!.url.scheme,
host: response.request!.url.host),
cookies.map((str) => Cookie.fromSetCookieValue(str)).toList(),
);
}
+1 -1
View File
@@ -17,5 +17,5 @@ enum ResponseType {
plain,
/// Get original bytes, the type of response will be `List<int>`
bytes,
bytes
}
+10 -8
View File
@@ -1,14 +1,16 @@
part of '../../enums.dart';
enum AuthenticationFactor {
email(value: 'email'),
phone(value: 'phone'),
totp(value: 'totp'),
recoverycode(value: 'recoverycode');
email(value: 'email'),
phone(value: 'phone'),
totp(value: 'totp'),
recoverycode(value: 'recoverycode');
const AuthenticationFactor({required this.value});
const AuthenticationFactor({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+7 -5
View File
@@ -1,11 +1,13 @@
part of '../../enums.dart';
enum AuthenticatorType {
totp(value: 'totp');
totp(value: 'totp');
const AuthenticatorType({required this.value});
const AuthenticatorType({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+20 -18
View File
@@ -1,24 +1,26 @@
part of '../../enums.dart';
enum Browser {
avantBrowser(value: 'aa'),
androidWebViewBeta(value: 'an'),
googleChrome(value: 'ch'),
googleChromeIOS(value: 'ci'),
googleChromeMobile(value: 'cm'),
chromium(value: 'cr'),
mozillaFirefox(value: 'ff'),
safari(value: 'sf'),
mobileSafari(value: 'mf'),
microsoftEdge(value: 'ps'),
microsoftEdgeIOS(value: 'oi'),
operaMini(value: 'om'),
opera(value: 'op'),
operaNext(value: 'on');
avantBrowser(value: 'aa'),
androidWebViewBeta(value: 'an'),
googleChrome(value: 'ch'),
googleChromeIOS(value: 'ci'),
googleChromeMobile(value: 'cm'),
chromium(value: 'cr'),
mozillaFirefox(value: 'ff'),
safari(value: 'sf'),
mobileSafari(value: 'mf'),
microsoftEdge(value: 'ps'),
microsoftEdgeIOS(value: 'oi'),
operaMini(value: 'om'),
opera(value: 'op'),
operaNext(value: 'on');
const Browser({required this.value});
const Browser({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+23 -21
View File
@@ -1,27 +1,29 @@
part of '../../enums.dart';
enum CreditCard {
americanExpress(value: 'amex'),
argencard(value: 'argencard'),
cabal(value: 'cabal'),
cencosud(value: 'cencosud'),
dinersClub(value: 'diners'),
discover(value: 'discover'),
elo(value: 'elo'),
hipercard(value: 'hipercard'),
jCB(value: 'jcb'),
mastercard(value: 'mastercard'),
naranja(value: 'naranja'),
tarjetaShopping(value: 'targeta-shopping'),
unionPay(value: 'unionpay'),
visa(value: 'visa'),
mIR(value: 'mir'),
maestro(value: 'maestro'),
rupay(value: 'rupay');
americanExpress(value: 'amex'),
argencard(value: 'argencard'),
cabal(value: 'cabal'),
cencosud(value: 'cencosud'),
dinersClub(value: 'diners'),
discover(value: 'discover'),
elo(value: 'elo'),
hipercard(value: 'hipercard'),
jCB(value: 'jcb'),
mastercard(value: 'mastercard'),
naranja(value: 'naranja'),
tarjetaShopping(value: 'targeta-shopping'),
unionPay(value: 'unionpay'),
visa(value: 'visa'),
mIR(value: 'mir'),
maestro(value: 'maestro'),
rupay(value: 'rupay');
const CreditCard({required this.value});
const CreditCard({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+13 -11
View File
@@ -1,17 +1,19 @@
part of '../../enums.dart';
enum ExecutionMethod {
gET(value: 'GET'),
pOST(value: 'POST'),
pUT(value: 'PUT'),
pATCH(value: 'PATCH'),
dELETE(value: 'DELETE'),
oPTIONS(value: 'OPTIONS'),
hEAD(value: 'HEAD');
gET(value: 'GET'),
pOST(value: 'POST'),
pUT(value: 'PUT'),
pATCH(value: 'PATCH'),
dELETE(value: 'DELETE'),
oPTIONS(value: 'OPTIONS'),
hEAD(value: 'HEAD');
const ExecutionMethod({required this.value});
const ExecutionMethod({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+10 -8
View File
@@ -1,14 +1,16 @@
part of '../../enums.dart';
enum ExecutionStatus {
waiting(value: 'waiting'),
processing(value: 'processing'),
completed(value: 'completed'),
failed(value: 'failed');
waiting(value: 'waiting'),
processing(value: 'processing'),
completed(value: 'completed'),
failed(value: 'failed');
const ExecutionStatus({required this.value});
const ExecutionStatus({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+9 -7
View File
@@ -1,13 +1,15 @@
part of '../../enums.dart';
enum ExecutionTrigger {
http(value: 'http'),
schedule(value: 'schedule'),
event(value: 'event');
http(value: 'http'),
schedule(value: 'schedule'),
event(value: 'event');
const ExecutionTrigger({required this.value});
const ExecutionTrigger({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+201 -199
View File
@@ -1,205 +1,207 @@
part of '../../enums.dart';
enum Flag {
afghanistan(value: 'af'),
angola(value: 'ao'),
albania(value: 'al'),
andorra(value: 'ad'),
unitedArabEmirates(value: 'ae'),
argentina(value: 'ar'),
armenia(value: 'am'),
antiguaAndBarbuda(value: 'ag'),
australia(value: 'au'),
austria(value: 'at'),
azerbaijan(value: 'az'),
burundi(value: 'bi'),
belgium(value: 'be'),
benin(value: 'bj'),
burkinaFaso(value: 'bf'),
bangladesh(value: 'bd'),
bulgaria(value: 'bg'),
bahrain(value: 'bh'),
bahamas(value: 'bs'),
bosniaAndHerzegovina(value: 'ba'),
belarus(value: 'by'),
belize(value: 'bz'),
bolivia(value: 'bo'),
brazil(value: 'br'),
barbados(value: 'bb'),
bruneiDarussalam(value: 'bn'),
bhutan(value: 'bt'),
botswana(value: 'bw'),
centralAfricanRepublic(value: 'cf'),
canada(value: 'ca'),
switzerland(value: 'ch'),
chile(value: 'cl'),
china(value: 'cn'),
coteDIvoire(value: 'ci'),
cameroon(value: 'cm'),
democraticRepublicOfTheCongo(value: 'cd'),
republicOfTheCongo(value: 'cg'),
colombia(value: 'co'),
comoros(value: 'km'),
capeVerde(value: 'cv'),
costaRica(value: 'cr'),
cuba(value: 'cu'),
cyprus(value: 'cy'),
czechRepublic(value: 'cz'),
germany(value: 'de'),
djibouti(value: 'dj'),
dominica(value: 'dm'),
denmark(value: 'dk'),
dominicanRepublic(value: 'do'),
algeria(value: 'dz'),
ecuador(value: 'ec'),
egypt(value: 'eg'),
eritrea(value: 'er'),
spain(value: 'es'),
estonia(value: 'ee'),
ethiopia(value: 'et'),
finland(value: 'fi'),
fiji(value: 'fj'),
france(value: 'fr'),
micronesiaFederatedStatesOf(value: 'fm'),
gabon(value: 'ga'),
unitedKingdom(value: 'gb'),
georgia(value: 'ge'),
ghana(value: 'gh'),
guinea(value: 'gn'),
gambia(value: 'gm'),
guineaBissau(value: 'gw'),
equatorialGuinea(value: 'gq'),
greece(value: 'gr'),
grenada(value: 'gd'),
guatemala(value: 'gt'),
guyana(value: 'gy'),
honduras(value: 'hn'),
croatia(value: 'hr'),
haiti(value: 'ht'),
hungary(value: 'hu'),
indonesia(value: 'id'),
india(value: 'in'),
ireland(value: 'ie'),
iranIslamicRepublicOf(value: 'ir'),
iraq(value: 'iq'),
iceland(value: 'is'),
israel(value: 'il'),
italy(value: 'it'),
jamaica(value: 'jm'),
jordan(value: 'jo'),
japan(value: 'jp'),
kazakhstan(value: 'kz'),
kenya(value: 'ke'),
kyrgyzstan(value: 'kg'),
cambodia(value: 'kh'),
kiribati(value: 'ki'),
saintKittsAndNevis(value: 'kn'),
southKorea(value: 'kr'),
kuwait(value: 'kw'),
laoPeopleSDemocraticRepublic(value: 'la'),
lebanon(value: 'lb'),
liberia(value: 'lr'),
libya(value: 'ly'),
saintLucia(value: 'lc'),
liechtenstein(value: 'li'),
sriLanka(value: 'lk'),
lesotho(value: 'ls'),
lithuania(value: 'lt'),
luxembourg(value: 'lu'),
latvia(value: 'lv'),
morocco(value: 'ma'),
monaco(value: 'mc'),
moldova(value: 'md'),
madagascar(value: 'mg'),
maldives(value: 'mv'),
mexico(value: 'mx'),
marshallIslands(value: 'mh'),
northMacedonia(value: 'mk'),
mali(value: 'ml'),
malta(value: 'mt'),
myanmar(value: 'mm'),
montenegro(value: 'me'),
mongolia(value: 'mn'),
mozambique(value: 'mz'),
mauritania(value: 'mr'),
mauritius(value: 'mu'),
malawi(value: 'mw'),
malaysia(value: 'my'),
namibia(value: 'na'),
niger(value: 'ne'),
nigeria(value: 'ng'),
nicaragua(value: 'ni'),
netherlands(value: 'nl'),
norway(value: 'no'),
nepal(value: 'np'),
nauru(value: 'nr'),
newZealand(value: 'nz'),
oman(value: 'om'),
pakistan(value: 'pk'),
panama(value: 'pa'),
peru(value: 'pe'),
philippines(value: 'ph'),
palau(value: 'pw'),
papuaNewGuinea(value: 'pg'),
poland(value: 'pl'),
frenchPolynesia(value: 'pf'),
northKorea(value: 'kp'),
portugal(value: 'pt'),
paraguay(value: 'py'),
qatar(value: 'qa'),
romania(value: 'ro'),
russia(value: 'ru'),
rwanda(value: 'rw'),
saudiArabia(value: 'sa'),
sudan(value: 'sd'),
senegal(value: 'sn'),
singapore(value: 'sg'),
solomonIslands(value: 'sb'),
sierraLeone(value: 'sl'),
elSalvador(value: 'sv'),
sanMarino(value: 'sm'),
somalia(value: 'so'),
serbia(value: 'rs'),
southSudan(value: 'ss'),
saoTomeAndPrincipe(value: 'st'),
suriname(value: 'sr'),
slovakia(value: 'sk'),
slovenia(value: 'si'),
sweden(value: 'se'),
eswatini(value: 'sz'),
seychelles(value: 'sc'),
syria(value: 'sy'),
chad(value: 'td'),
togo(value: 'tg'),
thailand(value: 'th'),
tajikistan(value: 'tj'),
turkmenistan(value: 'tm'),
timorLeste(value: 'tl'),
tonga(value: 'to'),
trinidadAndTobago(value: 'tt'),
tunisia(value: 'tn'),
turkey(value: 'tr'),
tuvalu(value: 'tv'),
tanzania(value: 'tz'),
uganda(value: 'ug'),
ukraine(value: 'ua'),
uruguay(value: 'uy'),
unitedStates(value: 'us'),
uzbekistan(value: 'uz'),
vaticanCity(value: 'va'),
saintVincentAndTheGrenadines(value: 'vc'),
venezuela(value: 've'),
vietnam(value: 'vn'),
vanuatu(value: 'vu'),
samoa(value: 'ws'),
yemen(value: 'ye'),
southAfrica(value: 'za'),
zambia(value: 'zm'),
zimbabwe(value: 'zw');
afghanistan(value: 'af'),
angola(value: 'ao'),
albania(value: 'al'),
andorra(value: 'ad'),
unitedArabEmirates(value: 'ae'),
argentina(value: 'ar'),
armenia(value: 'am'),
antiguaAndBarbuda(value: 'ag'),
australia(value: 'au'),
austria(value: 'at'),
azerbaijan(value: 'az'),
burundi(value: 'bi'),
belgium(value: 'be'),
benin(value: 'bj'),
burkinaFaso(value: 'bf'),
bangladesh(value: 'bd'),
bulgaria(value: 'bg'),
bahrain(value: 'bh'),
bahamas(value: 'bs'),
bosniaAndHerzegovina(value: 'ba'),
belarus(value: 'by'),
belize(value: 'bz'),
bolivia(value: 'bo'),
brazil(value: 'br'),
barbados(value: 'bb'),
bruneiDarussalam(value: 'bn'),
bhutan(value: 'bt'),
botswana(value: 'bw'),
centralAfricanRepublic(value: 'cf'),
canada(value: 'ca'),
switzerland(value: 'ch'),
chile(value: 'cl'),
china(value: 'cn'),
coteDIvoire(value: 'ci'),
cameroon(value: 'cm'),
democraticRepublicOfTheCongo(value: 'cd'),
republicOfTheCongo(value: 'cg'),
colombia(value: 'co'),
comoros(value: 'km'),
capeVerde(value: 'cv'),
costaRica(value: 'cr'),
cuba(value: 'cu'),
cyprus(value: 'cy'),
czechRepublic(value: 'cz'),
germany(value: 'de'),
djibouti(value: 'dj'),
dominica(value: 'dm'),
denmark(value: 'dk'),
dominicanRepublic(value: 'do'),
algeria(value: 'dz'),
ecuador(value: 'ec'),
egypt(value: 'eg'),
eritrea(value: 'er'),
spain(value: 'es'),
estonia(value: 'ee'),
ethiopia(value: 'et'),
finland(value: 'fi'),
fiji(value: 'fj'),
france(value: 'fr'),
micronesiaFederatedStatesOf(value: 'fm'),
gabon(value: 'ga'),
unitedKingdom(value: 'gb'),
georgia(value: 'ge'),
ghana(value: 'gh'),
guinea(value: 'gn'),
gambia(value: 'gm'),
guineaBissau(value: 'gw'),
equatorialGuinea(value: 'gq'),
greece(value: 'gr'),
grenada(value: 'gd'),
guatemala(value: 'gt'),
guyana(value: 'gy'),
honduras(value: 'hn'),
croatia(value: 'hr'),
haiti(value: 'ht'),
hungary(value: 'hu'),
indonesia(value: 'id'),
india(value: 'in'),
ireland(value: 'ie'),
iranIslamicRepublicOf(value: 'ir'),
iraq(value: 'iq'),
iceland(value: 'is'),
israel(value: 'il'),
italy(value: 'it'),
jamaica(value: 'jm'),
jordan(value: 'jo'),
japan(value: 'jp'),
kazakhstan(value: 'kz'),
kenya(value: 'ke'),
kyrgyzstan(value: 'kg'),
cambodia(value: 'kh'),
kiribati(value: 'ki'),
saintKittsAndNevis(value: 'kn'),
southKorea(value: 'kr'),
kuwait(value: 'kw'),
laoPeopleSDemocraticRepublic(value: 'la'),
lebanon(value: 'lb'),
liberia(value: 'lr'),
libya(value: 'ly'),
saintLucia(value: 'lc'),
liechtenstein(value: 'li'),
sriLanka(value: 'lk'),
lesotho(value: 'ls'),
lithuania(value: 'lt'),
luxembourg(value: 'lu'),
latvia(value: 'lv'),
morocco(value: 'ma'),
monaco(value: 'mc'),
moldova(value: 'md'),
madagascar(value: 'mg'),
maldives(value: 'mv'),
mexico(value: 'mx'),
marshallIslands(value: 'mh'),
northMacedonia(value: 'mk'),
mali(value: 'ml'),
malta(value: 'mt'),
myanmar(value: 'mm'),
montenegro(value: 'me'),
mongolia(value: 'mn'),
mozambique(value: 'mz'),
mauritania(value: 'mr'),
mauritius(value: 'mu'),
malawi(value: 'mw'),
malaysia(value: 'my'),
namibia(value: 'na'),
niger(value: 'ne'),
nigeria(value: 'ng'),
nicaragua(value: 'ni'),
netherlands(value: 'nl'),
norway(value: 'no'),
nepal(value: 'np'),
nauru(value: 'nr'),
newZealand(value: 'nz'),
oman(value: 'om'),
pakistan(value: 'pk'),
panama(value: 'pa'),
peru(value: 'pe'),
philippines(value: 'ph'),
palau(value: 'pw'),
papuaNewGuinea(value: 'pg'),
poland(value: 'pl'),
frenchPolynesia(value: 'pf'),
northKorea(value: 'kp'),
portugal(value: 'pt'),
paraguay(value: 'py'),
qatar(value: 'qa'),
romania(value: 'ro'),
russia(value: 'ru'),
rwanda(value: 'rw'),
saudiArabia(value: 'sa'),
sudan(value: 'sd'),
senegal(value: 'sn'),
singapore(value: 'sg'),
solomonIslands(value: 'sb'),
sierraLeone(value: 'sl'),
elSalvador(value: 'sv'),
sanMarino(value: 'sm'),
somalia(value: 'so'),
serbia(value: 'rs'),
southSudan(value: 'ss'),
saoTomeAndPrincipe(value: 'st'),
suriname(value: 'sr'),
slovakia(value: 'sk'),
slovenia(value: 'si'),
sweden(value: 'se'),
eswatini(value: 'sz'),
seychelles(value: 'sc'),
syria(value: 'sy'),
chad(value: 'td'),
togo(value: 'tg'),
thailand(value: 'th'),
tajikistan(value: 'tj'),
turkmenistan(value: 'tm'),
timorLeste(value: 'tl'),
tonga(value: 'to'),
trinidadAndTobago(value: 'tt'),
tunisia(value: 'tn'),
turkey(value: 'tr'),
tuvalu(value: 'tv'),
tanzania(value: 'tz'),
uganda(value: 'ug'),
ukraine(value: 'ua'),
uruguay(value: 'uy'),
unitedStates(value: 'us'),
uzbekistan(value: 'uz'),
vaticanCity(value: 'va'),
saintVincentAndTheGrenadines(value: 'vc'),
venezuela(value: 've'),
vietnam(value: 'vn'),
vanuatu(value: 'vu'),
samoa(value: 'ws'),
yemen(value: 'ye'),
southAfrica(value: 'za'),
zambia(value: 'zm'),
zimbabwe(value: 'zw');
const Flag({required this.value});
const Flag({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+13 -11
View File
@@ -1,17 +1,19 @@
part of '../../enums.dart';
enum ImageFormat {
jpg(value: 'jpg'),
jpeg(value: 'jpeg'),
png(value: 'png'),
webp(value: 'webp'),
heic(value: 'heic'),
avif(value: 'avif'),
gif(value: 'gif');
jpg(value: 'jpg'),
jpeg(value: 'jpeg'),
png(value: 'png'),
webp(value: 'webp'),
heic(value: 'heic'),
avif(value: 'avif'),
gif(value: 'gif');
const ImageFormat({required this.value});
const ImageFormat({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+15 -13
View File
@@ -1,19 +1,21 @@
part of '../../enums.dart';
enum ImageGravity {
center(value: 'center'),
topLeft(value: 'top-left'),
top(value: 'top'),
topRight(value: 'top-right'),
left(value: 'left'),
right(value: 'right'),
bottomLeft(value: 'bottom-left'),
bottom(value: 'bottom'),
bottomRight(value: 'bottom-right');
center(value: 'center'),
topLeft(value: 'top-left'),
top(value: 'top'),
topRight(value: 'top-right'),
left(value: 'left'),
right(value: 'right'),
bottomLeft(value: 'bottom-left'),
bottom(value: 'bottom'),
bottomRight(value: 'bottom-right');
const ImageGravity({required this.value});
const ImageGravity({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+46 -44
View File
@@ -1,50 +1,52 @@
part of '../../enums.dart';
enum OAuthProvider {
amazon(value: 'amazon'),
apple(value: 'apple'),
auth0(value: 'auth0'),
authentik(value: 'authentik'),
autodesk(value: 'autodesk'),
bitbucket(value: 'bitbucket'),
bitly(value: 'bitly'),
box(value: 'box'),
dailymotion(value: 'dailymotion'),
discord(value: 'discord'),
disqus(value: 'disqus'),
dropbox(value: 'dropbox'),
etsy(value: 'etsy'),
facebook(value: 'facebook'),
figma(value: 'figma'),
github(value: 'github'),
gitlab(value: 'gitlab'),
google(value: 'google'),
linkedin(value: 'linkedin'),
microsoft(value: 'microsoft'),
notion(value: 'notion'),
oidc(value: 'oidc'),
okta(value: 'okta'),
paypal(value: 'paypal'),
paypalSandbox(value: 'paypalSandbox'),
podio(value: 'podio'),
salesforce(value: 'salesforce'),
slack(value: 'slack'),
spotify(value: 'spotify'),
stripe(value: 'stripe'),
tradeshift(value: 'tradeshift'),
tradeshiftBox(value: 'tradeshiftBox'),
twitch(value: 'twitch'),
wordpress(value: 'wordpress'),
yahoo(value: 'yahoo'),
yammer(value: 'yammer'),
yandex(value: 'yandex'),
zoho(value: 'zoho'),
zoom(value: 'zoom'),
mock(value: 'mock');
amazon(value: 'amazon'),
apple(value: 'apple'),
auth0(value: 'auth0'),
authentik(value: 'authentik'),
autodesk(value: 'autodesk'),
bitbucket(value: 'bitbucket'),
bitly(value: 'bitly'),
box(value: 'box'),
dailymotion(value: 'dailymotion'),
discord(value: 'discord'),
disqus(value: 'disqus'),
dropbox(value: 'dropbox'),
etsy(value: 'etsy'),
facebook(value: 'facebook'),
figma(value: 'figma'),
github(value: 'github'),
gitlab(value: 'gitlab'),
google(value: 'google'),
linkedin(value: 'linkedin'),
microsoft(value: 'microsoft'),
notion(value: 'notion'),
oidc(value: 'oidc'),
okta(value: 'okta'),
paypal(value: 'paypal'),
paypalSandbox(value: 'paypalSandbox'),
podio(value: 'podio'),
salesforce(value: 'salesforce'),
slack(value: 'slack'),
spotify(value: 'spotify'),
stripe(value: 'stripe'),
tradeshift(value: 'tradeshift'),
tradeshiftBox(value: 'tradeshiftBox'),
twitch(value: 'twitch'),
wordpress(value: 'wordpress'),
yahoo(value: 'yahoo'),
yammer(value: 'yammer'),
yandex(value: 'yandex'),
zoho(value: 'zoho'),
zoom(value: 'zoom'),
mock(value: 'mock');
const OAuthProvider({required this.value});
const OAuthProvider({
required this.value
});
final String value;
final String value;
String toJson() => value;
}
String toJson() => value;
}
+1 -1
View File
@@ -13,7 +13,7 @@ class AppwriteException implements Exception {
/// Initializes an Appwrite Exception.
AppwriteException([this.message = "", this.code, this.type, this.response]);
/// Returns the error type, message, and code.
@override
String toString() {
+30 -30
View File
@@ -2,40 +2,40 @@ part of '../../models.dart';
/// AlgoArgon2
class AlgoArgon2 implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
/// Memory used to compute hash.
final int memoryCost;
/// Memory used to compute hash.
final int memoryCost;
/// Amount of time consumed to compute hash
final int timeCost;
/// Amount of time consumed to compute hash
final int timeCost;
/// Number of threads used to compute hash.
final int threads;
/// Number of threads used to compute hash.
final int threads;
AlgoArgon2({
required this.type,
required this.memoryCost,
required this.timeCost,
required this.threads,
});
AlgoArgon2({
required this.type,
required this.memoryCost,
required this.timeCost,
required this.threads,
});
factory AlgoArgon2.fromMap(Map<String, dynamic> map) {
return AlgoArgon2(
type: map['type'].toString(),
memoryCost: map['memoryCost'],
timeCost: map['timeCost'],
threads: map['threads'],
);
}
factory AlgoArgon2.fromMap(Map<String, dynamic> map) {
return AlgoArgon2(
type: map['type'].toString(),
memoryCost: map['memoryCost'],
timeCost: map['timeCost'],
threads: map['threads'],
);
}
Map<String, dynamic> toMap() {
return {
"type": type,
"memoryCost": memoryCost,
"timeCost": timeCost,
"threads": threads,
};
}
Map<String, dynamic> toMap() {
return {
"type": type,
"memoryCost": memoryCost,
"timeCost": timeCost,
"threads": threads,
};
}
}
+15 -9
View File
@@ -2,16 +2,22 @@ part of '../../models.dart';
/// AlgoBcrypt
class AlgoBcrypt implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
AlgoBcrypt({required this.type});
AlgoBcrypt({
required this.type,
});
factory AlgoBcrypt.fromMap(Map<String, dynamic> map) {
return AlgoBcrypt(type: map['type'].toString());
}
factory AlgoBcrypt.fromMap(Map<String, dynamic> map) {
return AlgoBcrypt(
type: map['type'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"type": type};
}
Map<String, dynamic> toMap() {
return {
"type": type,
};
}
}
+15 -9
View File
@@ -2,16 +2,22 @@ part of '../../models.dart';
/// AlgoMD5
class AlgoMd5 implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
AlgoMd5({required this.type});
AlgoMd5({
required this.type,
});
factory AlgoMd5.fromMap(Map<String, dynamic> map) {
return AlgoMd5(type: map['type'].toString());
}
factory AlgoMd5.fromMap(Map<String, dynamic> map) {
return AlgoMd5(
type: map['type'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"type": type};
}
Map<String, dynamic> toMap() {
return {
"type": type,
};
}
}
+15 -9
View File
@@ -2,16 +2,22 @@ part of '../../models.dart';
/// AlgoPHPass
class AlgoPhpass implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
AlgoPhpass({required this.type});
AlgoPhpass({
required this.type,
});
factory AlgoPhpass.fromMap(Map<String, dynamic> map) {
return AlgoPhpass(type: map['type'].toString());
}
factory AlgoPhpass.fromMap(Map<String, dynamic> map) {
return AlgoPhpass(
type: map['type'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"type": type};
}
Map<String, dynamic> toMap() {
return {
"type": type,
};
}
}
+35 -35
View File
@@ -2,46 +2,46 @@ part of '../../models.dart';
/// AlgoScrypt
class AlgoScrypt implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
/// CPU complexity of computed hash.
final int costCpu;
/// CPU complexity of computed hash.
final int costCpu;
/// Memory complexity of computed hash.
final int costMemory;
/// Memory complexity of computed hash.
final int costMemory;
/// Parallelization of computed hash.
final int costParallel;
/// Parallelization of computed hash.
final int costParallel;
/// Length used to compute hash.
final int length;
/// Length used to compute hash.
final int length;
AlgoScrypt({
required this.type,
required this.costCpu,
required this.costMemory,
required this.costParallel,
required this.length,
});
AlgoScrypt({
required this.type,
required this.costCpu,
required this.costMemory,
required this.costParallel,
required this.length,
});
factory AlgoScrypt.fromMap(Map<String, dynamic> map) {
return AlgoScrypt(
type: map['type'].toString(),
costCpu: map['costCpu'],
costMemory: map['costMemory'],
costParallel: map['costParallel'],
length: map['length'],
);
}
factory AlgoScrypt.fromMap(Map<String, dynamic> map) {
return AlgoScrypt(
type: map['type'].toString(),
costCpu: map['costCpu'],
costMemory: map['costMemory'],
costParallel: map['costParallel'],
length: map['length'],
);
}
Map<String, dynamic> toMap() {
return {
"type": type,
"costCpu": costCpu,
"costMemory": costMemory,
"costParallel": costParallel,
"length": length,
};
}
Map<String, dynamic> toMap() {
return {
"type": type,
"costCpu": costCpu,
"costMemory": costMemory,
"costParallel": costParallel,
"length": length,
};
}
}
+30 -30
View File
@@ -2,40 +2,40 @@ part of '../../models.dart';
/// AlgoScryptModified
class AlgoScryptModified implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
/// Salt used to compute hash.
final String salt;
/// Salt used to compute hash.
final String salt;
/// Separator used to compute hash.
final String saltSeparator;
/// Separator used to compute hash.
final String saltSeparator;
/// Key used to compute hash.
final String signerKey;
/// Key used to compute hash.
final String signerKey;
AlgoScryptModified({
required this.type,
required this.salt,
required this.saltSeparator,
required this.signerKey,
});
AlgoScryptModified({
required this.type,
required this.salt,
required this.saltSeparator,
required this.signerKey,
});
factory AlgoScryptModified.fromMap(Map<String, dynamic> map) {
return AlgoScryptModified(
type: map['type'].toString(),
salt: map['salt'].toString(),
saltSeparator: map['saltSeparator'].toString(),
signerKey: map['signerKey'].toString(),
);
}
factory AlgoScryptModified.fromMap(Map<String, dynamic> map) {
return AlgoScryptModified(
type: map['type'].toString(),
salt: map['salt'].toString(),
saltSeparator: map['saltSeparator'].toString(),
signerKey: map['signerKey'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"type": type,
"salt": salt,
"saltSeparator": saltSeparator,
"signerKey": signerKey,
};
}
Map<String, dynamic> toMap() {
return {
"type": type,
"salt": salt,
"saltSeparator": saltSeparator,
"signerKey": signerKey,
};
}
}
+15 -9
View File
@@ -2,16 +2,22 @@ part of '../../models.dart';
/// AlgoSHA
class AlgoSha implements Model {
/// Algo type.
final String type;
/// Algo type.
final String type;
AlgoSha({required this.type});
AlgoSha({
required this.type,
});
factory AlgoSha.fromMap(Map<String, dynamic> map) {
return AlgoSha(type: map['type'].toString());
}
factory AlgoSha.fromMap(Map<String, dynamic> map) {
return AlgoSha(
type: map['type'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"type": type};
}
Map<String, dynamic> toMap() {
return {
"type": type,
};
}
}
+20 -14
View File
@@ -2,22 +2,28 @@ part of '../../models.dart';
/// Continent
class Continent implements Model {
/// Continent name.
final String name;
/// Continent name.
final String name;
/// Continent two letter code.
final String code;
/// Continent two letter code.
final String code;
Continent({required this.name, required this.code});
Continent({
required this.name,
required this.code,
});
factory Continent.fromMap(Map<String, dynamic> map) {
return Continent(
name: map['name'].toString(),
code: map['code'].toString(),
);
}
factory Continent.fromMap(Map<String, dynamic> map) {
return Continent(
name: map['name'].toString(),
code: map['code'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"name": name, "code": code};
}
Map<String, dynamic> toMap() {
return {
"name": name,
"code": code,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Continents List
class ContinentList implements Model {
/// Total number of continents that matched your query.
final int total;
/// Total number of continents that matched your query.
final int total;
/// List of continents.
final List<Continent> continents;
/// List of continents.
final List<Continent> continents;
ContinentList({required this.total, required this.continents});
ContinentList({
required this.total,
required this.continents,
});
factory ContinentList.fromMap(Map<String, dynamic> map) {
return ContinentList(
total: map['total'],
continents: List<Continent>.from(
map['continents'].map((p) => Continent.fromMap(p)),
),
);
}
factory ContinentList.fromMap(Map<String, dynamic> map) {
return ContinentList(
total: map['total'],
continents: List<Continent>.from(map['continents'].map((p) => Continent.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"continents": continents.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"continents": continents.map((p) => p.toMap()).toList(),
};
}
}
+20 -11
View File
@@ -2,19 +2,28 @@ part of '../../models.dart';
/// Country
class Country implements Model {
/// Country name.
final String name;
/// Country name.
final String name;
/// Country two-character ISO 3166-1 alpha code.
final String code;
/// Country two-character ISO 3166-1 alpha code.
final String code;
Country({required this.name, required this.code});
Country({
required this.name,
required this.code,
});
factory Country.fromMap(Map<String, dynamic> map) {
return Country(name: map['name'].toString(), code: map['code'].toString());
}
factory Country.fromMap(Map<String, dynamic> map) {
return Country(
name: map['name'].toString(),
code: map['code'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"name": name, "code": code};
}
Map<String, dynamic> toMap() {
return {
"name": name,
"code": code,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Countries List
class CountryList implements Model {
/// Total number of countries that matched your query.
final int total;
/// Total number of countries that matched your query.
final int total;
/// List of countries.
final List<Country> countries;
/// List of countries.
final List<Country> countries;
CountryList({required this.total, required this.countries});
CountryList({
required this.total,
required this.countries,
});
factory CountryList.fromMap(Map<String, dynamic> map) {
return CountryList(
total: map['total'],
countries: List<Country>.from(
map['countries'].map((p) => Country.fromMap(p)),
),
);
}
factory CountryList.fromMap(Map<String, dynamic> map) {
return CountryList(
total: map['total'],
countries: List<Country>.from(map['countries'].map((p) => Country.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"countries": countries.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"countries": countries.map((p) => p.toMap()).toList(),
};
}
}
+45 -45
View File
@@ -2,58 +2,58 @@ part of '../../models.dart';
/// Currency
class Currency implements Model {
/// Currency symbol.
final String symbol;
/// Currency symbol.
final String symbol;
/// Currency name.
final String name;
/// Currency name.
final String name;
/// Currency native symbol.
final String symbolNative;
/// Currency native symbol.
final String symbolNative;
/// Number of decimal digits.
final int decimalDigits;
/// Number of decimal digits.
final int decimalDigits;
/// Currency digit rounding.
final double rounding;
/// Currency digit rounding.
final double rounding;
/// Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format.
final String code;
/// Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format.
final String code;
/// Currency plural name
final String namePlural;
/// Currency plural name
final String namePlural;
Currency({
required this.symbol,
required this.name,
required this.symbolNative,
required this.decimalDigits,
required this.rounding,
required this.code,
required this.namePlural,
});
Currency({
required this.symbol,
required this.name,
required this.symbolNative,
required this.decimalDigits,
required this.rounding,
required this.code,
required this.namePlural,
});
factory Currency.fromMap(Map<String, dynamic> map) {
return Currency(
symbol: map['symbol'].toString(),
name: map['name'].toString(),
symbolNative: map['symbolNative'].toString(),
decimalDigits: map['decimalDigits'],
rounding: map['rounding'].toDouble(),
code: map['code'].toString(),
namePlural: map['namePlural'].toString(),
);
}
factory Currency.fromMap(Map<String, dynamic> map) {
return Currency(
symbol: map['symbol'].toString(),
name: map['name'].toString(),
symbolNative: map['symbolNative'].toString(),
decimalDigits: map['decimalDigits'],
rounding: map['rounding'].toDouble(),
code: map['code'].toString(),
namePlural: map['namePlural'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"symbol": symbol,
"name": name,
"symbolNative": symbolNative,
"decimalDigits": decimalDigits,
"rounding": rounding,
"code": code,
"namePlural": namePlural,
};
}
Map<String, dynamic> toMap() {
return {
"symbol": symbol,
"name": name,
"symbolNative": symbolNative,
"decimalDigits": decimalDigits,
"rounding": rounding,
"code": code,
"namePlural": namePlural,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Currencies List
class CurrencyList implements Model {
/// Total number of currencies that matched your query.
final int total;
/// Total number of currencies that matched your query.
final int total;
/// List of currencies.
final List<Currency> currencies;
/// List of currencies.
final List<Currency> currencies;
CurrencyList({required this.total, required this.currencies});
CurrencyList({
required this.total,
required this.currencies,
});
factory CurrencyList.fromMap(Map<String, dynamic> map) {
return CurrencyList(
total: map['total'],
currencies: List<Currency>.from(
map['currencies'].map((p) => Currency.fromMap(p)),
),
);
}
factory CurrencyList.fromMap(Map<String, dynamic> map) {
return CurrencyList(
total: map['total'],
currencies: List<Currency>.from(map['currencies'].map((p) => Currency.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"currencies": currencies.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"currencies": currencies.map((p) => p.toMap()).toList(),
};
}
}
+50 -50
View File
@@ -2,65 +2,65 @@ part of '../../models.dart';
/// Document
class Document implements Model {
/// Document ID.
final String $id;
/// Document ID.
final String $id;
/// Document automatically incrementing ID.
final int $sequence;
/// Document automatically incrementing ID.
final int $sequence;
/// Collection ID.
final String $collectionId;
/// Collection ID.
final String $collectionId;
/// Database ID.
final String $databaseId;
/// Database ID.
final String $databaseId;
/// Document creation date in ISO 8601 format.
final String $createdAt;
/// Document creation date in ISO 8601 format.
final String $createdAt;
/// Document update date in ISO 8601 format.
final String $updatedAt;
/// Document update date in ISO 8601 format.
final String $updatedAt;
/// Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
final List<String> $permissions;
/// Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
final List<String> $permissions;
final Map<String, dynamic> data;
final Map<String, dynamic> data;
Document({
required this.$id,
required this.$sequence,
required this.$collectionId,
required this.$databaseId,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.data,
});
Document({
required this.$id,
required this.$sequence,
required this.$collectionId,
required this.$databaseId,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.data,
});
factory Document.fromMap(Map<String, dynamic> map) {
return Document(
$id: map['\$id'].toString(),
$sequence: map['\$sequence'],
$collectionId: map['\$collectionId'].toString(),
$databaseId: map['\$databaseId'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
data: map["data"] ?? map,
);
}
factory Document.fromMap(Map<String, dynamic> map) {
return Document(
$id: map['\$id'].toString(),
$sequence: map['\$sequence'],
$collectionId: map['\$collectionId'].toString(),
$databaseId: map['\$databaseId'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
data: map["data"] ?? map,
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$sequence": $sequence,
"\$collectionId": $collectionId,
"\$databaseId": $databaseId,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"data": data,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$sequence": $sequence,
"\$collectionId": $collectionId,
"\$databaseId": $databaseId,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"data": data,
};
}
T convertTo<T>(T Function(Map<String, dynamic>) fromJson) => fromJson(data);
T convertTo<T>(T Function(Map<String, dynamic>) fromJson) => fromJson(data);
}
+22 -21
View File
@@ -2,30 +2,31 @@ part of '../../models.dart';
/// Documents List
class DocumentList implements Model {
/// Total number of documents that matched your query.
final int total;
/// Total number of documents that matched your query.
final int total;
/// List of documents.
final List<Document> documents;
/// List of documents.
final List<Document> documents;
DocumentList({required this.total, required this.documents});
DocumentList({
required this.total,
required this.documents,
});
factory DocumentList.fromMap(Map<String, dynamic> map) {
return DocumentList(
total: map['total'],
documents: List<Document>.from(
map['documents'].map((p) => Document.fromMap(p)),
),
);
}
factory DocumentList.fromMap(Map<String, dynamic> map) {
return DocumentList(
total: map['total'],
documents: List<Document>.from(map['documents'].map((p) => Document.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"documents": documents.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"documents": documents.map((p) => p.toMap()).toList(),
};
}
List<T> convertTo<T>(T Function(Map) fromJson) =>
documents.map((d) => d.convertTo<T>(fromJson)).toList();
List<T> convertTo<T>(T Function(Map) fromJson) =>
documents.map((d) => d.convertTo<T>(fromJson)).toList();
}
+100 -108
View File
@@ -2,132 +2,124 @@ part of '../../models.dart';
/// Execution
class Execution implements Model {
/// Execution ID.
final String $id;
/// Execution ID.
final String $id;
/// Execution creation date in ISO 8601 format.
final String $createdAt;
/// Execution creation date in ISO 8601 format.
final String $createdAt;
/// Execution update date in ISO 8601 format.
final String $updatedAt;
/// Execution update date in ISO 8601 format.
final String $updatedAt;
/// Execution roles.
final List<String> $permissions;
/// Execution roles.
final List<String> $permissions;
/// Function ID.
final String functionId;
/// Function ID.
final String functionId;
/// Function&#039;s deployment ID used to create the execution.
final String deploymentId;
/// Function&#039;s deployment ID used to create the execution.
final String deploymentId;
/// The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.
final enums.ExecutionTrigger trigger;
/// The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.
final enums.ExecutionTrigger trigger;
/// The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.
final enums.ExecutionStatus status;
/// The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.
final enums.ExecutionStatus status;
/// HTTP request method type.
final String requestMethod;
/// HTTP request method type.
final String requestMethod;
/// HTTP request path and query.
final String requestPath;
/// HTTP request path and query.
final String requestPath;
/// HTTP request headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
final List<Headers> requestHeaders;
/// HTTP request headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
final List<Headers> requestHeaders;
/// HTTP response status code.
final int responseStatusCode;
/// HTTP response status code.
final int responseStatusCode;
/// HTTP response body. This will return empty unless execution is created as synchronous.
final String responseBody;
/// HTTP response body. This will return empty unless execution is created as synchronous.
final String responseBody;
/// HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
final List<Headers> responseHeaders;
/// HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous.
final List<Headers> responseHeaders;
/// Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
final String logs;
/// Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
final String logs;
/// Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
final String errors;
/// Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.
final String errors;
/// Resource(function/site) execution duration in seconds.
final double duration;
/// Resource(function/site) execution duration in seconds.
final double duration;
/// The scheduled time for execution. If left empty, execution will be queued immediately.
final String? scheduledAt;
/// The scheduled time for execution. If left empty, execution will be queued immediately.
final String? scheduledAt;
Execution({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.functionId,
required this.deploymentId,
required this.trigger,
required this.status,
required this.requestMethod,
required this.requestPath,
required this.requestHeaders,
required this.responseStatusCode,
required this.responseBody,
required this.responseHeaders,
required this.logs,
required this.errors,
required this.duration,
this.scheduledAt,
});
Execution({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.functionId,
required this.deploymentId,
required this.trigger,
required this.status,
required this.requestMethod,
required this.requestPath,
required this.requestHeaders,
required this.responseStatusCode,
required this.responseBody,
required this.responseHeaders,
required this.logs,
required this.errors,
required this.duration,
this.scheduledAt,
});
factory Execution.fromMap(Map<String, dynamic> map) {
return Execution(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
functionId: map['functionId'].toString(),
deploymentId: map['deploymentId'].toString(),
trigger: enums.ExecutionTrigger.values.firstWhere(
(e) => e.value == map['trigger'],
),
status: enums.ExecutionStatus.values.firstWhere(
(e) => e.value == map['status'],
),
requestMethod: map['requestMethod'].toString(),
requestPath: map['requestPath'].toString(),
requestHeaders: List<Headers>.from(
map['requestHeaders'].map((p) => Headers.fromMap(p)),
),
responseStatusCode: map['responseStatusCode'],
responseBody: map['responseBody'].toString(),
responseHeaders: List<Headers>.from(
map['responseHeaders'].map((p) => Headers.fromMap(p)),
),
logs: map['logs'].toString(),
errors: map['errors'].toString(),
duration: map['duration'].toDouble(),
scheduledAt: map['scheduledAt']?.toString(),
);
}
factory Execution.fromMap(Map<String, dynamic> map) {
return Execution(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
functionId: map['functionId'].toString(),
deploymentId: map['deploymentId'].toString(),
trigger: enums.ExecutionTrigger.values.firstWhere((e) => e.value == map['trigger']),
status: enums.ExecutionStatus.values.firstWhere((e) => e.value == map['status']),
requestMethod: map['requestMethod'].toString(),
requestPath: map['requestPath'].toString(),
requestHeaders: List<Headers>.from(map['requestHeaders'].map((p) => Headers.fromMap(p))),
responseStatusCode: map['responseStatusCode'],
responseBody: map['responseBody'].toString(),
responseHeaders: List<Headers>.from(map['responseHeaders'].map((p) => Headers.fromMap(p))),
logs: map['logs'].toString(),
errors: map['errors'].toString(),
duration: map['duration'].toDouble(),
scheduledAt: map['scheduledAt']?.toString(),
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"functionId": functionId,
"deploymentId": deploymentId,
"trigger": trigger.value,
"status": status.value,
"requestMethod": requestMethod,
"requestPath": requestPath,
"requestHeaders": requestHeaders.map((p) => p.toMap()).toList(),
"responseStatusCode": responseStatusCode,
"responseBody": responseBody,
"responseHeaders": responseHeaders.map((p) => p.toMap()).toList(),
"logs": logs,
"errors": errors,
"duration": duration,
"scheduledAt": scheduledAt,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"functionId": functionId,
"deploymentId": deploymentId,
"trigger": trigger.value,
"status": status.value,
"requestMethod": requestMethod,
"requestPath": requestPath,
"requestHeaders": requestHeaders.map((p) => p.toMap()).toList(),
"responseStatusCode": responseStatusCode,
"responseBody": responseBody,
"responseHeaders": responseHeaders.map((p) => p.toMap()).toList(),
"logs": logs,
"errors": errors,
"duration": duration,
"scheduledAt": scheduledAt,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Executions List
class ExecutionList implements Model {
/// Total number of executions that matched your query.
final int total;
/// Total number of executions that matched your query.
final int total;
/// List of executions.
final List<Execution> executions;
/// List of executions.
final List<Execution> executions;
ExecutionList({required this.total, required this.executions});
ExecutionList({
required this.total,
required this.executions,
});
factory ExecutionList.fromMap(Map<String, dynamic> map) {
return ExecutionList(
total: map['total'],
executions: List<Execution>.from(
map['executions'].map((p) => Execution.fromMap(p)),
),
);
}
factory ExecutionList.fromMap(Map<String, dynamic> map) {
return ExecutionList(
total: map['total'],
executions: List<Execution>.from(map['executions'].map((p) => Execution.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"executions": executions.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"executions": executions.map((p) => p.toMap()).toList(),
};
}
}
+65 -65
View File
@@ -2,82 +2,82 @@ part of '../../models.dart';
/// File
class File implements Model {
/// File ID.
final String $id;
/// File ID.
final String $id;
/// Bucket ID.
final String bucketId;
/// Bucket ID.
final String bucketId;
/// File creation date in ISO 8601 format.
final String $createdAt;
/// File creation date in ISO 8601 format.
final String $createdAt;
/// File update date in ISO 8601 format.
final String $updatedAt;
/// File update date in ISO 8601 format.
final String $updatedAt;
/// File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
final List<String> $permissions;
/// File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
final List<String> $permissions;
/// File name.
final String name;
/// File name.
final String name;
/// File MD5 signature.
final String signature;
/// File MD5 signature.
final String signature;
/// File mime type.
final String mimeType;
/// File mime type.
final String mimeType;
/// File original size in bytes.
final int sizeOriginal;
/// File original size in bytes.
final int sizeOriginal;
/// Total number of chunks available
final int chunksTotal;
/// Total number of chunks available
final int chunksTotal;
/// Total number of chunks uploaded
final int chunksUploaded;
/// Total number of chunks uploaded
final int chunksUploaded;
File({
required this.$id,
required this.bucketId,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.name,
required this.signature,
required this.mimeType,
required this.sizeOriginal,
required this.chunksTotal,
required this.chunksUploaded,
});
File({
required this.$id,
required this.bucketId,
required this.$createdAt,
required this.$updatedAt,
required this.$permissions,
required this.name,
required this.signature,
required this.mimeType,
required this.sizeOriginal,
required this.chunksTotal,
required this.chunksUploaded,
});
factory File.fromMap(Map<String, dynamic> map) {
return File(
$id: map['\$id'].toString(),
bucketId: map['bucketId'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
name: map['name'].toString(),
signature: map['signature'].toString(),
mimeType: map['mimeType'].toString(),
sizeOriginal: map['sizeOriginal'],
chunksTotal: map['chunksTotal'],
chunksUploaded: map['chunksUploaded'],
);
}
factory File.fromMap(Map<String, dynamic> map) {
return File(
$id: map['\$id'].toString(),
bucketId: map['bucketId'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
$permissions: List.from(map['\$permissions'] ?? []),
name: map['name'].toString(),
signature: map['signature'].toString(),
mimeType: map['mimeType'].toString(),
sizeOriginal: map['sizeOriginal'],
chunksTotal: map['chunksTotal'],
chunksUploaded: map['chunksUploaded'],
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"bucketId": bucketId,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"name": name,
"signature": signature,
"mimeType": mimeType,
"sizeOriginal": sizeOriginal,
"chunksTotal": chunksTotal,
"chunksUploaded": chunksUploaded,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"bucketId": bucketId,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"\$permissions": $permissions,
"name": name,
"signature": signature,
"mimeType": mimeType,
"sizeOriginal": sizeOriginal,
"chunksTotal": chunksTotal,
"chunksUploaded": chunksUploaded,
};
}
}
+20 -14
View File
@@ -2,22 +2,28 @@ part of '../../models.dart';
/// Files List
class FileList implements Model {
/// Total number of files that matched your query.
final int total;
/// Total number of files that matched your query.
final int total;
/// List of files.
final List<File> files;
/// List of files.
final List<File> files;
FileList({required this.total, required this.files});
FileList({
required this.total,
required this.files,
});
factory FileList.fromMap(Map<String, dynamic> map) {
return FileList(
total: map['total'],
files: List<File>.from(map['files'].map((p) => File.fromMap(p))),
);
}
factory FileList.fromMap(Map<String, dynamic> map) {
return FileList(
total: map['total'],
files: List<File>.from(map['files'].map((p) => File.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {"total": total, "files": files.map((p) => p.toMap()).toList()};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"files": files.map((p) => p.toMap()).toList(),
};
}
}
+20 -14
View File
@@ -2,22 +2,28 @@ part of '../../models.dart';
/// Headers
class Headers implements Model {
/// Header name.
final String name;
/// Header name.
final String name;
/// Header value.
final String value;
/// Header value.
final String value;
Headers({required this.name, required this.value});
Headers({
required this.name,
required this.value,
});
factory Headers.fromMap(Map<String, dynamic> map) {
return Headers(
name: map['name'].toString(),
value: map['value'].toString(),
);
}
factory Headers.fromMap(Map<String, dynamic> map) {
return Headers(
name: map['name'].toString(),
value: map['value'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"name": name, "value": value};
}
Map<String, dynamic> toMap() {
return {
"name": name,
"value": value,
};
}
}
+60 -60
View File
@@ -2,76 +2,76 @@ part of '../../models.dart';
/// Identity
class Identity implements Model {
/// Identity ID.
final String $id;
/// Identity ID.
final String $id;
/// Identity creation date in ISO 8601 format.
final String $createdAt;
/// Identity creation date in ISO 8601 format.
final String $createdAt;
/// Identity update date in ISO 8601 format.
final String $updatedAt;
/// Identity update date in ISO 8601 format.
final String $updatedAt;
/// User ID.
final String userId;
/// User ID.
final String userId;
/// Identity Provider.
final String provider;
/// Identity Provider.
final String provider;
/// ID of the User in the Identity Provider.
final String providerUid;
/// ID of the User in the Identity Provider.
final String providerUid;
/// Email of the User in the Identity Provider.
final String providerEmail;
/// Email of the User in the Identity Provider.
final String providerEmail;
/// Identity Provider Access Token.
final String providerAccessToken;
/// Identity Provider Access Token.
final String providerAccessToken;
/// The date of when the access token expires in ISO 8601 format.
final String providerAccessTokenExpiry;
/// The date of when the access token expires in ISO 8601 format.
final String providerAccessTokenExpiry;
/// Identity Provider Refresh Token.
final String providerRefreshToken;
/// Identity Provider Refresh Token.
final String providerRefreshToken;
Identity({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.userId,
required this.provider,
required this.providerUid,
required this.providerEmail,
required this.providerAccessToken,
required this.providerAccessTokenExpiry,
required this.providerRefreshToken,
});
Identity({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.userId,
required this.provider,
required this.providerUid,
required this.providerEmail,
required this.providerAccessToken,
required this.providerAccessTokenExpiry,
required this.providerRefreshToken,
});
factory Identity.fromMap(Map<String, dynamic> map) {
return Identity(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
userId: map['userId'].toString(),
provider: map['provider'].toString(),
providerUid: map['providerUid'].toString(),
providerEmail: map['providerEmail'].toString(),
providerAccessToken: map['providerAccessToken'].toString(),
providerAccessTokenExpiry: map['providerAccessTokenExpiry'].toString(),
providerRefreshToken: map['providerRefreshToken'].toString(),
);
}
factory Identity.fromMap(Map<String, dynamic> map) {
return Identity(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
userId: map['userId'].toString(),
provider: map['provider'].toString(),
providerUid: map['providerUid'].toString(),
providerEmail: map['providerEmail'].toString(),
providerAccessToken: map['providerAccessToken'].toString(),
providerAccessTokenExpiry: map['providerAccessTokenExpiry'].toString(),
providerRefreshToken: map['providerRefreshToken'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"userId": userId,
"provider": provider,
"providerUid": providerUid,
"providerEmail": providerEmail,
"providerAccessToken": providerAccessToken,
"providerAccessTokenExpiry": providerAccessTokenExpiry,
"providerRefreshToken": providerRefreshToken,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"userId": userId,
"provider": provider,
"providerUid": providerUid,
"providerEmail": providerEmail,
"providerAccessToken": providerAccessToken,
"providerAccessTokenExpiry": providerAccessTokenExpiry,
"providerRefreshToken": providerRefreshToken,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Identities List
class IdentityList implements Model {
/// Total number of identities that matched your query.
final int total;
/// Total number of identities that matched your query.
final int total;
/// List of identities.
final List<Identity> identities;
/// List of identities.
final List<Identity> identities;
IdentityList({required this.total, required this.identities});
IdentityList({
required this.total,
required this.identities,
});
factory IdentityList.fromMap(Map<String, dynamic> map) {
return IdentityList(
total: map['total'],
identities: List<Identity>.from(
map['identities'].map((p) => Identity.fromMap(p)),
),
);
}
factory IdentityList.fromMap(Map<String, dynamic> map) {
return IdentityList(
total: map['total'],
identities: List<Identity>.from(map['identities'].map((p) => Identity.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"identities": identities.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"identities": identities.map((p) => p.toMap()).toList(),
};
}
}
+15 -9
View File
@@ -2,16 +2,22 @@ part of '../../models.dart';
/// JWT
class Jwt implements Model {
/// JWT encoded string.
final String jwt;
/// JWT encoded string.
final String jwt;
Jwt({required this.jwt});
Jwt({
required this.jwt,
});
factory Jwt.fromMap(Map<String, dynamic> map) {
return Jwt(jwt: map['jwt'].toString());
}
factory Jwt.fromMap(Map<String, dynamic> map) {
return Jwt(
jwt: map['jwt'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"jwt": jwt};
}
Map<String, dynamic> toMap() {
return {
"jwt": jwt,
};
}
}
+25 -17
View File
@@ -2,26 +2,34 @@ part of '../../models.dart';
/// Language
class Language implements Model {
/// Language name.
final String name;
/// Language name.
final String name;
/// Language two-character ISO 639-1 codes.
final String code;
/// Language two-character ISO 639-1 codes.
final String code;
/// Language native name.
final String nativeName;
/// Language native name.
final String nativeName;
Language({required this.name, required this.code, required this.nativeName});
Language({
required this.name,
required this.code,
required this.nativeName,
});
factory Language.fromMap(Map<String, dynamic> map) {
return Language(
name: map['name'].toString(),
code: map['code'].toString(),
nativeName: map['nativeName'].toString(),
);
}
factory Language.fromMap(Map<String, dynamic> map) {
return Language(
name: map['name'].toString(),
code: map['code'].toString(),
nativeName: map['nativeName'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"name": name, "code": code, "nativeName": nativeName};
}
Map<String, dynamic> toMap() {
return {
"name": name,
"code": code,
"nativeName": nativeName,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Languages List
class LanguageList implements Model {
/// Total number of languages that matched your query.
final int total;
/// Total number of languages that matched your query.
final int total;
/// List of languages.
final List<Language> languages;
/// List of languages.
final List<Language> languages;
LanguageList({required this.total, required this.languages});
LanguageList({
required this.total,
required this.languages,
});
factory LanguageList.fromMap(Map<String, dynamic> map) {
return LanguageList(
total: map['total'],
languages: List<Language>.from(
map['languages'].map((p) => Language.fromMap(p)),
),
);
}
factory LanguageList.fromMap(Map<String, dynamic> map) {
return LanguageList(
total: map['total'],
languages: List<Language>.from(map['languages'].map((p) => Language.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"languages": languages.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"languages": languages.map((p) => p.toMap()).toList(),
};
}
}
+45 -45
View File
@@ -2,58 +2,58 @@ part of '../../models.dart';
/// Locale
class Locale implements Model {
/// User IP address.
final String ip;
/// User IP address.
final String ip;
/// Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format
final String countryCode;
/// Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format
final String countryCode;
/// Country name. This field support localization.
final String country;
/// Country name. This field support localization.
final String country;
/// Continent code. A two character continent code &quot;AF&quot; for Africa, &quot;AN&quot; for Antarctica, &quot;AS&quot; for Asia, &quot;EU&quot; for Europe, &quot;NA&quot; for North America, &quot;OC&quot; for Oceania, and &quot;SA&quot; for South America.
final String continentCode;
/// Continent code. A two character continent code &quot;AF&quot; for Africa, &quot;AN&quot; for Antarctica, &quot;AS&quot; for Asia, &quot;EU&quot; for Europe, &quot;NA&quot; for North America, &quot;OC&quot; for Oceania, and &quot;SA&quot; for South America.
final String continentCode;
/// Continent name. This field support localization.
final String continent;
/// Continent name. This field support localization.
final String continent;
/// True if country is part of the European Union.
final bool eu;
/// True if country is part of the European Union.
final bool eu;
/// Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format
final String currency;
/// Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format
final String currency;
Locale({
required this.ip,
required this.countryCode,
required this.country,
required this.continentCode,
required this.continent,
required this.eu,
required this.currency,
});
Locale({
required this.ip,
required this.countryCode,
required this.country,
required this.continentCode,
required this.continent,
required this.eu,
required this.currency,
});
factory Locale.fromMap(Map<String, dynamic> map) {
return Locale(
ip: map['ip'].toString(),
countryCode: map['countryCode'].toString(),
country: map['country'].toString(),
continentCode: map['continentCode'].toString(),
continent: map['continent'].toString(),
eu: map['eu'],
currency: map['currency'].toString(),
);
}
factory Locale.fromMap(Map<String, dynamic> map) {
return Locale(
ip: map['ip'].toString(),
countryCode: map['countryCode'].toString(),
country: map['country'].toString(),
continentCode: map['continentCode'].toString(),
continent: map['continent'].toString(),
eu: map['eu'],
currency: map['currency'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"ip": ip,
"countryCode": countryCode,
"country": country,
"continentCode": continentCode,
"continent": continent,
"eu": eu,
"currency": currency,
};
}
Map<String, dynamic> toMap() {
return {
"ip": ip,
"countryCode": countryCode,
"country": country,
"continentCode": continentCode,
"continent": continent,
"eu": eu,
"currency": currency,
};
}
}
+20 -14
View File
@@ -2,22 +2,28 @@ part of '../../models.dart';
/// LocaleCode
class LocaleCode implements Model {
/// Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
final String code;
/// Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
final String code;
/// Locale name
final String name;
/// Locale name
final String name;
LocaleCode({required this.code, required this.name});
LocaleCode({
required this.code,
required this.name,
});
factory LocaleCode.fromMap(Map<String, dynamic> map) {
return LocaleCode(
code: map['code'].toString(),
name: map['name'].toString(),
);
}
factory LocaleCode.fromMap(Map<String, dynamic> map) {
return LocaleCode(
code: map['code'].toString(),
name: map['name'].toString(),
);
}
Map<String, dynamic> toMap() {
return {"code": code, "name": name};
}
Map<String, dynamic> toMap() {
return {
"code": code,
"name": name,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Locale codes list
class LocaleCodeList implements Model {
/// Total number of localeCodes that matched your query.
final int total;
/// Total number of localeCodes that matched your query.
final int total;
/// List of localeCodes.
final List<LocaleCode> localeCodes;
/// List of localeCodes.
final List<LocaleCode> localeCodes;
LocaleCodeList({required this.total, required this.localeCodes});
LocaleCodeList({
required this.total,
required this.localeCodes,
});
factory LocaleCodeList.fromMap(Map<String, dynamic> map) {
return LocaleCodeList(
total: map['total'],
localeCodes: List<LocaleCode>.from(
map['localeCodes'].map((p) => LocaleCode.fromMap(p)),
),
);
}
factory LocaleCodeList.fromMap(Map<String, dynamic> map) {
return LocaleCodeList(
total: map['total'],
localeCodes: List<LocaleCode>.from(map['localeCodes'].map((p) => LocaleCode.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"localeCodes": localeCodes.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"localeCodes": localeCodes.map((p) => p.toMap()).toList(),
};
}
}
+115 -115
View File
@@ -2,142 +2,142 @@ part of '../../models.dart';
/// Log
class Log implements Model {
/// Event name.
final String event;
/// Event name.
final String event;
/// User ID.
final String userId;
/// User ID.
final String userId;
/// User Email.
final String userEmail;
/// User Email.
final String userEmail;
/// User Name.
final String userName;
/// User Name.
final String userName;
/// API mode when event triggered.
final String mode;
/// API mode when event triggered.
final String mode;
/// IP session in use when the session was created.
final String ip;
/// IP session in use when the session was created.
final String ip;
/// Log creation date in ISO 8601 format.
final String time;
/// Log creation date in ISO 8601 format.
final String time;
/// Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json).
final String osCode;
/// Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json).
final String osCode;
/// Operating system name.
final String osName;
/// Operating system name.
final String osName;
/// Operating system version.
final String osVersion;
/// Operating system version.
final String osVersion;
/// Client type.
final String clientType;
/// Client type.
final String clientType;
/// Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json).
final String clientCode;
/// Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json).
final String clientCode;
/// Client name.
final String clientName;
/// Client name.
final String clientName;
/// Client version.
final String clientVersion;
/// Client version.
final String clientVersion;
/// Client engine name.
final String clientEngine;
/// Client engine name.
final String clientEngine;
/// Client engine name.
final String clientEngineVersion;
/// Client engine name.
final String clientEngineVersion;
/// Device name.
final String deviceName;
/// Device name.
final String deviceName;
/// Device brand name.
final String deviceBrand;
/// Device brand name.
final String deviceBrand;
/// Device model name.
final String deviceModel;
/// Device model name.
final String deviceModel;
/// Country two-character ISO 3166-1 alpha code.
final String countryCode;
/// Country two-character ISO 3166-1 alpha code.
final String countryCode;
/// Country name.
final String countryName;
/// Country name.
final String countryName;
Log({
required this.event,
required this.userId,
required this.userEmail,
required this.userName,
required this.mode,
required this.ip,
required this.time,
required this.osCode,
required this.osName,
required this.osVersion,
required this.clientType,
required this.clientCode,
required this.clientName,
required this.clientVersion,
required this.clientEngine,
required this.clientEngineVersion,
required this.deviceName,
required this.deviceBrand,
required this.deviceModel,
required this.countryCode,
required this.countryName,
});
Log({
required this.event,
required this.userId,
required this.userEmail,
required this.userName,
required this.mode,
required this.ip,
required this.time,
required this.osCode,
required this.osName,
required this.osVersion,
required this.clientType,
required this.clientCode,
required this.clientName,
required this.clientVersion,
required this.clientEngine,
required this.clientEngineVersion,
required this.deviceName,
required this.deviceBrand,
required this.deviceModel,
required this.countryCode,
required this.countryName,
});
factory Log.fromMap(Map<String, dynamic> map) {
return Log(
event: map['event'].toString(),
userId: map['userId'].toString(),
userEmail: map['userEmail'].toString(),
userName: map['userName'].toString(),
mode: map['mode'].toString(),
ip: map['ip'].toString(),
time: map['time'].toString(),
osCode: map['osCode'].toString(),
osName: map['osName'].toString(),
osVersion: map['osVersion'].toString(),
clientType: map['clientType'].toString(),
clientCode: map['clientCode'].toString(),
clientName: map['clientName'].toString(),
clientVersion: map['clientVersion'].toString(),
clientEngine: map['clientEngine'].toString(),
clientEngineVersion: map['clientEngineVersion'].toString(),
deviceName: map['deviceName'].toString(),
deviceBrand: map['deviceBrand'].toString(),
deviceModel: map['deviceModel'].toString(),
countryCode: map['countryCode'].toString(),
countryName: map['countryName'].toString(),
);
}
factory Log.fromMap(Map<String, dynamic> map) {
return Log(
event: map['event'].toString(),
userId: map['userId'].toString(),
userEmail: map['userEmail'].toString(),
userName: map['userName'].toString(),
mode: map['mode'].toString(),
ip: map['ip'].toString(),
time: map['time'].toString(),
osCode: map['osCode'].toString(),
osName: map['osName'].toString(),
osVersion: map['osVersion'].toString(),
clientType: map['clientType'].toString(),
clientCode: map['clientCode'].toString(),
clientName: map['clientName'].toString(),
clientVersion: map['clientVersion'].toString(),
clientEngine: map['clientEngine'].toString(),
clientEngineVersion: map['clientEngineVersion'].toString(),
deviceName: map['deviceName'].toString(),
deviceBrand: map['deviceBrand'].toString(),
deviceModel: map['deviceModel'].toString(),
countryCode: map['countryCode'].toString(),
countryName: map['countryName'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"event": event,
"userId": userId,
"userEmail": userEmail,
"userName": userName,
"mode": mode,
"ip": ip,
"time": time,
"osCode": osCode,
"osName": osName,
"osVersion": osVersion,
"clientType": clientType,
"clientCode": clientCode,
"clientName": clientName,
"clientVersion": clientVersion,
"clientEngine": clientEngine,
"clientEngineVersion": clientEngineVersion,
"deviceName": deviceName,
"deviceBrand": deviceBrand,
"deviceModel": deviceModel,
"countryCode": countryCode,
"countryName": countryName,
};
}
Map<String, dynamic> toMap() {
return {
"event": event,
"userId": userId,
"userEmail": userEmail,
"userName": userName,
"mode": mode,
"ip": ip,
"time": time,
"osCode": osCode,
"osName": osName,
"osVersion": osVersion,
"clientType": clientType,
"clientCode": clientCode,
"clientName": clientName,
"clientVersion": clientVersion,
"clientEngine": clientEngine,
"clientEngineVersion": clientEngineVersion,
"deviceName": deviceName,
"deviceBrand": deviceBrand,
"deviceModel": deviceModel,
"countryCode": countryCode,
"countryName": countryName,
};
}
}
+20 -14
View File
@@ -2,22 +2,28 @@ part of '../../models.dart';
/// Logs List
class LogList implements Model {
/// Total number of logs that matched your query.
final int total;
/// Total number of logs that matched your query.
final int total;
/// List of logs.
final List<Log> logs;
/// List of logs.
final List<Log> logs;
LogList({required this.total, required this.logs});
LogList({
required this.total,
required this.logs,
});
factory LogList.fromMap(Map<String, dynamic> map) {
return LogList(
total: map['total'],
logs: List<Log>.from(map['logs'].map((p) => Log.fromMap(p))),
);
}
factory LogList.fromMap(Map<String, dynamic> map) {
return LogList(
total: map['total'],
logs: List<Log>.from(map['logs'].map((p) => Log.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {"total": total, "logs": logs.map((p) => p.toMap()).toList()};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"logs": logs.map((p) => p.toMap()).toList(),
};
}
}
+75 -75
View File
@@ -2,94 +2,94 @@ part of '../../models.dart';
/// Membership
class Membership implements Model {
/// Membership ID.
final String $id;
/// Membership ID.
final String $id;
/// Membership creation date in ISO 8601 format.
final String $createdAt;
/// Membership creation date in ISO 8601 format.
final String $createdAt;
/// Membership update date in ISO 8601 format.
final String $updatedAt;
/// Membership update date in ISO 8601 format.
final String $updatedAt;
/// User ID.
final String userId;
/// User ID.
final String userId;
/// User name. Hide this attribute by toggling membership privacy in the Console.
final String userName;
/// User name. Hide this attribute by toggling membership privacy in the Console.
final String userName;
/// User email address. Hide this attribute by toggling membership privacy in the Console.
final String userEmail;
/// User email address. Hide this attribute by toggling membership privacy in the Console.
final String userEmail;
/// Team ID.
final String teamId;
/// Team ID.
final String teamId;
/// Team name.
final String teamName;
/// Team name.
final String teamName;
/// Date, the user has been invited to join the team in ISO 8601 format.
final String invited;
/// Date, the user has been invited to join the team in ISO 8601 format.
final String invited;
/// Date, the user has accepted the invitation to join the team in ISO 8601 format.
final String joined;
/// Date, the user has accepted the invitation to join the team in ISO 8601 format.
final String joined;
/// User confirmation status, true if the user has joined the team or false otherwise.
final bool confirm;
/// User confirmation status, true if the user has joined the team or false otherwise.
final bool confirm;
/// Multi factor authentication status, true if the user has MFA enabled or false otherwise. Hide this attribute by toggling membership privacy in the Console.
final bool mfa;
/// Multi factor authentication status, true if the user has MFA enabled or false otherwise. Hide this attribute by toggling membership privacy in the Console.
final bool mfa;
/// User list of roles
final List<String> roles;
/// User list of roles
final List<String> roles;
Membership({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.userId,
required this.userName,
required this.userEmail,
required this.teamId,
required this.teamName,
required this.invited,
required this.joined,
required this.confirm,
required this.mfa,
required this.roles,
});
Membership({
required this.$id,
required this.$createdAt,
required this.$updatedAt,
required this.userId,
required this.userName,
required this.userEmail,
required this.teamId,
required this.teamName,
required this.invited,
required this.joined,
required this.confirm,
required this.mfa,
required this.roles,
});
factory Membership.fromMap(Map<String, dynamic> map) {
return Membership(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
userId: map['userId'].toString(),
userName: map['userName'].toString(),
userEmail: map['userEmail'].toString(),
teamId: map['teamId'].toString(),
teamName: map['teamName'].toString(),
invited: map['invited'].toString(),
joined: map['joined'].toString(),
confirm: map['confirm'],
mfa: map['mfa'],
roles: List.from(map['roles'] ?? []),
);
}
factory Membership.fromMap(Map<String, dynamic> map) {
return Membership(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
$updatedAt: map['\$updatedAt'].toString(),
userId: map['userId'].toString(),
userName: map['userName'].toString(),
userEmail: map['userEmail'].toString(),
teamId: map['teamId'].toString(),
teamName: map['teamName'].toString(),
invited: map['invited'].toString(),
joined: map['joined'].toString(),
confirm: map['confirm'],
mfa: map['mfa'],
roles: List.from(map['roles'] ?? []),
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"userId": userId,
"userName": userName,
"userEmail": userEmail,
"teamId": teamId,
"teamName": teamName,
"invited": invited,
"joined": joined,
"confirm": confirm,
"mfa": mfa,
"roles": roles,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"\$updatedAt": $updatedAt,
"userId": userId,
"userName": userName,
"userEmail": userEmail,
"teamId": teamId,
"teamName": teamName,
"invited": invited,
"joined": joined,
"confirm": confirm,
"mfa": mfa,
"roles": roles,
};
}
}
+20 -19
View File
@@ -2,27 +2,28 @@ part of '../../models.dart';
/// Memberships List
class MembershipList implements Model {
/// Total number of memberships that matched your query.
final int total;
/// Total number of memberships that matched your query.
final int total;
/// List of memberships.
final List<Membership> memberships;
/// List of memberships.
final List<Membership> memberships;
MembershipList({required this.total, required this.memberships});
MembershipList({
required this.total,
required this.memberships,
});
factory MembershipList.fromMap(Map<String, dynamic> map) {
return MembershipList(
total: map['total'],
memberships: List<Membership>.from(
map['memberships'].map((p) => Membership.fromMap(p)),
),
);
}
factory MembershipList.fromMap(Map<String, dynamic> map) {
return MembershipList(
total: map['total'],
memberships: List<Membership>.from(map['memberships'].map((p) => Membership.fromMap(p))),
);
}
Map<String, dynamic> toMap() {
return {
"total": total,
"memberships": memberships.map((p) => p.toMap()).toList(),
};
}
Map<String, dynamic> toMap() {
return {
"total": total,
"memberships": memberships.map((p) => p.toMap()).toList(),
};
}
}
+30 -30
View File
@@ -2,40 +2,40 @@ part of '../../models.dart';
/// MFA Challenge
class MfaChallenge implements Model {
/// Token ID.
final String $id;
/// Token ID.
final String $id;
/// Token creation date in ISO 8601 format.
final String $createdAt;
/// Token creation date in ISO 8601 format.
final String $createdAt;
/// User ID.
final String userId;
/// User ID.
final String userId;
/// Token expiration date in ISO 8601 format.
final String expire;
/// Token expiration date in ISO 8601 format.
final String expire;
MfaChallenge({
required this.$id,
required this.$createdAt,
required this.userId,
required this.expire,
});
MfaChallenge({
required this.$id,
required this.$createdAt,
required this.userId,
required this.expire,
});
factory MfaChallenge.fromMap(Map<String, dynamic> map) {
return MfaChallenge(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
userId: map['userId'].toString(),
expire: map['expire'].toString(),
);
}
factory MfaChallenge.fromMap(Map<String, dynamic> map) {
return MfaChallenge(
$id: map['\$id'].toString(),
$createdAt: map['\$createdAt'].toString(),
userId: map['userId'].toString(),
expire: map['expire'].toString(),
);
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"userId": userId,
"expire": expire,
};
}
Map<String, dynamic> toMap() {
return {
"\$id": $id,
"\$createdAt": $createdAt,
"userId": userId,
"expire": expire,
};
}
}
+30 -30
View File
@@ -2,40 +2,40 @@ part of '../../models.dart';
/// MFAFactors
class MfaFactors implements Model {
/// Can TOTP be used for MFA challenge for this account.
final bool totp;
/// Can TOTP be used for MFA challenge for this account.
final bool totp;
/// Can phone (SMS) be used for MFA challenge for this account.
final bool phone;
/// Can phone (SMS) be used for MFA challenge for this account.
final bool phone;
/// Can email be used for MFA challenge for this account.
final bool email;
/// Can email be used for MFA challenge for this account.
final bool email;
/// Can recovery code be used for MFA challenge for this account.
final bool recoveryCode;
/// Can recovery code be used for MFA challenge for this account.
final bool recoveryCode;
MfaFactors({
required this.totp,
required this.phone,
required this.email,
required this.recoveryCode,
});
MfaFactors({
required this.totp,
required this.phone,
required this.email,
required this.recoveryCode,
});
factory MfaFactors.fromMap(Map<String, dynamic> map) {
return MfaFactors(
totp: map['totp'],
phone: map['phone'],
email: map['email'],
recoveryCode: map['recoveryCode'],
);
}
factory MfaFactors.fromMap(Map<String, dynamic> map) {
return MfaFactors(
totp: map['totp'],
phone: map['phone'],
email: map['email'],
recoveryCode: map['recoveryCode'],
);
}
Map<String, dynamic> toMap() {
return {
"totp": totp,
"phone": phone,
"email": email,
"recoveryCode": recoveryCode,
};
}
Map<String, dynamic> toMap() {
return {
"totp": totp,
"phone": phone,
"email": email,
"recoveryCode": recoveryCode,
};
}
}

Some files were not shown because too many files have changed in this diff Show More