appwrite 1.0.11 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +16 -0
- data/Gemfile +1 -0
- data/LICENSE +1 -1
- data/README.md +72 -5
- data/appwrite.gemspec +3 -5
- data/docs/examples/account/create-recovery.md +15 -0
- data/docs/examples/account/create-verification.md +15 -0
- data/docs/examples/account/delete-session.md +15 -0
- data/docs/examples/account/delete-sessions.md +15 -0
- data/docs/examples/account/delete.md +15 -0
- data/docs/examples/account/get-logs.md +15 -0
- data/docs/examples/account/get-prefs.md +15 -0
- data/docs/examples/account/get-sessions.md +15 -0
- data/docs/examples/account/get.md +15 -0
- data/docs/examples/account/update-email.md +15 -0
- data/docs/examples/account/update-name.md +15 -0
- data/docs/examples/account/update-password.md +15 -0
- data/docs/examples/account/update-prefs.md +15 -0
- data/docs/examples/account/update-recovery.md +15 -0
- data/docs/examples/account/update-verification.md +15 -0
- data/docs/examples/{database/get-collection-logs.md → avatars/get-initials.md} +2 -2
- data/docs/examples/database/create-document.md +1 -1
- data/docs/examples/database/update-collection.md +1 -1
- data/docs/examples/database/update-document.md +1 -1
- data/docs/examples/functions/create-execution.md +15 -0
- data/docs/examples/functions/create-tag.md +15 -0
- data/docs/examples/functions/create.md +15 -0
- data/docs/examples/functions/delete-tag.md +15 -0
- data/docs/examples/functions/delete.md +15 -0
- data/docs/examples/functions/get-execution.md +15 -0
- data/docs/examples/functions/get-tag.md +15 -0
- data/docs/examples/functions/get.md +15 -0
- data/docs/examples/functions/list-executions.md +15 -0
- data/docs/examples/functions/list-tags.md +15 -0
- data/docs/examples/functions/list.md +15 -0
- data/docs/examples/functions/update-tag.md +15 -0
- data/docs/examples/functions/update.md +15 -0
- data/docs/examples/locale/get-languages.md +15 -0
- data/docs/examples/storage/create-file.md +1 -1
- data/docs/examples/teams/delete-membership.md +1 -1
- data/docs/examples/teams/update-membership-roles.md +15 -0
- data/docs/examples/teams/update-membership-status.md +15 -0
- data/docs/examples/users/delete.md +15 -0
- data/docs/examples/users/update-status.md +1 -1
- data/lib/appwrite.rb +5 -0
- data/lib/appwrite/client.rb +46 -5
- data/lib/appwrite/exception.rb +14 -0
- data/lib/appwrite/file.rb +23 -0
- data/lib/appwrite/services/account.rb +280 -0
- data/lib/appwrite/services/avatars.rb +133 -34
- data/lib/appwrite/services/database.rb +199 -67
- data/lib/appwrite/services/functions.rb +357 -0
- data/lib/appwrite/services/health.rb +12 -24
- data/lib/appwrite/services/locale.rb +16 -12
- data/lib/appwrite/services/storage.rb +124 -35
- data/lib/appwrite/services/teams.rb +187 -34
- data/lib/appwrite/services/users.rb +115 -31
- metadata +44 -11
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.create_execution(function_id: '[FUNCTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.create_tag(function_id: '[FUNCTION_ID]', command: '[COMMAND]', code: Appwrite::File.new());
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.create(name: '[NAME]', execute: [], env: 'dotnet-3.1');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.delete_tag(function_id: '[FUNCTION_ID]', tag_id: '[TAG_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.delete(function_id: '[FUNCTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.get_execution(function_id: '[FUNCTION_ID]', execution_id: '[EXECUTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.get_tag(function_id: '[FUNCTION_ID]', tag_id: '[TAG_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.get(function_id: '[FUNCTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.list_executions(function_id: '[FUNCTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.list_tags(function_id: '[FUNCTION_ID]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.list();
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.update_tag(function_id: '[FUNCTION_ID]', tag: '[TAG]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
functions = Appwrite::Functions.new(client);
|
12
|
+
|
13
|
+
response = functions.update(function_id: '[FUNCTION_ID]', name: '[NAME]', execute: []);
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
locale = Appwrite::Locale.new(client);
|
12
|
+
|
13
|
+
response = locale.get_languages();
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
teams = Appwrite::Teams.new(client);
|
12
|
+
|
13
|
+
response = teams.update_membership_roles(team_id: '[TEAM_ID]', membership_id: '[MEMBERSHIP_ID]', roles: []);
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_j_w_t('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ...') # Your secret JSON Web Token
|
9
|
+
;
|
10
|
+
|
11
|
+
teams = Appwrite::Teams.new(client);
|
12
|
+
|
13
|
+
response = teams.update_membership_status(team_id: '[TEAM_ID]', membership_id: '[MEMBERSHIP_ID]', user_id: '[USER_ID]', secret: '[SECRET]');
|
14
|
+
|
15
|
+
puts response
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'appwrite'
|
2
|
+
|
3
|
+
client = Appwrite::Client.new()
|
4
|
+
|
5
|
+
client
|
6
|
+
.set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint
|
7
|
+
.set_project('5df5acd0d48c2') # Your project ID
|
8
|
+
.set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key
|
9
|
+
;
|
10
|
+
|
11
|
+
users = Appwrite::Users.new(client);
|
12
|
+
|
13
|
+
response = users.delete(user_id: '[USER_ID]');
|
14
|
+
|
15
|
+
puts response
|
data/lib/appwrite.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'uri'
|
3
3
|
require 'json'
|
4
|
+
require 'mime/types'
|
4
5
|
require_relative 'appwrite/client'
|
5
6
|
require_relative 'appwrite/service'
|
7
|
+
require_relative 'appwrite/exception'
|
8
|
+
require_relative 'appwrite/file'
|
9
|
+
require_relative 'appwrite/services/account'
|
6
10
|
require_relative 'appwrite/services/avatars'
|
7
11
|
require_relative 'appwrite/services/database'
|
12
|
+
require_relative 'appwrite/services/functions'
|
8
13
|
require_relative 'appwrite/services/health'
|
9
14
|
require_relative 'appwrite/services/locale'
|
10
15
|
require_relative 'appwrite/services/storage'
|
data/lib/appwrite/client.rb
CHANGED
@@ -20,7 +20,8 @@ module Appwrite
|
|
20
20
|
@headers = {
|
21
21
|
'content-type' => '',
|
22
22
|
'user-agent' => RUBY_PLATFORM + ':ruby-' + RUBY_VERSION,
|
23
|
-
'x-sdk-version' => 'appwrite:ruby:1.
|
23
|
+
'x-sdk-version' => 'appwrite:ruby:2.1.2',
|
24
|
+
'X-Appwrite-Response-Format' => '0.8.0'
|
24
25
|
}
|
25
26
|
@endpoint = 'https://appwrite.io/v1';
|
26
27
|
end
|
@@ -37,6 +38,12 @@ module Appwrite
|
|
37
38
|
return self
|
38
39
|
end
|
39
40
|
|
41
|
+
def set_j_w_t(value)
|
42
|
+
add_header('x-appwrite-jwt', value)
|
43
|
+
|
44
|
+
return self
|
45
|
+
end
|
46
|
+
|
40
47
|
def set_locale(value)
|
41
48
|
add_header('x-appwrite-locale', value)
|
42
49
|
|
@@ -50,7 +57,7 @@ module Appwrite
|
|
50
57
|
end
|
51
58
|
|
52
59
|
def add_header(key, value)
|
53
|
-
@headers[key.downcase] = value
|
60
|
+
@headers[key.downcase] = value
|
54
61
|
|
55
62
|
return self
|
56
63
|
end
|
@@ -72,11 +79,14 @@ module Appwrite
|
|
72
79
|
payload = ''
|
73
80
|
|
74
81
|
headers = @headers.merge(headers)
|
75
|
-
|
82
|
+
@BOUNDARY = "----A30#3ad1"
|
76
83
|
if (method != METHOD_GET)
|
77
84
|
case headers['content-type'][0, headers['content-type'].index(';') || headers['content-type'].length]
|
78
85
|
when 'application/json'
|
79
86
|
payload = params.to_json
|
87
|
+
when 'multipart/form-data'
|
88
|
+
payload = "--#{@BOUNDARY}\r\n" + encodeFormData(params)
|
89
|
+
headers['content-type'] = "multipart/form-data; boundary=#{@BOUNDARY}"
|
80
90
|
else
|
81
91
|
payload = encode(params)
|
82
92
|
end
|
@@ -85,7 +95,7 @@ module Appwrite
|
|
85
95
|
begin
|
86
96
|
response = http.send_request(method.upcase, uri.request_uri, payload, headers)
|
87
97
|
rescue => error
|
88
|
-
raise
|
98
|
+
raise Appwrite::Exception.new(error.message)
|
89
99
|
end
|
90
100
|
|
91
101
|
# Handle Redirects
|
@@ -95,8 +105,39 @@ module Appwrite
|
|
95
105
|
|
96
106
|
return fetch(method, uri, headers, {}, limit - 1)
|
97
107
|
end
|
108
|
+
|
109
|
+
begin
|
110
|
+
res = JSON.parse(response.body);
|
111
|
+
rescue JSON::ParserError => e
|
112
|
+
raise Appwrite::Exception.new(response.body, response.code, nil)
|
113
|
+
end
|
98
114
|
|
99
|
-
|
115
|
+
if(response.code.to_i >= 400)
|
116
|
+
raise Appwrite::Exception.new(res['message'], res['status'], res)
|
117
|
+
end
|
118
|
+
|
119
|
+
return res;
|
120
|
+
end
|
121
|
+
|
122
|
+
def encodeFormData(value, key=nil)
|
123
|
+
case value
|
124
|
+
when Hash then value.map { |k,v| encodeFormData(v,k) }.join
|
125
|
+
when Array then value.map { |v| encodeFormData(v, "#{key}[]") }.join
|
126
|
+
when nil then ''
|
127
|
+
else
|
128
|
+
post_body = []
|
129
|
+
if(value.instance_of? File)
|
130
|
+
post_body << "Content-Disposition: form-data; name=\"#{key}\"; filename=\"#{value.name}\"\r\n"
|
131
|
+
post_body << "Content-Type: #{value.mimeType}\r\n\r\n"
|
132
|
+
post_body << value.content
|
133
|
+
post_body << "\r\n--#{@BOUNDARY}--\r\n"
|
134
|
+
else
|
135
|
+
post_body << "Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n"
|
136
|
+
post_body << "#{value.to_s}"
|
137
|
+
post_body << "\r\n--#{@BOUNDARY}\r\n"
|
138
|
+
end
|
139
|
+
post_body.join
|
140
|
+
end
|
100
141
|
end
|
101
142
|
|
102
143
|
def encode(value, key = nil)
|