mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge branch 'master' into doc-548-submit-a-pull-request-section-to-contribution-guide
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: '0 16 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['javascript']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
+110
-52
@@ -6,6 +6,9 @@ We would ❤️ for you to contribute to Appwrite and help make it better! We wa
|
||||
|
||||
If you are worried or don’t know where to start, check out our next section explaining what kind of help we could use and where can you get involved. You can reach out with questions to [Eldad Fux (@eldadfux)](https://twitter.com/eldadfux) or [@appwrite_io](https://twitter.com/appwrite_io) on Twitter, and anyone from the [Appwrite team on Discord](https://discord.gg/GSeTUeA). You can also submit an issue, and a maintainer can guide you!
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Help us keep Appwrite open and inclusive. Please read and follow our [Code of Conduct](/CODE_OF_CONDUCT.md).
|
||||
|
||||
## Submit a Pull Request 🚀
|
||||
|
||||
@@ -62,37 +65,96 @@ Now submit the pull request and , click on `Create pull request`.
|
||||
### 8. GitHub will automatically delete the branch, after the merge is done. (they can still be restored).
|
||||
<br/>
|
||||
|
||||
## Where to Start?
|
||||
## Setup From Source
|
||||
|
||||
Pull requests are great, but there are many other areas where you can help Appwrite.
|
||||
To set up a working **development environment**, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack.
|
||||
|
||||
### Blogging & Speaking
|
||||
> If you just want to install Appwrite for day-to-day usage and not as a code maintainer use this [installation guide](https://github.com/appwrite/appwrite#installation).
|
||||
|
||||
Blogging, speaking about, or creating tutorials about one of Appwrite’s many features. Mention [@appwrite_io](https://twitter.com/appwrite_io) on Twitter and/or email team [at] appwrite [dot] io so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite]() repo on GitHub.
|
||||
Please note that these instructions are for setting a functional dev environment. If you want to set up an Appwrite instance to integrate into your app, you should probably try and install Appwrite by using the instructions in the [getting started guide](https://appwrite.io/docs/getting-started-for-web) or in the main [README](README.md) file.
|
||||
|
||||
### Presenting at Meetups
|
||||
```bash
|
||||
git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git
|
||||
|
||||
Presenting at meetups and conferences about your Appwrite projects. Your unique challenges and successes in building things with Appwrite can provide great speaking material. We’d love to review your talk abstract/CFP, so get in touch with us if you’d like some help!
|
||||
cd appwrite
|
||||
|
||||
### Sending Feedbacks & Reporting Bugs
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Sending feedback is a great way for us to understand your different use cases of Appwrite better. If you had any issues, bugs, or want to share about your experience, feel free to do so on our GitHub issues page or at our [Discord channel](https://discord.gg/GSeTUeA).
|
||||
After finishing the installation process, you can start writing and editing code. To compile new CSS and JS distribution files, use 'less' and 'build' tasks using gulp as a task manager.
|
||||
|
||||
### Submitting New Ideas
|
||||
## Architecture
|
||||
|
||||
If you think Appwrite could use a new feature, please open an issue on our GitHub repository, stating as much information as you can think about your new idea and it's implications. We would also use this issue to gather more information, get more feedback from the community, and have a proper discussion about the new feature.
|
||||
Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures, but our final goal, as we grow, is to be using only microservices.
|
||||
|
||||
### Improving Documentation
|
||||
### File Structure
|
||||
|
||||
Submitting documentation updates, enhancements, designs, or bug fixes. Spelling or grammar fixes will be very much appreciated.
|
||||
```bash
|
||||
.
|
||||
├── app # Main application
|
||||
│ ├── config # Config files
|
||||
│ ├── controllers # API & dashboard controllers
|
||||
│ │ ├── api
|
||||
│ │ ├── shared
|
||||
│ │ └── web
|
||||
│ ├── db # DB schemas
|
||||
│ ├── sdks # SDKs generated copies (used for generating code examples)
|
||||
│ ├── tasks # Server CLI commands
|
||||
│ ├── views # HTML server-side templates
|
||||
│ └── workers # Background workers
|
||||
├── bin # Server executables (tasks & workers)
|
||||
├── docker # Docker related resources and configs
|
||||
├── docs # Docs and tutorials
|
||||
│ ├── examples
|
||||
│ ├── references
|
||||
│ ├── sdks
|
||||
│ ├── services
|
||||
│ ├── specs
|
||||
│ └── tutorials
|
||||
├── public # Public files
|
||||
│ ├── dist
|
||||
│ ├── fonts
|
||||
│ ├── images
|
||||
│ ├── scripts
|
||||
│ └── styles
|
||||
├── src # Supporting libraries (each lib has one role, common libs are released as individual projects)
|
||||
│ └── Appwrite
|
||||
│ ├── Auth
|
||||
│ ├── Database
|
||||
│ ├── Docker
|
||||
│ ├── Event
|
||||
│ ├── Extend
|
||||
│ ├── Network
|
||||
│ ├── OpenSSL
|
||||
│ ├── Preloader
|
||||
│ ├── Resize
|
||||
│ ├── Storage
|
||||
│ ├── Swoole
|
||||
│ ├── Task
|
||||
│ ├── Template
|
||||
│ ├── URL
|
||||
│ └── Utopia
|
||||
└── tests # End to end & unit tests
|
||||
├── e2e
|
||||
├── resources
|
||||
└── unit
|
||||
```
|
||||
|
||||
### Helping Someone
|
||||
---
|
||||

|
||||
---
|
||||
|
||||
Searching for Appwrite on Discord, GitHub or StackOverflow and helping someone else who needs help. You can also help by reaching others how to contribute to Appwrite's repo!
|
||||
### The Monolithic Part
|
||||
|
||||
## Code of Conduct
|
||||
Appwrite's main API container is designed as a monolithic app. This is a decision we made to allow us to develop the project faster while still being a very small team.
|
||||
|
||||
Help us keep Appwrite open and inclusive. Please read and follow our [Code of Conduct](/CODE_OF_CONDUCT.md).
|
||||
Although the Appwrite API is a monolithic app, it has a very clear separation of concern as each internal service or worker is separated by its container, which will allow us as we grow to start breaking services for better maintenance and scalability.
|
||||
|
||||
### The Microservice Part
|
||||
|
||||
Each container in Appwrite is a microservice on its own. Each service is an independent process that can scale without regard to any of the other services.
|
||||
|
||||
Currently, all of the Appwrite microservices are intended to communicate using the TCP protocol over a private network. You should be aware to not expose any of the services to the public-facing network, besides the public port 80 and 443, who, by default, are used to expose the Appwrite HTTP API.
|
||||
|
||||
## Technology Stack
|
||||
|
||||
@@ -130,7 +192,7 @@ We use prettier for our JS coding standards and for auto-formatting our code.
|
||||
|
||||
Appwrite is built to scale. Please keep in mind that the Appwrite stack can run in different environments and different scales.
|
||||
|
||||
We wish Appwrite will be as easy to set up and in a single, localhost, and easy to grow to a large environment with thousands and even hundreds of instances.
|
||||
We wish Appwrite will be as easy to set up and in a single, localhost, and easy to grow to a large environment with dozens and even hundreds of instances.
|
||||
|
||||
When contributing code, please take into account the following considerations:
|
||||
|
||||
@@ -143,22 +205,6 @@ When contributing code, please take into account the following considerations:
|
||||
* Background Jobs
|
||||
* Task Execution Time
|
||||
|
||||
## Architecture
|
||||
|
||||
Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures, but our final goal, as we grow, is to be using only microservices.
|
||||
|
||||
### The Monolithic Part
|
||||
|
||||
Appwrite's main API container is designed as a monolithic app. This is a decision we made to allow us to develop the project faster while still being a very small team.
|
||||
|
||||
Although the Appwrite API is a monolithic app, it has a very clear separation of concern as each internal service or worker is separated by its container, which will allow us as we grow to start breaking services for better maintenance and scalability.
|
||||
|
||||
### The Microservice Part
|
||||
|
||||
Each container in Appwrite is a microservice on its own. Each service is an independent process that can scale without regard to any of the other services.
|
||||
|
||||
Currently, all of the Appwrite microservices are intended to communicate using the TCP protocol over a private network. You should be aware to not expose any of the services to the public-facing network, besides the public port 80 and 443, who, by default, are used to expose the Appwrite HTTP API.
|
||||
|
||||
## Security & Privacy
|
||||
|
||||
Security and privacy are extremely important to Appwrite, developers, and users alike. Make sure to follow the best industry standards and practices.
|
||||
@@ -181,24 +227,6 @@ This will allow the Appwrite community to have sufficient discussion about the n
|
||||
|
||||
This is also important for the Appwrite lead developers to be able to give technical input and different emphasize regarding the feature design and architecture.
|
||||
|
||||
## Setup From Source
|
||||
|
||||
To set up a working **development environment**, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack.
|
||||
|
||||
> If you just want to install Appwrite for day-to-day usage and not as a code maintainer use this [installation guide](https://github.com/appwrite/appwrite#installation).
|
||||
|
||||
Please note that these instructions are for setting a functional dev environment. If you want to set up an Appwrite instance to integrate into your app, you should probably try and install Appwrite by using the instructions in the [getting started guide](https://appwrite.io/docs/getting-started-for-web) or in the main [README](README.md) file.
|
||||
|
||||
```bash
|
||||
git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git
|
||||
|
||||
cd appwrite
|
||||
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
After finishing the installation process, you can start writing and editing code. To compile new CSS and JS distribution files, use 'less' and 'build' tasks using gulp as a task manager.
|
||||
|
||||
## Build
|
||||
|
||||
To build a new version of the Appwrite server, all you need to do is run the build.sh file like this:
|
||||
@@ -217,7 +245,7 @@ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t appwrite/
|
||||
|
||||
## Tests
|
||||
|
||||
To run tests manually, run phpunit from your command line:
|
||||
To run tests manually, use the Appwrite Docker CLI from your terminal:
|
||||
|
||||
```bash
|
||||
docker exec appwrite test
|
||||
@@ -250,3 +278,33 @@ From time to time, our team will add tutorials that will help contributors find
|
||||
* [Adding Support for a New OAuth2 Provider](./docs/tutorials/add-oauth2-provider.md)
|
||||
* [Appwrite Environment Variables](./docs/tutorials/environment-variables.md)
|
||||
* [Running in Production](./docs/tutorials/running-in-production.md)
|
||||
|
||||
|
||||
## Other Ways to Help
|
||||
|
||||
Pull requests are great, but there are many other areas where you can help Appwrite.
|
||||
|
||||
### Blogging & Speaking
|
||||
|
||||
Blogging, speaking about, or creating tutorials about one of Appwrite’s many features. Mention [@appwrite_io](https://twitter.com/appwrite_io) on Twitter and/or email team [at] appwrite [dot] io so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite]() repo on GitHub.
|
||||
|
||||
### Presenting at Meetups
|
||||
|
||||
Presenting at meetups and conferences about your Appwrite projects. Your unique challenges and successes in building things with Appwrite can provide great speaking material. We’d love to review your talk abstract/CFP, so get in touch with us if you’d like some help!
|
||||
|
||||
### Sending Feedbacks & Reporting Bugs
|
||||
|
||||
Sending feedback is a great way for us to understand your different use cases of Appwrite better. If you had any issues, bugs, or want to share about your experience, feel free to do so on our GitHub issues page or at our [Discord channel](https://discord.gg/GSeTUeA).
|
||||
|
||||
### Submitting New Ideas
|
||||
|
||||
If you think Appwrite could use a new feature, please open an issue on our GitHub repository, stating as much information as you can think about your new idea and it's implications. We would also use this issue to gather more information, get more feedback from the community, and have a proper discussion about the new feature.
|
||||
|
||||
### Improving Documentation
|
||||
|
||||
Submitting documentation updates, enhancements, designs, or bug fixes. Spelling or grammar fixes will be very much appreciated.
|
||||
|
||||
### Helping Someone
|
||||
|
||||
Searching for Appwrite on Discord, GitHub or StackOverflow and helping someone else who needs help. You can also help by reaching others how to contribute to Appwrite's repo!
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<a href="https://appwrite.io" target="_blank"><img width="260" height="39" src="https://appwrite.io/images/github-logo.png" alt="Appwrite Logo"></a>
|
||||
<br />
|
||||
<br />
|
||||
<b>A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] client app</b>
|
||||
<b>A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] app</b>
|
||||
<br />
|
||||
<br />
|
||||
</p>
|
||||
|
||||
|
||||
[](CONTRIBUTING.md)
|
||||
[](https://discord.gg/GSeTUeA)
|
||||
[](https://travis-ci.org/appwrite/appwrite)
|
||||
[](https://travis-ci.org/appwrite/appwrite)
|
||||
@@ -123,6 +123,12 @@ Below is a list of currently supported platforms and languages. If you wish to h
|
||||
|
||||
Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)!
|
||||
|
||||
## Contributing
|
||||
|
||||
All code contributions - including those of people having commit access - must go through a pull request and approved by a core developer before being merged. This is to ensure proper review of all the code.
|
||||
|
||||
We truly ❤️ pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md).
|
||||
|
||||
## Security
|
||||
|
||||
For security issues, kindly email us [security@appwrite.io](mailto:security@appwrite.io) instead of posting a public issue in GitHub.
|
||||
@@ -131,12 +137,6 @@ For security issues, kindly email us [security@appwrite.io](mailto:security@appw
|
||||
|
||||
Join our growing community around the world! Follow us on [Twitter](https://twitter.com/appwrite_io), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/) or join our live [Discord server](https://discord.gg/GSeTUeA) for more help, ideas, and discussions.
|
||||
|
||||
## Contributing
|
||||
|
||||
All code contributions - including those of people having commit access - must go through a pull request and approved by a core developer before being merged. This is to ensure proper review of all the code.
|
||||
|
||||
We truly ❤️ pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md).
|
||||
|
||||
## License
|
||||
|
||||
This repository is available under the [BSD 3-Clause License](./LICENSE).
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| < 0.5 | :x: |
|
||||
| 0.6.x | :white_check_mark: |
|
||||
| 0.7.x | :white_check_mark: |
|
||||
| 0.8.0 | :white_check_mark: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
For security issues, kindly email us security@appwrite.io instead of posting a public issue in GitHub.
|
||||
@@ -30,7 +30,7 @@ return [
|
||||
[
|
||||
'key' => 'flutter',
|
||||
'name' => 'Flutter',
|
||||
'version' => '0.2.3',
|
||||
'version' => '0.3.0-dev.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-flutter',
|
||||
'enabled' => true,
|
||||
'beta' => true,
|
||||
@@ -45,7 +45,7 @@ return [
|
||||
[
|
||||
'key' => 'flutter-dev',
|
||||
'name' => 'Flutter (Dev Channel)',
|
||||
'version' => '0.2.3',
|
||||
'version' => '0.3.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-flutter-dev',
|
||||
'enabled' => true,
|
||||
'beta' => true,
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -18,6 +18,7 @@ use Appwrite\Database\Document;
|
||||
use Appwrite\Database\Validator\UID;
|
||||
use Appwrite\Database\Validator\Authorization;
|
||||
use Appwrite\Database\Exception\Duplicate;
|
||||
use Appwrite\Database\Validator\Key;
|
||||
use Appwrite\Template\Template;
|
||||
|
||||
$utopia->post('/v1/teams')
|
||||
@@ -29,7 +30,7 @@ $utopia->post('/v1/teams')
|
||||
->label('sdk.method', 'create')
|
||||
->label('sdk.description', '/docs/references/teams/create-team.md')
|
||||
->param('name', null, function () { return new Text(100); }, 'Team name.')
|
||||
->param('roles', ['owner'], function () { return new ArrayList(new Text(128)); }, 'Array of strings. Use this param to set the roles in the team for the user who created it. The default role is **owner**. A role can be any string. Learn more about [roles and permissions](/docs/permissions).', true)
|
||||
->param('roles', ['owner'], function () { return new ArrayList(new Key()); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](/docs/permissions). Max length for each role is 32 chars.')
|
||||
->action(
|
||||
function ($name, $roles) use ($response, $projectDB, $user, $mode) {
|
||||
Authorization::disable();
|
||||
@@ -216,7 +217,7 @@ $utopia->post('/v1/teams/:teamId/memberships')
|
||||
->param('teamId', '', function () { return new UID(); }, 'Team unique ID.')
|
||||
->param('email', '', function () { return new Email(); }, 'New team member email.')
|
||||
->param('name', '', function () { return new Text(100); }, 'New team member name.', true)
|
||||
->param('roles', [], function () { return new ArrayList(new Text(128)); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](/docs/permissions).')
|
||||
->param('roles', [], function () { return new ArrayList(new Key()); }, 'Array of strings. Use this param to set the user roles in the team. A role can be any string. Learn more about [roles and permissions](/docs/permissions). Max length for each role is 32 chars.')
|
||||
->param('url', '', function () use ($clients) { return new Host($clients); }, 'URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.') // TODO add our own built-in confirm page
|
||||
->action(
|
||||
function ($teamId, $email, $name, $roles, $url) use ($response, $mail, $project, $user, $audit, $projectDB, &$mode) {
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
## 0.3.2
|
||||
|
||||
- Fixed package namespaces
|
||||
|
||||
## 0.3.1
|
||||
|
||||
- Downgraded meta package version to 1.1.8
|
||||
|
||||
## 0.3.0
|
||||
|
||||
- Updated package dependencies (@lohanidamodar)
|
||||
- Added Flutter for Web compatibility (@lohanidamodar)
|
||||
|
||||
## 0.2.3
|
||||
|
||||
- Fixed OAuth2 cookie bug, where a new session cookie couldn't overwrite an old cookie
|
||||
|
||||
@@ -20,13 +20,13 @@ Add this to your package's `pubspec.yaml` file:
|
||||
|
||||
```yml
|
||||
dependencies:
|
||||
appwrite: ^0.2.3
|
||||
appwrite_dev: ^0.3.2
|
||||
```
|
||||
|
||||
You can install packages from the command line:
|
||||
|
||||
```bash
|
||||
pub get appwrite
|
||||
pub get appwrite_dev
|
||||
```
|
||||
|
||||
## Contribution
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'dart:io';
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:appwrite_dev/appwrite_dev.dart';
|
||||
|
||||
void main() { // Init SDK
|
||||
Client client = Client();
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
export 'package:dio/dio.dart' show Response;
|
||||
|
||||
export 'client.dart';
|
||||
export 'enums.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';
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:dio/adapter.dart';
|
||||
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
|
||||
import 'package:cookie_jar/cookie_jar.dart';
|
||||
@@ -20,17 +21,21 @@ class Client {
|
||||
PersistCookieJar cookieJar;
|
||||
|
||||
Client({this.endPoint = 'https://appwrite.io/v1', this.selfSigned = false, Dio http}) : this.http = http ?? Dio() {
|
||||
|
||||
type = (Platform.isIOS) ? 'ios' : type;
|
||||
type = (Platform.isMacOS) ? 'macos' : type;
|
||||
type = (Platform.isAndroid) ? 'android' : type;
|
||||
type = (Platform.isLinux) ? 'linux' : type;
|
||||
type = (Platform.isWindows) ? 'windows' : type;
|
||||
type = (Platform.isFuchsia) ? 'fuchsia' : type;
|
||||
// Platform is not supported in web so if web, set type to web automatically and skip Platform check
|
||||
if(kIsWeb) {
|
||||
type = 'web';
|
||||
}else{
|
||||
type = (Platform.isIOS) ? 'ios' : type;
|
||||
type = (Platform.isMacOS) ? 'macos' : type;
|
||||
type = (Platform.isAndroid) ? 'android' : type;
|
||||
type = (Platform.isLinux) ? 'linux' : type;
|
||||
type = (Platform.isWindows) ? 'windows' : type;
|
||||
type = (Platform.isFuchsia) ? 'fuchsia' : type;
|
||||
}
|
||||
|
||||
this.headers = {
|
||||
'content-type': 'application/json',
|
||||
'x-sdk-version': 'appwrite:dart:0.2.3',
|
||||
'x-sdk-version': 'appwrite:flutter:0.3.2',
|
||||
};
|
||||
|
||||
this.config = {};
|
||||
@@ -78,17 +83,20 @@ class Client {
|
||||
|
||||
Future init() async {
|
||||
if(!initialized) {
|
||||
final Directory cookieDir = await _getCookiePath();
|
||||
|
||||
cookieJar = new PersistCookieJar(dir:cookieDir.path);
|
||||
// if web skip cookie implementation and origin header as those are automatically handled by browsers
|
||||
if(!kIsWeb) {
|
||||
final Directory cookieDir = await _getCookiePath();
|
||||
cookieJar = new PersistCookieJar(dir:cookieDir.path);
|
||||
this.http.interceptors.add(CookieManager(cookieJar));
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
addHeader('Origin', 'appwrite-' + type + '://' + packageInfo.packageName);
|
||||
}else{
|
||||
// if web set httpClientAdapter as BrowserHttpClientAdapter with withCredentials true to make cookies work
|
||||
this.http.options.extra['withCredentials'] = true;
|
||||
}
|
||||
|
||||
this.http.options.baseUrl = this.endPoint;
|
||||
this.http.options.validateStatus = (status) => status < 400;
|
||||
this.http.interceptors.add(CookieManager(cookieJar));
|
||||
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
|
||||
addHeader('Origin', 'appwrite-' + type + '://' + packageInfo.packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +122,10 @@ class Client {
|
||||
}
|
||||
|
||||
if (method == HttpMethod.get) {
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
return http.get(path, queryParameters: params, options: options);
|
||||
} else {
|
||||
return http.request(path, data: params, options: options);
|
||||
|
||||
@@ -27,6 +27,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -55,6 +59,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -79,6 +87,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -106,6 +118,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -134,6 +150,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -161,6 +181,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
|
||||
@@ -124,6 +124,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -154,6 +158,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -178,6 +186,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: appwrite
|
||||
version: 0.2.3
|
||||
name: appwrite_dev
|
||||
version: 0.3.2
|
||||
description: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API
|
||||
homepage: https://appwrite.io
|
||||
repository: https://github.com/appwrite/sdk-for-flutter-dev
|
||||
@@ -9,30 +9,15 @@ environment:
|
||||
sdk: '>=2.6.0 <3.0.0'
|
||||
dependencies:
|
||||
meta: ^1.1.8
|
||||
path_provider: ^1.6.5
|
||||
package_info: ^0.4.0+16
|
||||
dio: ^3.0.0
|
||||
cookie_jar: ^1.0.0
|
||||
path_provider: ^1.6.14
|
||||
package_info: ^0.4.3
|
||||
dio: ^3.0.10
|
||||
cookie_jar: ^1.0.1
|
||||
dio_cookie_manager: ^1.0.0
|
||||
flutter_web_auth: ^0.2.4
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
# The following adds the Cupertino Icons font to your application.
|
||||
# Use with the CupertinoIcons class for iOS style icons.
|
||||
cupertino_icons: ^0.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
|
||||
# The following section is specific to Flutter.
|
||||
flutter:
|
||||
|
||||
# The following line ensures that the Material Icons font is
|
||||
# included with your application, so that you can use the icons in
|
||||
# the material Icons class.
|
||||
uses-material-design: true
|
||||
sdk: flutter
|
||||
@@ -1,3 +1,8 @@
|
||||
## 0.3.0-dev.1
|
||||
|
||||
- Updated package dependencies (@lohanidamodar)
|
||||
- Added Flutter for Web compatibility (@lohanidamodar)
|
||||
|
||||
## 0.2.3
|
||||
|
||||
- Fixed OAuth2 cookie bug, where a new session cookie couldn't overwrite an old cookie
|
||||
|
||||
@@ -20,7 +20,7 @@ Add this to your package's `pubspec.yaml` file:
|
||||
|
||||
```yml
|
||||
dependencies:
|
||||
appwrite: ^0.2.3
|
||||
appwrite: ^0.3.0-dev.1
|
||||
```
|
||||
|
||||
You can install packages from the command line:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:dio/adapter.dart';
|
||||
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
|
||||
import 'package:cookie_jar/cookie_jar.dart';
|
||||
@@ -20,17 +21,21 @@ class Client {
|
||||
PersistCookieJar cookieJar;
|
||||
|
||||
Client({this.endPoint = 'https://appwrite.io/v1', this.selfSigned = false, Dio http}) : this.http = http ?? Dio() {
|
||||
|
||||
type = (Platform.isIOS) ? 'ios' : type;
|
||||
type = (Platform.isMacOS) ? 'macos' : type;
|
||||
type = (Platform.isAndroid) ? 'android' : type;
|
||||
type = (Platform.isLinux) ? 'linux' : type;
|
||||
type = (Platform.isWindows) ? 'windows' : type;
|
||||
type = (Platform.isFuchsia) ? 'fuchsia' : type;
|
||||
// Platform is not supported in web so if web, set type to web automatically and skip Platform check
|
||||
if(kIsWeb) {
|
||||
type = 'web';
|
||||
}else{
|
||||
type = (Platform.isIOS) ? 'ios' : type;
|
||||
type = (Platform.isMacOS) ? 'macos' : type;
|
||||
type = (Platform.isAndroid) ? 'android' : type;
|
||||
type = (Platform.isLinux) ? 'linux' : type;
|
||||
type = (Platform.isWindows) ? 'windows' : type;
|
||||
type = (Platform.isFuchsia) ? 'fuchsia' : type;
|
||||
}
|
||||
|
||||
this.headers = {
|
||||
'content-type': 'application/json',
|
||||
'x-sdk-version': 'appwrite:dart:0.2.3',
|
||||
'x-sdk-version': 'appwrite:flutter:0.3.0-dev.1',
|
||||
};
|
||||
|
||||
this.config = {};
|
||||
@@ -78,17 +83,20 @@ class Client {
|
||||
|
||||
Future init() async {
|
||||
if(!initialized) {
|
||||
final Directory cookieDir = await _getCookiePath();
|
||||
|
||||
cookieJar = new PersistCookieJar(dir:cookieDir.path);
|
||||
// if web skip cookie implementation and origin header as those are automatically handled by browsers
|
||||
if(!kIsWeb) {
|
||||
final Directory cookieDir = await _getCookiePath();
|
||||
cookieJar = new PersistCookieJar(dir:cookieDir.path);
|
||||
this.http.interceptors.add(CookieManager(cookieJar));
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
addHeader('Origin', 'appwrite-' + type + '://' + packageInfo.packageName);
|
||||
}else{
|
||||
// if web set httpClientAdapter as BrowserHttpClientAdapter with withCredentials true to make cookies work
|
||||
this.http.options.extra['withCredentials'] = true;
|
||||
}
|
||||
|
||||
this.http.options.baseUrl = this.endPoint;
|
||||
this.http.options.validateStatus = (status) => status < 400;
|
||||
this.http.interceptors.add(CookieManager(cookieJar));
|
||||
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
|
||||
addHeader('Origin', 'appwrite-' + type + '://' + packageInfo.packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +122,10 @@ class Client {
|
||||
}
|
||||
|
||||
if (method == HttpMethod.get) {
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
return http.get(path, queryParameters: params, options: options);
|
||||
} else {
|
||||
return http.request(path, data: params, options: options);
|
||||
|
||||
@@ -27,6 +27,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -55,6 +59,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -79,6 +87,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -106,6 +118,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -134,6 +150,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -197,6 +217,10 @@ class Avatars extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
|
||||
@@ -124,6 +124,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -154,6 +158,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
@@ -178,6 +186,10 @@ class Storage extends Service {
|
||||
'project': client.config['project'],
|
||||
};
|
||||
|
||||
params.keys.forEach((key) {if (params[key] is int || params[key] is double) {
|
||||
params[key] = params[key].toString();
|
||||
}});
|
||||
|
||||
Uri endpoint = Uri.parse(client.endPoint);
|
||||
Uri location = new Uri(scheme: endpoint.scheme,
|
||||
host: endpoint.host,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: appwrite
|
||||
version: 0.2.3
|
||||
version: 0.3.0-dev.1
|
||||
description: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API
|
||||
homepage: https://appwrite.io
|
||||
repository: https://github.com/appwrite/sdk-for-flutter
|
||||
@@ -9,30 +9,15 @@ environment:
|
||||
sdk: '>=2.6.0 <3.0.0'
|
||||
dependencies:
|
||||
meta: ^1.1.8
|
||||
path_provider: ^1.6.5
|
||||
package_info: ^0.4.0+16
|
||||
dio: ^3.0.0
|
||||
cookie_jar: ^1.0.0
|
||||
path_provider: ^1.6.14
|
||||
package_info: ^0.4.3
|
||||
dio: ^3.0.10
|
||||
cookie_jar: ^1.0.1
|
||||
dio_cookie_manager: ^1.0.0
|
||||
flutter_web_auth: ^0.2.4
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
# The following adds the Cupertino Icons font to your application.
|
||||
# Use with the CupertinoIcons class for iOS style icons.
|
||||
cupertino_icons: ^0.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
|
||||
# The following section is specific to Flutter.
|
||||
flutter:
|
||||
|
||||
# The following line ensures that the Material Icons font is
|
||||
# included with your application, so that you can use the icons in
|
||||
# the material Icons class.
|
||||
uses-material-design: true
|
||||
sdk: flutter
|
||||
+1
-1
@@ -121,7 +121,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
break;
|
||||
case 'flutter-dev':
|
||||
$config = new Flutter();
|
||||
$config->setPackageName('appwrite-dev');
|
||||
$config->setPackageName('appwrite_dev');
|
||||
break;
|
||||
case 'dart':
|
||||
$config = new Dart();
|
||||
|
||||
@@ -236,16 +236,16 @@
|
||||
</form>
|
||||
</span>
|
||||
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.client.short_name|lowercase}}?width=120&height=120&project={{env.PROJECT}},title={{session.client.name}},alt={{session.client.name}}" class="avatar trans pull-start margin-end" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.client.short_name|lowercase}}?width=120&height=120&project={{env.PROJECT}},title={{session.client.name}},alt={{session.client.name}}" class="avatar trans pull-start margin-end" />
|
||||
|
||||
<span data-ls-bind="{{session.client.name}}"></span> <span data-ls-bind="{{session.client.version}}"></span> on <span data-ls-bind="{{session.model}}"></span> <span data-ls-bind="{{session.OS.name}}"></span> <span data-ls-bind="{{session.OS.version}}"></span>
|
||||
<span data-ls-if="({{session.client.name}})" data-ls-bind="{{session.client.name}}"></span> <span data-ls-if="(!{{session.client.name}})">Unknown</span> <span data-ls-bind="{{session.client.version}}"></span> on <span data-ls-bind="{{session.model}}"></span> <span data-ls-if="(!{{session.OS.name}})">Unknown</span> <span data-ls-if="({{session.OS.name}})" data-ls-bind="{{session.OS.name}}"></span> <span data-ls-bind="{{session.OS.version}}"></span>
|
||||
|
||||
<span data-ls-if="true == {{session.current}}">
|
||||
<span class="tag green">Current Session</span>
|
||||
</span>
|
||||
|
||||
<div class="margin-top-small">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/flags/{{session.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs margin-end-small inline" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/flags/{{session.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs margin-end-small inline" />
|
||||
<small data-ls-bind="{{session.ip}}"></small> / <small data-ls-bind="{{session.geo.country}}"></small>
|
||||
</div>
|
||||
</li>
|
||||
@@ -294,11 +294,11 @@
|
||||
<td data-title="Date: "><span data-ls-bind="{{log.time|date-time}}"></span></td>
|
||||
<td data-title="Event: "><span data-ls-bind="{{log.event}}"></span></td>
|
||||
<td data-title="Client: ">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.client.short_name|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.client.name}},alt={{log.client.name}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.client.short_name|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.client.name}},alt={{log.client.name}}" class="avatar xxs inline margin-end-small" />
|
||||
<span data-ls-bind="{{log.client.name}} {{log.client.version}} on {{log.model}} {{log.OS.name}} {{log.OS.version}}"></span>
|
||||
</td>
|
||||
<td data-title="Location: ">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/flags/{{log.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/flags/{{log.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs inline margin-end-small" />
|
||||
<span data-ls-bind="{{log.geo.country}}"></span>
|
||||
</td>
|
||||
<td data-title="IP: "><span data-ls-bind="{{log.ip}}"></span></td>
|
||||
|
||||
@@ -179,12 +179,12 @@
|
||||
<button class="danger">Logout</button>
|
||||
</form>
|
||||
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.client.short_name|lowercase}}?width=120&height=120&project={{env.PROJECT}},title={{session.client.name}},alt={{session.client.name}}" class="avatar trans pull-start margin-end" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.client.short_name|lowercase}}?width=120&height=120&project={{env.PROJECT}},title={{session.client.name}},alt={{session.client.name}}" class="avatar trans pull-start margin-end" />
|
||||
|
||||
<span data-ls-bind="{{session.client.name}}"></span> <span data-ls-bind="{{session.client.version}}"></span> on <span data-ls-bind="{{session.model}}"></span> <span data-ls-bind="{{session.OS.name}}"></span> <span data-ls-bind="{{session.OS.version}}"></span>
|
||||
<span data-ls-if="({{session.client.name}})" data-ls-bind="{{session.client.name}}"></span> <span data-ls-if="(!{{session.client.name}})">Unknown</span> <span data-ls-bind="{{session.client.version}}"></span> on <span data-ls-bind="{{session.model}}"></span> <span data-ls-if="(!{{session.OS.name}})">Unknown</span> <span data-ls-if="({{session.OS.name}})" data-ls-bind="{{session.OS.name}}"></span> <span data-ls-bind="{{session.OS.version}}"></span>
|
||||
|
||||
<div class="margin-top-small">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/flags/{{session.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs margin-end-small inline" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/flags/{{session.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs margin-end-small inline" />
|
||||
<small data-ls-bind="{{session.ip}}"></small> / <small data-ls-bind="{{session.geo.country}}"></small>
|
||||
</div>
|
||||
</li>
|
||||
@@ -239,11 +239,11 @@
|
||||
<td data-title="Date: "><span data-ls-bind="{{log.time|date-time}}"></span></td>
|
||||
<td data-title="Event: "><span data-ls-bind="{{log.event}}"></span></td>
|
||||
<td data-title="Client: ">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.client.short_name|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.client.name}},alt={{log.client.name}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.client.short_name|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.client.name}},alt={{log.client.name}}" class="avatar xxs inline margin-end-small" />
|
||||
<span data-ls-bind="{{log.client.name}} {{log.client.version}} on {{log.model}} {{log.OS.name}} {{log.OS.version}}"></span>
|
||||
</td>
|
||||
<td data-title="Location: ">
|
||||
<img data-ls-attrs="src={{env.API}}/avatars/flags/{{log.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.src='/images/unknown.svg'" data-ls-attrs="src={{env.API}}/avatars/flags/{{log.geo.isoCode}}?width=80&height=80&project={{env.PROJECT}}" class="avatar xxs inline margin-end-small" />
|
||||
<span data-ls-bind="{{log.geo.country}}"></span>
|
||||
</td>
|
||||
<td data-title="IP: "><span data-ls-bind="{{log.ip}}"></span></td>
|
||||
|
||||
Generated
+87
-46
@@ -146,12 +146,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/ca-bundle.git",
|
||||
"reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd"
|
||||
"reference": "8a7ecad675253e4654ea05505233285377405215"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd",
|
||||
"reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd",
|
||||
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215",
|
||||
"reference": "8a7ecad675253e4654ea05505233285377405215",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -194,25 +194,39 @@
|
||||
"ssl",
|
||||
"tls"
|
||||
],
|
||||
"time": "2020-04-08T08:27:21+00:00"
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://packagist.com",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-08-23T12:54:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dasprid/enum",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/DASPRiD/Enum.git",
|
||||
"reference": "631ef6e638e9494b0310837fa531bedd908fc22b"
|
||||
"reference": "6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/DASPRiD/Enum/zipball/631ef6e638e9494b0310837fa531bedd908fc22b",
|
||||
"reference": "631ef6e638e9494b0310837fa531bedd908fc22b",
|
||||
"url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07",
|
||||
"reference": "6ccc0d7141a7f149e3c56cb0ce5f05d9152cfd07",
|
||||
"shasum": ""
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.4",
|
||||
"squizlabs/php_codesniffer": "^3.1"
|
||||
"phpunit/phpunit": "^7 | ^8 | ^9",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -228,7 +242,8 @@
|
||||
{
|
||||
"name": "Ben Scholzen 'DASPRiD'",
|
||||
"email": "mail@dasprids.de",
|
||||
"homepage": "https://dasprids.de/"
|
||||
"homepage": "https://dasprids.de/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP 7.1 enum implementation",
|
||||
@@ -236,7 +251,7 @@
|
||||
"enum",
|
||||
"map"
|
||||
],
|
||||
"time": "2017-10-25T22:45:27+00:00"
|
||||
"time": "2020-07-30T16:37:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "domnikl/statsd",
|
||||
@@ -638,29 +653,29 @@
|
||||
},
|
||||
{
|
||||
"name": "maxmind-db/reader",
|
||||
"version": "v1.6.0",
|
||||
"version": "v1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
|
||||
"reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4"
|
||||
"reference": "942553da239f12051275f9c666538b5dd09e2908"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4",
|
||||
"reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4",
|
||||
"url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/942553da239f12051275f9c666538b5dd09e2908",
|
||||
"reference": "942553da239f12051275f9c666538b5dd09e2908",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"conflict": {
|
||||
"ext-maxminddb": "<1.6.0,>=2.0.0"
|
||||
"ext-maxminddb": "<1.7.0,>=2.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "2.*",
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"phpunit/phpcov": "^3.0",
|
||||
"phpunit/phpunit": "5.*",
|
||||
"phpunit/phpcov": ">=6.0.0",
|
||||
"phpunit/phpunit": ">=8.0.0,<10.0.0",
|
||||
"squizlabs/php_codesniffer": "3.*"
|
||||
},
|
||||
"suggest": {
|
||||
@@ -694,7 +709,7 @@
|
||||
"geolocation",
|
||||
"maxmind"
|
||||
],
|
||||
"time": "2019-12-19T22:59:03+00:00"
|
||||
"time": "2020-08-07T22:10:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maxmind/web-service-common",
|
||||
@@ -894,6 +909,12 @@
|
||||
}
|
||||
],
|
||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/synchro",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-27T12:24:03+00:00"
|
||||
},
|
||||
{
|
||||
@@ -1169,12 +1190,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
||||
"reference": "bc6549d068d0160e0f10f7a5a23c7d1406b95ebe"
|
||||
"reference": "045643b91eaa34c4c37150ac477765c13552af33"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/bc6549d068d0160e0f10f7a5a23c7d1406b95ebe",
|
||||
"reference": "bc6549d068d0160e0f10f7a5a23c7d1406b95ebe",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/045643b91eaa34c4c37150ac477765c13552af33",
|
||||
"reference": "045643b91eaa34c4c37150ac477765c13552af33",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1246,7 +1267,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-07-14T12:35:20+00:00"
|
||||
"time": "2020-08-04T21:02:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
@@ -1909,7 +1930,7 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appwrite/sdk-generator",
|
||||
"reference": "404cf6bb4c75f8ae3b2419e04f6afd215ed706a5"
|
||||
"reference": "dddbc208ff429298f5c1b2b95fc507aa639c8def"
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
@@ -1939,7 +1960,7 @@
|
||||
}
|
||||
],
|
||||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||
"time": "2020-07-26T07:11:06+00:00"
|
||||
"time": "2020-09-03T13:22:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/instantiator",
|
||||
@@ -1995,6 +2016,20 @@
|
||||
"constructor",
|
||||
"instantiate"
|
||||
],
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://www.doctrine-project.org/sponsorship.html",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/phpdoctrine",
|
||||
"type": "patreon"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-06-15T18:51:04+00:00"
|
||||
},
|
||||
{
|
||||
@@ -2112,12 +2147,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||
"reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
|
||||
"reference": "a3409d10079990eeb489c3fead0ac070b5b38895"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
|
||||
"reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a3409d10079990eeb489c3fead0ac070b5b38895",
|
||||
"reference": "a3409d10079990eeb489c3fead0ac070b5b38895",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2152,7 +2187,13 @@
|
||||
"object",
|
||||
"object graph"
|
||||
],
|
||||
"time": "2020-06-29T13:22:24+00:00"
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-08-28T16:31:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phar-io/manifest",
|
||||
@@ -2311,12 +2352,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||
"reference": "1ac416df3f66c542f2d3688925105b539f064b64"
|
||||
"reference": "f6075926e937828b180e02964e2d2062af8a9537"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/1ac416df3f66c542f2d3688925105b539f064b64",
|
||||
"reference": "1ac416df3f66c542f2d3688925105b539f064b64",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f6075926e937828b180e02964e2d2062af8a9537",
|
||||
"reference": "f6075926e937828b180e02964e2d2062af8a9537",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2355,34 +2396,33 @@
|
||||
}
|
||||
],
|
||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||
"time": "2020-07-21T08:16:41+00:00"
|
||||
"time": "2020-09-02T21:38:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "dev-master",
|
||||
"version": "1.x-dev",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "94f3ddc5d77e49daadadd33b798b933e52dde82c"
|
||||
"reference": "e21c0bd532911ec05ebc258e4086ea61c86e0750"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/94f3ddc5d77e49daadadd33b798b933e52dde82c",
|
||||
"reference": "94f3ddc5d77e49daadadd33b798b933e52dde82c",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e21c0bd532911ec05ebc258e4086ea61c86e0750",
|
||||
"reference": "e21c0bd532911ec05ebc258e4086ea61c86e0750",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpdocumentor/reflection-common": "^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-tokenizer": "^7.2",
|
||||
"mockery/mockery": "~1"
|
||||
"ext-tokenizer": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
"dev-1.x": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -2401,7 +2441,7 @@
|
||||
}
|
||||
],
|
||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"time": "2020-06-19T19:40:27+00:00"
|
||||
"time": "2020-09-02T21:29:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
@@ -2671,7 +2711,7 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-token-stream",
|
||||
"version": "3.1.1",
|
||||
"version": "3.1.x-dev",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
||||
@@ -2716,6 +2756,7 @@
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"abandoned": true,
|
||||
"time": "2019-09-17T06:23:10+00:00"
|
||||
},
|
||||
{
|
||||
@@ -3593,7 +3634,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.13-dev"
|
||||
"dev-master": "2.14-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
## 0.3.2
|
||||
|
||||
- Fixed package namespaces
|
||||
|
||||
## 0.3.1
|
||||
|
||||
- Downgraded meta package version to 1.1.8
|
||||
|
||||
## 0.3.0
|
||||
|
||||
- Updated package dependencies (@lohanidamodar)
|
||||
- Added Flutter for Web compatibility (@lohanidamodar)
|
||||
|
||||
## 0.2.3
|
||||
|
||||
- Fixed OAuth2 cookie bug, where a new session cookie couldn't overwrite an old cookie
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
## 0.3.0-dev.1
|
||||
|
||||
- Updated package dependencies (@lohanidamodar)
|
||||
- Added Flutter for Web compatibility (@lohanidamodar)
|
||||
|
||||
## 0.2.3
|
||||
|
||||
- Fixed OAuth2 cookie bug, where a new session cookie couldn't overwrite an old cookie
|
||||
|
||||
@@ -96,11 +96,11 @@ InfluxDB server TCP port. Default value is: '8086'
|
||||
|
||||
Appwrite uses a StatsD server for aggregating and sending stats data over a fast UDP connection. The StatsD env vars are used to allow Appwrite server to connect to the StatsD container.
|
||||
|
||||
### _APP_INFLUXDB_HOST
|
||||
### _APP_STATSD_HOST
|
||||
|
||||
StatsD server host name address. Default value is: 'telegraf'
|
||||
|
||||
### _APP_INFLUXDB_PORT
|
||||
### _APP_STATSD_PORT
|
||||
|
||||
StatsD server TCP port. Default value is: '8125'
|
||||
|
||||
|
||||
Generated
+1283
-1032
File diff suppressed because it is too large
Load Diff
+3
-2
@@ -4,12 +4,13 @@
|
||||
"license": "BSD-3-Clause",
|
||||
"repository": "public",
|
||||
"devDependencies": {
|
||||
"gulp": "^4.0.0",
|
||||
"yargs-parser": ">=13.1.2",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-clean-css": "^4.3.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-jsmin": "^0.1.5",
|
||||
"gulp-less": "^4.0.1",
|
||||
"jest": "^25.1.0",
|
||||
"jest": "^26.4.2",
|
||||
"ls-service-form2json": "^1.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
|
||||
fill="#96b7eb" stroke="none">
|
||||
<path d="M5000 10143 c-904 -20 -1805 -293 -2565 -776 -1163 -740 -1970 -1911
|
||||
-2240 -3252 -68 -337 -96 -634 -96 -1000 0 -483 55 -896 180 -1350 268 -971
|
||||
836 -1854 1609 -2501 868 -726 1911 -1129 3032 -1173 700 -27 1388 85 2020
|
||||
331 1324 514 2364 1554 2878 2878 197 508 309 1052 331 1610 42 1074 -243
|
||||
2099 -830 2983 -742 1118 -1887 1889 -3194 2152 -354 71 -756 106 -1125 98z
|
||||
m375 -673 c778 -48 1359 -279 1826 -728 377 -361 594 -768 676 -1267 25 -156
|
||||
25 -525 -1 -680 -36 -221 -88 -386 -182 -583 -175 -368 -480 -723 -1099 -1281
|
||||
-310 -279 -556 -524 -649 -647 -84 -111 -194 -331 -235 -474 -51 -175 -81
|
||||
-419 -97 -803 l-7 -157 -506 2 -506 3 1 300 c1 508 55 822 199 1160 175 408
|
||||
417 696 1105 1316 645 582 814 806 890 1181 39 188 26 461 -31 653 -122 415
|
||||
-477 811 -894 997 -252 113 -552 162 -849 138 -373 -29 -659 -142 -929 -368
|
||||
-301 -253 -521 -690 -621 -1237 -19 -103 -25 -120 -42 -122 -10 -2 -253 26
|
||||
-539 60 l-520 62 3 60 c3 73 43 289 83 447 98 390 273 757 497 1043 84 107
|
||||
305 322 417 405 120 90 277 185 402 245 446 213 1020 311 1608 275z m355
|
||||
-8130 l0 -600 -600 0 -600 0 0 600 0 600 600 0 600 0 0 -600z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
Reference in New Issue
Block a user