diff --git a/app/config/platforms.php b/app/config/platforms.php
index 78295866f..98ab79633 100644
--- a/app/config/platforms.php
+++ b/app/config/platforms.php
@@ -130,7 +130,7 @@ return [
[
'key' => 'dart',
'name' => 'Dart',
- 'version' => '0.0.7',
+ 'version' => '0.0.8',
'url' => 'https://github.com/appwrite/sdk-for-dart',
'enabled' => true,
'beta' => true,
diff --git a/app/sdks/console-javascript/CHANGELOG.md b/app/sdks/console-javascript/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/console-javascript/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/console-javascript/README.md b/app/sdks/console-javascript/README.md
index 2c46552b0..e92e54a11 100644
--- a/app/sdks/console-javascript/README.md
+++ b/app/sdks/console-javascript/README.md
@@ -31,6 +31,21 @@ To install with a CDN (content delivery network) add the following scripts to th
```
+## Getting Started
+
+Initialise the Appwrite SDK in your code, and setup your API credentials:
+
+```js
+
+// Init your JS SDK
+var appwrite = new Appwrite();
+
+appwrite
+ .setEndpoint('http://localhost/v1') // Set only when using self-hosted solution
+ .setProject('455x34dfkj') // Your Appwrite Project UID
+;
+
+```
## Contribution
diff --git a/app/sdks/flutter-dart/CHANGELOG.md b/app/sdks/flutter-dart/CHANGELOG.md
new file mode 100644
index 000000000..a7a936ee7
--- /dev/null
+++ b/app/sdks/flutter-dart/CHANGELOG.md
@@ -0,0 +1,4 @@
+## 0.0.8
+
+- Fixed compilation error in Client class
+- Shorter description for package
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/README.md b/app/sdks/flutter-dart/README.md
index f51e3e5f9..861d150ba 100644
--- a/app/sdks/flutter-dart/README.md
+++ b/app/sdks/flutter-dart/README.md
@@ -3,7 +3,7 @@
![License](https://img.shields.io/github/license/appwrite/sdk-for-dart.svg?v=1)
![Version](https://img.shields.io/badge/api%20version-0.5.3-blue.svg?v=1)
-**This SDK is compatible with Appwrite server version . For older versions, please check previous releases.**
+**This SDK is compatible with Appwrite server version 0.5.3. For older versions, please check previous releases.**
Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
@@ -13,17 +13,17 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for
## Installation
-Add this to your package's pubspec.yaml file:
+Add this to your package's `pubspec.yaml` file:
```yml
dependencies:
- appwrite: ^0.0.7
+ appwrite: ^0.0.8
```
You can install packages from the command line:
```bash
-pub get
+pub get appwrite
```
## Contribution
diff --git a/app/sdks/flutter-dart/lib/appwrite.dart b/app/sdks/flutter-dart/lib/appwrite.dart
index 905f90058..e6508e907 100644
--- a/app/sdks/flutter-dart/lib/appwrite.dart
+++ b/app/sdks/flutter-dart/lib/appwrite.dart
@@ -1,8 +1,9 @@
-export 'package:appwrite/services/account.dart';
-export 'package:appwrite/services/avatars.dart';
-export 'package:appwrite/services/database.dart';
-export 'package:appwrite/services/locale.dart';
-export 'package:appwrite/services/storage.dart';
-export 'package:appwrite/services/teams.dart';
-export 'package:appwrite/client.dart';
+export 'services/account.dart';
+export 'services/avatars.dart';
+export 'services/database.dart';
+export 'services/locale.dart';
+export 'services/storage.dart';
+export 'services/teams.dart';
+export 'client.dart';
+export 'enums.dart';
export 'package:dio/dio.dart' show Response;
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/client.dart b/app/sdks/flutter-dart/lib/client.dart
index c5fb76036..943c51d18 100644
--- a/app/sdks/flutter-dart/lib/client.dart
+++ b/app/sdks/flutter-dart/lib/client.dart
@@ -1,3 +1,6 @@
+import 'dart:io';
+
+import 'package:dio/adapter.dart';
import 'package:dio/dio.dart';
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
import 'package:cookie_jar/cookie_jar.dart';
@@ -8,95 +11,74 @@ class Client {
String endPoint;
Map headers;
bool selfSigned;
- Dio http;
-
- Client() {
- this.endPoint = 'https://appwrite.io/v1';
+ final Dio http;
+
+ Client({this.endPoint: 'https://appwrite.io/v1', this.selfSigned: false, Dio http}) : this.http = http ?? Dio() {
this.headers = {
'content-type': 'application/json',
- 'x-sdk-version': 'appwrite:dart:0.0.7',
+ 'x-sdk-version': 'appwrite:dart:0.0.8',
};
- this.selfSigned = false;
- this.http = Dio();
+ assert(endPoint.startsWith(RegExp("http://|https://")), "endPoint $endPoint must start with 'http'");
this.http.options.baseUrl = this.endPoint;
this.http.options.validateStatus = (status) => status != 404;
this.http.interceptors.add(CookieManager(CookieJar()));
}
-
/// Your project ID
Client setProject(value) {
- this.addHeader('X-Appwrite-Project', value);
-
+ addHeader('X-Appwrite-Project', value);
return this;
}
-
-
/// Your secret API key
Client setKey(value) {
- this.addHeader('X-Appwrite-Key', value);
-
+ addHeader('X-Appwrite-Key', value);
return this;
}
-
-
Client setLocale(value) {
- this.addHeader('X-Appwrite-Locale', value);
-
+ addHeader('X-Appwrite-Locale', value);
return this;
}
-
-
Client setMode(value) {
- this.addHeader('X-Appwrite-Mode', value);
-
+ addHeader('X-Appwrite-Mode', value);
return this;
}
-
Client setSelfSigned({bool status = true}) {
- this.selfSigned = status;
-
+ selfSigned = status;
return this;
}
- Client setEndpoint(String endPoint)
- {
+ Client setEndpoint(String endPoint) {
this.endPoint = endPoint;
this.http.options.baseUrl = this.endPoint;
return this;
}
Client addHeader(String key, String value) {
- this.headers[key.toLowerCase()] = value.toLowerCase();
+ headers[key] = value;
return this;
}
Future call(HttpMethod method, {String path = '', Map headers = const {}, Map params = const {}}) {
- if(this.selfSigned) {
+ if(this.selfSigned) {
// Allow self signed requests
+ (http.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) {
+ client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
+ return client;
+ };
}
- String reqPath = path;
- bool isGet = method == HttpMethod.get;
-
// Origin is hardcoded for testing
Options options = Options(
headers: {...this.headers, ...headers, "Origin": "http://localhost"},
method: method.name(),
);
- if (isGet) {
- path += "?";
- params.forEach((k, v) {
- path += "${k}=${v}&";
- });
+ if (method == HttpMethod.get) {
+ return http.get(path, queryParameters: params, options: options);
+ } else {
+ return http.request(path, data: params, options: options);
}
-
- if (!isGet)
- return http.request(reqPath, data: params, options: options);
- else
- return http.request(reqPath, options: options);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/enums.dart b/app/sdks/flutter-dart/lib/enums.dart
index 69b7ba44e..003073644 100644
--- a/app/sdks/flutter-dart/lib/enums.dart
+++ b/app/sdks/flutter-dart/lib/enums.dart
@@ -2,7 +2,17 @@ enum HttpMethod {
get, post, put, delete, patch
}
-extension HttpMethodString on HttpMethod{
+extension HttpMethodString on HttpMethod {
+ String name(){
+ return this.toString().split('.').last.toUpperCase();
+ }
+}
+
+enum OrderType {
+ asc, desc
+}
+
+extension OrderTypeString on OrderType {
String name(){
return this.toString().split('.').last.toUpperCase();
}
diff --git a/app/sdks/flutter-dart/lib/service.dart b/app/sdks/flutter-dart/lib/service.dart
index 81107c780..838047604 100644
--- a/app/sdks/flutter-dart/lib/service.dart
+++ b/app/sdks/flutter-dart/lib/service.dart
@@ -1,9 +1,7 @@
-import 'package:appwrite/client.dart';
+import 'client.dart';
class Service {
- Client client;
+ final Client client;
- Service(Client client) {
- this.client = client;
- }
+ const Service(this.client);
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/account.dart b/app/sdks/flutter-dart/lib/services/account.dart
index 3e873ab95..69b1aab4c 100644
--- a/app/sdks/flutter-dart/lib/services/account.dart
+++ b/app/sdks/flutter-dart/lib/services/account.dart
@@ -1,24 +1,23 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Account extends Service {
- Account(Client client): super(client);
+ Account(Client client): super(client);
/// Get currently logged in user data as JSON object.
- Future get() async {
- String path = '/account';
+ Future get() {
+ final String path = '/account';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Use this endpoint to allow a new user to register a new account in your
/// project. After the user registration completes successfully, you can use
@@ -26,95 +25,95 @@ class Account extends Service {
/// verifying the user email address. To allow your new user to login to his
/// new account, you need to create a new [account
/// session](/docs/account#createSession).
- Future create({@required String email, @required String password, String name = null}) async {
- String path = '/account';
+ Future create({@required String email, @required String password, String name = null}) {
+ final String path = '/account';
- Map params = {
- 'email': email,
- 'password': password,
- 'name': name,
- };
+ final Map params = {
+ 'email': email,
+ 'password': password,
+ 'name': name,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Delete a currently logged in user account. Behind the scene, the user
/// record is not deleted but permanently blocked from any access. This is done
/// to avoid deleted accounts being overtaken by new users with the same email
/// address. Any user-related resources like documents or storage files should
/// be deleted separately.
- Future delete() async {
- String path = '/account';
+ Future delete() {
+ final String path = '/account';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Update currently logged in user account email address. After changing user
/// address, user confirmation status is being reset and a new confirmation
/// mail is sent. For security measures, user password is required to complete
/// this request.
- Future updateEmail({@required String email, @required String password}) async {
- String path = '/account/email';
+ Future updateEmail({@required String email, @required String password}) {
+ final String path = '/account/email';
- Map params = {
- 'email': email,
- 'password': password,
- };
+ final Map params = {
+ 'email': email,
+ 'password': password,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
/// Get currently logged in user list of latest security activity logs. Each
/// log returns user IP address, location and date and time of log.
- Future getLogs() async {
- String path = '/account/logs';
+ Future getLogs() {
+ final String path = '/account/logs';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Update currently logged in user account name.
- Future updateName({@required String name}) async {
- String path = '/account/name';
+ Future updateName({@required String name}) {
+ final String path = '/account/name';
- Map params = {
- 'name': name,
- };
+ final Map params = {
+ 'name': name,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
/// Update currently logged in user password. For validation, user is required
/// to pass the password twice.
- Future updatePassword({@required String password, @required String oldPassword}) async {
- String path = '/account/password';
+ Future updatePassword({@required String password, @required String oldPassword}) {
+ final String path = '/account/password';
- Map params = {
- 'password': password,
- 'old-password': oldPassword,
- };
+ final Map params = {
+ 'password': password,
+ 'old-password': oldPassword,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
/// Get currently logged in user preferences as a key-value object.
- Future getPrefs() async {
- String path = '/account/prefs';
+ Future getPrefs() {
+ final String path = '/account/prefs';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Update currently logged in user account preferences. You can pass only the
/// specific settings you wish to update.
- Future updatePrefs({@required dynamic prefs}) async {
- String path = '/account/prefs';
+ Future updatePrefs({@required dynamic prefs}) {
+ final String path = '/account/prefs';
- Map params = {
- 'prefs': prefs,
- };
+ final Map params = {
+ 'prefs': prefs,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
/// Sends the user an email with a temporary secret key for password reset.
/// When the user clicks the confirmation link he is redirected back to your
@@ -122,15 +121,15 @@ class Account extends Service {
/// attached to the URL query string. Use the query string params to submit a
/// request to the [PUT /account/recovery](/docs/account#updateRecovery)
/// endpoint to complete the process.
- Future createRecovery({@required String email, @required String url}) async {
- String path = '/account/recovery';
+ Future createRecovery({@required String email, @required String url}) {
+ final String path = '/account/recovery';
- Map params = {
- 'email': email,
- 'url': url,
- };
+ final Map params = {
+ 'email': email,
+ 'url': url,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Use this endpoint to complete the user account password reset. Both the
/// **userId** and **secret** arguments will be passed as query parameters to
@@ -141,74 +140,74 @@ class Account extends Service {
/// Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
/// the only valid redirect URLs are the ones from domains you have set when
/// adding your platforms in the console interface.
- Future updateRecovery({@required String userId, @required String secret, @required String passwordA, @required String passwordB}) async {
- String path = '/account/recovery';
+ Future updateRecovery({@required String userId, @required String secret, @required String passwordA, @required String passwordB}) {
+ final String path = '/account/recovery';
- Map params = {
- 'userId': userId,
- 'secret': secret,
- 'password-a': passwordA,
- 'password-b': passwordB,
- };
+ final Map params = {
+ 'userId': userId,
+ 'secret': secret,
+ 'password-a': passwordA,
+ 'password-b': passwordB,
+ };
- return await this.client.call(HttpMethod.put, path: path, params: params);
+ return this.client.call(HttpMethod.put, path: path, params: params);
}
/// Get currently logged in user list of active sessions across different
/// devices.
- Future getSessions() async {
- String path = '/account/sessions';
+ Future getSessions() {
+ final String path = '/account/sessions';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Allow the user to login into his account by providing a valid email and
/// password combination. This route will create a new session for the user.
- Future createSession({@required String email, @required String password}) async {
- String path = '/account/sessions';
+ Future createSession({@required String email, @required String password}) {
+ final String path = '/account/sessions';
- Map params = {
- 'email': email,
- 'password': password,
- };
+ final Map params = {
+ 'email': email,
+ 'password': password,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Delete all sessions from the user account and remove any sessions cookies
/// from the end client.
- Future deleteSessions() async {
- String path = '/account/sessions';
+ Future deleteSessions() {
+ final String path = '/account/sessions';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Allow the user to login to his account using the OAuth2 provider of his
/// choice. Each OAuth2 provider should be enabled from the Appwrite console
/// first. Use the success and failure arguments to provide a redirect URL's
/// back to your app when login is completed.
- Future createOAuth2Session({@required String provider, @required String success, @required String failure}) async {
- String path = '/account/sessions/oauth2/{provider}'.replaceAll(RegExp('{provider}'), provider);
+ Future createOAuth2Session({@required String provider, @required String success, @required String failure}) {
+ final String path = '/account/sessions/oauth2/{provider}'.replaceAll(RegExp('{provider}'), provider);
- Map params = {
- 'success': success,
- 'failure': failure,
- };
+ final Map params = {
+ 'success': success,
+ 'failure': failure,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Use this endpoint to log out the currently logged in user from all his
/// account sessions across all his different devices. When using the option id
/// argument, only the session unique ID provider will be deleted.
- Future deleteSession({@required String sessionId}) async {
- String path = '/account/sessions/{sessionId}'.replaceAll(RegExp('{sessionId}'), sessionId);
+ Future deleteSession({@required String sessionId}) {
+ final String path = '/account/sessions/{sessionId}'.replaceAll(RegExp('{sessionId}'), sessionId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Use this endpoint to send a verification message to your user email address
/// to confirm they are the valid owners of that address. Both the **userId**
@@ -223,27 +222,27 @@ class Account extends Service {
/// Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
/// the only valid redirect URLs are the ones from domains you have set when
/// adding your platforms in the console interface.
- Future createVerification({@required String url}) async {
- String path = '/account/verification';
+ Future createVerification({@required String url}) {
+ final String path = '/account/verification';
- Map params = {
- 'url': url,
- };
+ final Map params = {
+ 'url': url,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Use this endpoint to complete the user email verification process. Use both
/// the **userId** and **secret** parameters that were attached to your app URL
/// to verify the user email ownership. If confirmed this route will return a
/// 200 status code.
- Future updateVerification({@required String userId, @required String secret}) async {
- String path = '/account/verification';
+ Future updateVerification({@required String userId, @required String secret}) {
+ final String path = '/account/verification';
- Map params = {
- 'userId': userId,
- 'secret': secret,
- };
+ final Map params = {
+ 'userId': userId,
+ 'secret': secret,
+ };
- return await this.client.call(HttpMethod.put, path: path, params: params);
+ return this.client.call(HttpMethod.put, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/avatars.dart b/app/sdks/flutter-dart/lib/services/avatars.dart
index 234c1f5ad..420c19765 100644
--- a/app/sdks/flutter-dart/lib/services/avatars.dart
+++ b/app/sdks/flutter-dart/lib/services/avatars.dart
@@ -1,98 +1,97 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Avatars extends Service {
- Avatars(Client client): super(client);
+ Avatars(Client client): super(client);
/// You can use this endpoint to show different browser icons to your users.
/// The code argument receives the browser code as it appears in your user
/// /account/sessions endpoint. Use width, height and quality arguments to
/// change the output settings.
- Future getBrowser({@required String code, int width = 100, int height = 100, int quality = 100}) async {
- String path = '/avatars/browsers/{code}'.replaceAll(RegExp('{code}'), code);
+ Future getBrowser({@required String code, int width = 100, int height = 100, int quality = 100}) {
+ final String path = '/avatars/browsers/{code}'.replaceAll(RegExp('{code}'), code);
- Map params = {
- 'width': width,
- 'height': height,
- 'quality': quality,
- };
+ final Map params = {
+ 'width': width,
+ 'height': height,
+ 'quality': quality,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Need to display your users with your billing method or their payment
/// methods? 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.
- Future getCreditCard({@required String code, int width = 100, int height = 100, int quality = 100}) async {
- String path = '/avatars/credit-cards/{code}'.replaceAll(RegExp('{code}'), code);
+ Future getCreditCard({@required String code, int width = 100, int height = 100, int quality = 100}) {
+ final String path = '/avatars/credit-cards/{code}'.replaceAll(RegExp('{code}'), code);
- Map params = {
- 'width': width,
- 'height': height,
- 'quality': quality,
- };
+ final Map params = {
+ 'width': width,
+ 'height': height,
+ 'quality': quality,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Use this endpoint to fetch the favorite icon (AKA favicon) of a any remote
/// website URL.
- Future getFavicon({@required String url}) async {
- String path = '/avatars/favicon';
+ Future getFavicon({@required String url}) {
+ final String path = '/avatars/favicon';
- Map params = {
- 'url': url,
- };
+ final Map params = {
+ 'url': url,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// 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.
- Future getFlag({@required String code, int width = 100, int height = 100, int quality = 100}) async {
- String path = '/avatars/flags/{code}'.replaceAll(RegExp('{code}'), code);
+ Future getFlag({@required String code, int width = 100, int height = 100, int quality = 100}) {
+ final String path = '/avatars/flags/{code}'.replaceAll(RegExp('{code}'), code);
- Map params = {
- 'width': width,
- 'height': height,
- 'quality': quality,
- };
+ final Map params = {
+ 'width': width,
+ 'height': height,
+ 'quality': quality,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// 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.
- Future getImage({@required String url, int width = 400, int height = 400}) async {
- String path = '/avatars/image';
+ Future getImage({@required String url, int width = 400, int height = 400}) {
+ final String path = '/avatars/image';
- Map params = {
- 'url': url,
- 'width': width,
- 'height': height,
- };
+ final Map params = {
+ 'url': url,
+ 'width': width,
+ 'height': height,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// 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 getQR({@required String text, int size = 400, int margin = 1, int download = null}) async {
- String path = '/avatars/qr';
+ Future getQR({@required String text, int size = 400, int margin = 1, int download = null}) {
+ final String path = '/avatars/qr';
- Map params = {
- 'text': text,
- 'size': size,
- 'margin': margin,
- 'download': download,
- };
+ final Map params = {
+ 'text': text,
+ 'size': size,
+ 'margin': margin,
+ 'download': download,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/database.dart b/app/sdks/flutter-dart/lib/services/database.dart
index 1ca005bdf..5b9741553 100644
--- a/app/sdks/flutter-dart/lib/services/database.dart
+++ b/app/sdks/flutter-dart/lib/services/database.dart
@@ -1,82 +1,81 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Database extends Service {
- Database(Client client): super(client);
+ Database(Client client): super(client);
/// Get a list of all the user documents. You can use the query params to
/// filter your results. On admin mode, this endpoint will return a list of all
/// of the project documents. [Learn more about different API
/// modes](/docs/admin).
- Future listDocuments({@required String collectionId, List filters = const [], int offset = null, int limit = 50, String orderField = '\$id', String orderType = 'ASC', String orderCast = 'string', String search = null, int first = null, int last = null}) async {
- String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId);
+ Future listDocuments({@required String collectionId, List filters = const [], int offset = null, int limit = 50, String orderField = '\$id', String orderType = 'ASC', String orderCast = 'string', String search = null, int first = null, int last = null}) {
+ final String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId);
- Map params = {
- 'filters': filters,
- 'offset': offset,
- 'limit': limit,
- 'order-field': orderField,
- 'order-type': orderType,
- 'order-cast': orderCast,
- 'search': search,
- 'first': first,
- 'last': last,
- };
+ final Map params = {
+ 'filters': filters,
+ 'offset': offset,
+ 'limit': limit,
+ 'order-field': orderField,
+ 'order-type': orderType,
+ 'order-cast': orderCast,
+ 'search': search,
+ 'first': first,
+ 'last': last,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Create a new Document.
- Future createDocument({@required String collectionId, @required dynamic data, @required List read, @required List write, String parentDocument = null, String parentProperty = null, String parentPropertyType = 'assign'}) async {
- String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId);
+ Future createDocument({@required String collectionId, @required dynamic data, @required List read, @required List write, String parentDocument = null, String parentProperty = null, String parentPropertyType = 'assign'}) {
+ final String path = '/database/collections/{collectionId}/documents'.replaceAll(RegExp('{collectionId}'), collectionId);
- Map params = {
- 'data': data,
- 'read': read,
- 'write': write,
- 'parentDocument': parentDocument,
- 'parentProperty': parentProperty,
- 'parentPropertyType': parentPropertyType,
- };
+ final Map params = {
+ 'data': data,
+ 'read': read,
+ 'write': write,
+ 'parentDocument': parentDocument,
+ 'parentProperty': parentProperty,
+ 'parentPropertyType': parentPropertyType,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Get document by its unique ID. This endpoint response returns a JSON object
/// with the document data.
- Future getDocument({@required String collectionId, @required String documentId}) async {
- String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
+ Future getDocument({@required String collectionId, @required String documentId}) {
+ final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
- Future updateDocument({@required String collectionId, @required String documentId, @required dynamic data, @required List read, @required List write}) async {
- String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
+ Future updateDocument({@required String collectionId, @required String documentId, @required dynamic data, @required List read, @required List write}) {
+ final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
- Map params = {
- 'data': data,
- 'read': read,
- 'write': write,
- };
+ final Map params = {
+ 'data': data,
+ 'read': read,
+ 'write': write,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
/// Delete document by its unique ID. This endpoint deletes only the parent
/// documents, his attributes and relations to other documents. Child documents
/// **will not** be deleted.
- Future deleteDocument({@required String collectionId, @required String documentId}) async {
- String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
+ Future deleteDocument({@required String collectionId, @required String documentId}) {
+ final String path = '/database/collections/{collectionId}/documents/{documentId}'.replaceAll(RegExp('{collectionId}'), collectionId).replaceAll(RegExp('{documentId}'), documentId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/locale.dart b/app/sdks/flutter-dart/lib/services/locale.dart
index fc1079213..5f08b93c2 100644
--- a/app/sdks/flutter-dart/lib/services/locale.dart
+++ b/app/sdks/flutter-dart/lib/services/locale.dart
@@ -1,15 +1,14 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Locale extends Service {
- Locale(Client client): super(client);
+ Locale(Client client): super(client);
/// Get the current user location based on IP. Returns an object with user
/// country code, country name, continent name, continent code, ip address and
@@ -17,63 +16,63 @@ class Locale extends Service {
/// supported language.
///
/// ([IP Geolocation by DB-IP](https://db-ip.com))
- Future get() async {
- String path = '/locale';
+ Future get() {
+ final String path = '/locale';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// List of all continents. You can use the locale header to get the data in a
/// supported language.
- Future getContinents() async {
- String path = '/locale/continents';
+ Future getContinents() {
+ final String path = '/locale/continents';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// List of all countries. You can use the locale header to get the data in a
/// supported language.
- Future getCountries() async {
- String path = '/locale/countries';
+ Future getCountries() {
+ final String path = '/locale/countries';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// List of all countries that are currently members of the EU. You can use the
/// locale header to get the data in a supported language.
- Future getCountriesEU() async {
- String path = '/locale/countries/eu';
+ Future getCountriesEU() {
+ final String path = '/locale/countries/eu';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// List of all countries phone codes. You can use the locale header to get the
/// data in a supported language.
- Future getCountriesPhones() async {
- String path = '/locale/countries/phones';
+ Future getCountriesPhones() {
+ final String path = '/locale/countries/phones';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// List of all currencies, including currency symol, name, plural, and decimal
/// digits for all major and minor currencies. You can use the locale header to
/// get the data in a supported language.
- Future getCurrencies() async {
- String path = '/locale/currencies';
+ Future getCurrencies() {
+ final String path = '/locale/currencies';
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/storage.dart b/app/sdks/flutter-dart/lib/services/storage.dart
index b4484f2a4..041bb6576 100644
--- a/app/sdks/flutter-dart/lib/services/storage.dart
+++ b/app/sdks/flutter-dart/lib/services/storage.dart
@@ -1,114 +1,113 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Storage extends Service {
- Storage(Client client): super(client);
+ Storage(Client client): super(client);
/// Get a list of all the user files. You can use the query params to filter
/// your results. On admin mode, this endpoint will return a list of all of the
/// project files. [Learn more about different API modes](/docs/admin).
- Future listFiles({String search = null, int limit = 25, int offset = null, String orderType = 'ASC'}) async {
- String path = '/storage/files';
+ Future listFiles({String search = null, int limit = 25, int offset = null, OrderType orderType = OrderType.asc}) {
+ final String path = '/storage/files';
- Map params = {
- 'search': search,
- 'limit': limit,
- 'offset': offset,
- 'orderType': orderType,
- };
+ final Map params = {
+ 'search': search,
+ 'limit': limit,
+ 'offset': offset,
+ 'orderType': orderType.name(),
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Create a new file. The user who creates the file will automatically be
/// assigned to read and write access unless he has passed custom values for
/// read and write arguments.
- Future createFile({@required File file, @required List read, @required List write}) async {
- String path = '/storage/files';
+ Future createFile({@required file, @required List read, @required List write}) {
+ final String path = '/storage/files';
- Map params = {
- 'file': file,
- 'read': read,
- 'write': write,
- };
+ final Map params = {
+ 'file': file,
+ 'read': read,
+ 'write': write,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Get file by its unique ID. This endpoint response returns a JSON object
/// with the file metadata.
- Future getFile({@required String fileId}) async {
- String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
+ Future getFile({@required String fileId}) {
+ final String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Update file by its unique ID. Only users with write permissions have access
/// to update this resource.
- Future updateFile({@required String fileId, @required List read, @required List write}) async {
- String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
+ Future updateFile({@required String fileId, @required List read, @required List write}) {
+ final String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- 'read': read,
- 'write': write,
- };
+ final Map params = {
+ 'read': read,
+ 'write': write,
+ };
- return await this.client.call(HttpMethod.put, path: path, params: params);
+ return this.client.call(HttpMethod.put, path: path, params: params);
}
/// Delete a file by its unique ID. Only users with write permissions have
/// access to delete this resource.
- Future deleteFile({@required String fileId}) async {
- String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
+ Future deleteFile({@required String fileId}) {
+ final String path = '/storage/files/{fileId}'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Get file content by its unique ID. The endpoint response return with a
/// 'Content-Disposition: attachment' header that tells the browser to start
/// downloading the file to user downloads directory.
- Future getFileDownload({@required String fileId}) async {
- String path = '/storage/files/{fileId}/download'.replaceAll(RegExp('{fileId}'), fileId);
+ Future getFileDownload({@required String fileId}) {
+ final String path = '/storage/files/{fileId}/download'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Get a file preview image. Currently, this method supports preview for image
/// files (jpg, png, and gif), other supported formats, like pdf, docs, slides,
/// and spreadsheets, will return the file icon image. You can also pass query
/// string arguments for cutting and resizing your preview image.
- Future getFilePreview({@required String fileId, int width = null, int height = null, int quality = 100, String background = null, String output = null}) async {
- String path = '/storage/files/{fileId}/preview'.replaceAll(RegExp('{fileId}'), fileId);
+ Future getFilePreview({@required String fileId, int width = null, int height = null, int quality = 100, String background = null, String output = null}) {
+ final String path = '/storage/files/{fileId}/preview'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- 'width': width,
- 'height': height,
- 'quality': quality,
- 'background': background,
- 'output': output,
- };
+ final Map params = {
+ 'width': width,
+ 'height': height,
+ 'quality': quality,
+ 'background': background,
+ 'output': output,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Get file content by its unique ID. This endpoint is similar to the download
/// method but returns with no 'Content-Disposition: attachment' header.
- Future getFileView({@required String fileId, String as = null}) async {
- String path = '/storage/files/{fileId}/view'.replaceAll(RegExp('{fileId}'), fileId);
+ Future getFileView({@required String fileId, String as = null}) {
+ final String path = '/storage/files/{fileId}/view'.replaceAll(RegExp('{fileId}'), fileId);
- Map params = {
- 'as': as,
- };
+ final Map params = {
+ 'as': as,
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/lib/services/teams.dart b/app/sdks/flutter-dart/lib/services/teams.dart
index ca3f6ad11..483efd3b3 100644
--- a/app/sdks/flutter-dart/lib/services/teams.dart
+++ b/app/sdks/flutter-dart/lib/services/teams.dart
@@ -1,85 +1,84 @@
-import 'dart:html';
-import "package:appwrite/service.dart";
-import "package:appwrite/client.dart";
import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
+import "../client.dart";
import '../enums.dart';
+import "../service.dart";
class Teams extends Service {
- Teams(Client client): super(client);
+ Teams(Client client): super(client);
/// Get a list of all the current user teams. You can use the query params to
/// filter your results. On admin mode, this endpoint will return a list of all
/// of the project teams. [Learn more about different API modes](/docs/admin).
- Future list({String search = null, int limit = 25, int offset = null, String orderType = 'ASC'}) async {
- String path = '/teams';
+ Future list({String search = null, int limit = 25, int offset = null, OrderType orderType = OrderType.asc}) {
+ final String path = '/teams';
- Map params = {
- 'search': search,
- 'limit': limit,
- 'offset': offset,
- 'orderType': orderType,
- };
+ final Map params = {
+ 'search': search,
+ 'limit': limit,
+ 'offset': offset,
+ 'orderType': orderType.name(),
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Create a new team. The user who creates the team will automatically be
/// assigned as the owner of the team. The team owner can invite new members,
/// who will be able add new owners and update or delete the team from your
/// project.
- Future create({@required String name, List roles = const ["owner"]}) async {
- String path = '/teams';
+ Future create({@required String name, List roles = const ["owner"]}) {
+ final String path = '/teams';
- Map params = {
- 'name': name,
- 'roles': roles,
- };
+ final Map params = {
+ 'name': name,
+ 'roles': roles,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// Get team by its unique ID. All team members have read access for this
/// resource.
- Future get({@required String teamId}) async {
- String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
+ Future get({@required String teamId}) {
+ final String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Update team by its unique ID. Only team owners have write access for this
/// resource.
- Future update({@required String teamId, @required String name}) async {
- String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
+ Future update({@required String teamId, @required String name}) {
+ final String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
- Map params = {
- 'name': name,
- };
+ final Map params = {
+ 'name': name,
+ };
- return await this.client.call(HttpMethod.put, path: path, params: params);
+ return this.client.call(HttpMethod.put, path: path, params: params);
}
/// Delete team by its unique ID. Only team owners have write access for this
/// resource.
- Future delete({@required String teamId}) async {
- String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
+ Future delete({@required String teamId}) {
+ final String path = '/teams/{teamId}'.replaceAll(RegExp('{teamId}'), teamId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Get team members by the team unique ID. All team members have read access
/// for this list of resources.
- Future getMemberships({@required String teamId}) async {
- String path = '/teams/{teamId}/memberships'.replaceAll(RegExp('{teamId}'), teamId);
+ Future getMemberships({@required String teamId}) {
+ final String path = '/teams/{teamId}/memberships'.replaceAll(RegExp('{teamId}'), teamId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.get, path: path, params: params);
+ return this.client.call(HttpMethod.get, path: path, params: params);
}
/// Use this endpoint to invite a new member to join your team. An email with a
/// link to join the team will be sent to the new member email address if the
@@ -94,40 +93,40 @@ class Teams extends Service {
/// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
/// the only valid redirect URL's are the once from domains you have set when
/// added your platforms in the console interface.
- Future createMembership({@required String teamId, @required String email, @required List roles, @required String url, String name = null}) async {
- String path = '/teams/{teamId}/memberships'.replaceAll(RegExp('{teamId}'), teamId);
+ Future createMembership({@required String teamId, @required String email, @required List roles, @required String url, String name = null}) {
+ final String path = '/teams/{teamId}/memberships'.replaceAll(RegExp('{teamId}'), teamId);
- Map params = {
- 'email': email,
- 'name': name,
- 'roles': roles,
- 'url': url,
- };
+ final Map params = {
+ 'email': email,
+ 'name': name,
+ 'roles': roles,
+ 'url': url,
+ };
- return await this.client.call(HttpMethod.post, path: path, params: params);
+ return this.client.call(HttpMethod.post, path: path, params: params);
}
/// 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 he didn't accept it.
- Future deleteMembership({@required String teamId, @required String inviteId}) async {
- String path = '/teams/{teamId}/memberships/{inviteId}'.replaceAll(RegExp('{teamId}'), teamId).replaceAll(RegExp('{inviteId}'), inviteId);
+ Future deleteMembership({@required String teamId, @required String inviteId}) {
+ final String path = '/teams/{teamId}/memberships/{inviteId}'.replaceAll(RegExp('{teamId}'), teamId).replaceAll(RegExp('{inviteId}'), inviteId);
- Map params = {
- };
+ final Map params = {
+ };
- return await this.client.call(HttpMethod.delete, path: path, params: params);
+ return this.client.call(HttpMethod.delete, path: path, params: params);
}
/// Use this endpoint to allow a user to accept an invitation to join a team
/// after he is being redirected back to your app from the invitation email he
/// was sent.
- Future updateMembershipStatus({@required String teamId, @required String inviteId, @required String userId, @required String secret}) async {
- String path = '/teams/{teamId}/memberships/{inviteId}/status'.replaceAll(RegExp('{teamId}'), teamId).replaceAll(RegExp('{inviteId}'), inviteId);
+ Future updateMembershipStatus({@required String teamId, @required String inviteId, @required String userId, @required String secret}) {
+ final String path = '/teams/{teamId}/memberships/{inviteId}/status'.replaceAll(RegExp('{teamId}'), teamId).replaceAll(RegExp('{inviteId}'), inviteId);
- Map params = {
- 'userId': userId,
- 'secret': secret,
- };
+ final Map params = {
+ 'userId': userId,
+ 'secret': secret,
+ };
- return await this.client.call(HttpMethod.patch, path: path, params: params);
+ return this.client.call(HttpMethod.patch, path: path, params: params);
}
}
\ No newline at end of file
diff --git a/app/sdks/flutter-dart/pubspec.yaml b/app/sdks/flutter-dart/pubspec.yaml
index fca3f7f50..00139410e 100644
--- a/app/sdks/flutter-dart/pubspec.yaml
+++ b/app/sdks/flutter-dart/pubspec.yaml
@@ -1,11 +1,11 @@
name: appwrite
-version: 0.0.7
+version: 0.0.8
description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
-author: Appwrite Team
homepage: https://github.com/appwrite/sdk-for-dart
environment:
sdk: '>=2.6.0 <3.0.0'
dependencies:
+ meta: ^1.1.8
dio: ^3.0.0
cookie_jar: ^1.0.0
- dio_cookie_manager: ^1.0.0
\ No newline at end of file
+ dio_cookie_manager: ^1.0.0
diff --git a/app/sdks/server-go/CHANGELOG.md b/app/sdks/server-go/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/server-go/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/server-go/README.md b/app/sdks/server-go/README.md
index b9bbe4a07..7e5c39a72 100644
--- a/app/sdks/server-go/README.md
+++ b/app/sdks/server-go/README.md
@@ -3,7 +3,7 @@
![License](https://img.shields.io/github/license/appwrite/sdk-for-go.svg?v=1)
![Version](https://img.shields.io/badge/api%20version-0.5.3-blue.svg?v=1)
-**This SDK is compatible with Appwrite server version . For older versions, please check previous releases.**
+**This SDK is compatible with Appwrite server version 0.5.3. For older versions, please check previous releases.**
Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
diff --git a/app/sdks/server-nodejs/CHANGELOG.md b/app/sdks/server-nodejs/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/server-nodejs/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/server-php/CHANGELOG.md b/app/sdks/server-php/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/server-php/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/server-python/CHANGELOG.md b/app/sdks/server-python/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/server-python/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/server-python/README.md b/app/sdks/server-python/README.md
index f6b4fec7a..2c065d346 100644
--- a/app/sdks/server-python/README.md
+++ b/app/sdks/server-python/README.md
@@ -3,7 +3,7 @@
![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?v=1)
![Version](https://img.shields.io/badge/api%20version-0.5.3-blue.svg?v=1)
-**This SDK is compatible with Appwrite server version . For older versions, please check previous releases.**
+**This SDK is compatible with Appwrite server version 0.5.3. For older versions, please check previous releases.**
Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
diff --git a/app/sdks/server-ruby/CHANGELOG.md b/app/sdks/server-ruby/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/server-ruby/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/server-ruby/README.md b/app/sdks/server-ruby/README.md
index 3787c2812..812c86fea 100644
--- a/app/sdks/server-ruby/README.md
+++ b/app/sdks/server-ruby/README.md
@@ -3,7 +3,7 @@
![License](https://img.shields.io/github/license/appwrite/sdk-for-ruby.svg?v=1)
![Version](https://img.shields.io/badge/api%20version-0.5.3-blue.svg?v=1)
-**This SDK is compatible with Appwrite server version . For older versions, please check previous releases.**
+**This SDK is compatible with Appwrite server version 0.5.3. For older versions, please check previous releases.**
Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
diff --git a/app/sdks/web-javascript/CHANGELOG.md b/app/sdks/web-javascript/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/app/sdks/web-javascript/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/app/sdks/web-javascript/README.md b/app/sdks/web-javascript/README.md
index 26cb9154d..84912efd2 100644
--- a/app/sdks/web-javascript/README.md
+++ b/app/sdks/web-javascript/README.md
@@ -31,6 +31,21 @@ To install with a CDN (content delivery network) add the following scripts to th
```
+## Getting Started
+
+Initialise the Appwrite SDK in your code, and setup your API credentials:
+
+```js
+
+// Init your JS SDK
+var appwrite = new Appwrite();
+
+appwrite
+ .setEndpoint('http://localhost/v1') // Set only when using self-hosted solution
+ .setProject('455x34dfkj') // Your Appwrite Project UID
+;
+
+```
## Contribution
diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php
index 9556b2ebb..63e50cbb7 100644
--- a/app/tasks/sdks.php
+++ b/app/tasks/sdks.php
@@ -58,8 +58,10 @@ $cli
$result = realpath(__DIR__.'/..').'/sdks/'.$key.'-'.$language['key'];
$target = realpath(__DIR__.'/..').'/sdks/git/'.$language['key'].'/';
- $readme = realpath(__DIR__ . '/../../docs/sdks/'.$language['key'].'.md');
+ $readme = realpath(__DIR__ . '/../../docs/sdks/'.$language['key'].'/README.md');
$readme = ($readme) ? file_get_contents($readme) : '';
+ $changelog = realpath(__DIR__ . '/../../docs/sdks/'.$language['key'].'/CHANGELOG.md');
+ $changelog = ($changelog) ? file_get_contents($changelog) : '# Change Log';
$warning = ($language['beta']) ? '**This SDK is compatible with Appwrite server version ' . $version . '. For older versions, please check previous releases.**' : '';
$license = 'BSD-3-Clause';
$licenseContent = 'Copyright (c) 2019 Appwrite (https://appwrite.io) and individual contributors.
@@ -148,6 +150,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
->setShareVia('appwrite_io')
->setWarning($warning)
->setReadme($readme)
+ ->setChangelog($changelog)
;
try {
diff --git a/composer.lock b/composer.lock
index 91c2239a8..f2ea48ad9 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1622,7 +1622,7 @@
"source": {
"type": "git",
"url": "https://github.com/appwrite/sdk-generator",
- "reference": "6b98e2620bf307f35070e883819e157fb24e2014"
+ "reference": "3b7389388f29c6e0cf53cf2233ee516fb20ad9f7"
},
"require": {
"ext-curl": "*",
@@ -1652,7 +1652,7 @@
}
],
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
- "time": "2020-04-04T14:33:15+00:00"
+ "time": "2020-04-05T20:13:47+00:00"
},
{
"name": "doctrine/instantiator",
diff --git a/docs/sdks/dart/CHANGELOG.md b/docs/sdks/dart/CHANGELOG.md
new file mode 100644
index 000000000..a7a936ee7
--- /dev/null
+++ b/docs/sdks/dart/CHANGELOG.md
@@ -0,0 +1,4 @@
+## 0.0.8
+
+- Fixed compilation error in Client class
+- Shorter description for package
\ No newline at end of file
diff --git a/docs/sdks/go/CHANGELOG.md b/docs/sdks/go/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/go/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/java/CHANGELOG.md b/docs/sdks/java/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/java/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/javascript/CHANGELOG.md b/docs/sdks/javascript/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/javascript/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/js.md b/docs/sdks/javascript/README.md
similarity index 100%
rename from docs/sdks/js.md
rename to docs/sdks/javascript/README.md
diff --git a/docs/sdks/kotlin/CHANGELOG.md b/docs/sdks/kotlin/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/kotlin/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/nodejs/CHANGELOG.md b/docs/sdks/nodejs/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/nodejs/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/objective-c/CHANGELOG.md b/docs/sdks/objective-c/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/objective-c/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/php/CHANGELOG.md b/docs/sdks/php/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/php/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/python/CHANGELOG.md b/docs/sdks/python/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/python/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/ruby/CHANGELOG.md b/docs/sdks/ruby/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/ruby/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/swift/CHANGELOG.md b/docs/sdks/swift/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/swift/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file
diff --git a/docs/sdks/typescript/CHANGELOG.md b/docs/sdks/typescript/CHANGELOG.md
new file mode 100644
index 000000000..fa4d35e68
--- /dev/null
+++ b/docs/sdks/typescript/CHANGELOG.md
@@ -0,0 +1 @@
+# Change Log
\ No newline at end of file